Slashdot Mirror


Reverse Engineering an MPEG Driver

An anonymous reader writes "Following on from the recent spate of reverse engineering articles, there is an interesting summary of the reverse engineering of a binary only Linux driver. The driver is for the integrated MPEG decoder on VIA's popular EPIA-M boards. At the moment VIA has not publicly released the source code for the MPEG chipset on these boards and will only make the code available under NDA saying that "Typically, only requests from companies developing product for sale will be approved." As a result this is holding back development of open source tools (e.g. xine, mplayer, vdr) that would be able to make use of the interesting hardware on these boards."

62 of 275 comments (clear)

  1. Is this reverse engineering? by bromoseltzer · · Score: 4, Interesting
    He took the binary code and inferred a C language program that would produce the same code. Very clever, but I thought reverse engineering worked on a functional level.

    IANAL, but I don't think the source code is legally safe if VIA wants to go after it.

    -mse

    --
    Fiat Lux.
    1. Re:Is this reverse engineering? by diamondc · · Score: 3, Informative

      This guy lives in Italy, safe from terrible US IP laws.

      --
      "I keep looking in the want-ads under 'revolutionary' but there don't seem to be any listings.. "
    2. Re:Is this reverse engineering? by dmayle · · Score: 4, Interesting

      Unfortunately, to be safe, you have to load the library in a debugger, and are only allowed to look at the data being sent to the chip, or returning from the chip. That would be reverse engineering the driver. However, unless there was a licensing agreement prohibiting it, dissasembling the driver to learn how it works is a legal way to learn how to use the chip, so long as your end goal is not writing a drop-in replacement for the library. Think of it like this: Reading from a book on programming is learning, and legal. Copying from a book on programming (whether word for word, or paraphrasing) in order to write your own book on programming is illegal.

    3. Re:Is this reverse engineering? by Anonvmous+Coward · · Score: 5, Funny

      "You honestly think that simply living in Italy is enough to protect him? Have we learned nothing from reading Slashdot?"

      I've learned that paranoia is an epidemic.

    4. Re:Is this reverse engineering? by yellowstone · · Score: 5, Informative
      He took the binary code and inferred a C language program that would produce the same code. Very clever, but I thought reverse engineering worked on a functional level.
      Well, this is definitely not a 'clean room' reverse engineering.

      To do a clean room implementation, you need to have two teams:

      1. The first team digs into the implementation, and produces a document specifying the interface.
      2. The second team uses the specification produced by the first team to create an implementation.
      This is a clean-room implementation when the only communication between the two teams is via the specification: A) No one who sees the original implementation works on the new implementation and B) No one who works on the new implementation looks at the original implementation
      --
      150 Opening BINARY mode data connection for slashdot.sig (129323052 bytes).
  2. Does it work yet? by FryGuy1013 · · Score: 4, Interesting

    To me, it just seemed like a general description of the RE process that people able to RE already know. EPIA M boxes are already good for small PVR boxes using mythtv when a Hauppauge PVR card is added (and a larger power supply). If the MPEG decoder can be used, I'm sure that even the lesser models of EPIA will be able to be used.

    --
    bananas like monkeys.
  3. What about DMCA? by U-Boot_96 · · Score: 2, Informative

    Should developers/users be afraid of the iron fist of moronic law in this case?
    Or is it perfectly legal and VIA can not do anything about it? They seem to have an interest in suppresing such efforts though, since they've stated they are interested in revealing the code only to entities that want to make a buck off of it.
    So, even if DMCA dosn't apply here, are there any chances they could be nasty about it? U-Boot

    1. Re:What about DMCA? by Wumpus · · Score: 4, Insightful

      I believe that distribution of this code would be illegal, since it is a derivative work based on VIA's library. I haven't seen VIA's license, by typically those licenses prohibit redistribution, reverse engineering, and disclosure of any trade secrets.

      The reverse engineering itself is probably still legal, arguably, if it is done to enable someone to write software that interoperates with the decoder. To be safe, I would assume that it's probably better to write such software for an operating system that VIA doesn't support - QNX, for example. (One could argue that the BSDs' ability to run Linux binaries voids the interoperability argument if one were to write a BSD driver, but what do I know?).

      You should also make sure that the person writing the final open source code hasn't seen VIA's decompiled source. Typically this is done by having one person or team reverse engineer the code, document the hardware, and toss the hardware documentation over the wall to the driver team.

    2. Re:What about DMCA? by ralphus · · Score: 2

      THere are exceptions made to reverse engineering. One of them is that it is specifically legal to reverse engineer for the purpose of interoperability. If this wasn't the case, MS would have already steamrolled Samba right out of existance.

      --
      Revolutions are never about freedom or justice. They're about who's going to be top dog. -- Kilgore Trout
  4. Free, but not Free by Dancin_Santa · · Score: 5, Insightful

    Driver code is the biggest liability that a device maker has. It earns no money, it costs quite a bit to make, and it must be written multiple times for multiple platforms and operating systems.

    Via's reluctance to free the driver software is pure evil. They sit like slavemasters on the code and hold it hostage as if it were a servant or slave.

    Even if the reverse engineering works out and the code runs equally well as the enslaved code, what will become of the original unfree code? Will that unfortunate code be relegated to living out the rest of its days in slavery? Sadly, I think the answer is affirmative.

    Who will fight for the rights of software? I only wish the FSF was more vocal about the Freedom of Software that they purportedly base their ideology upon.

    1. Re:Free, but not Free by rbullo · · Score: 3, Insightful
      Driver code is the biggest liability that a device maker has. It earns no money, it costs quite a bit to make, and it must be written multiple times for multiple platforms and operating systems.
      So release the hardware specs, and let the Open Source community write the drivers for them. This lets the manufacturer cut prices, and frees them to focus on other things.

      Am I right? Or would companies not go for this?
      --
      OH NOES!!! IT APPEARS YUO DO NOT HAVE ENOUGH MONEY TO PAY FOR DIS HERE PIZZA! WAHT EVER ARE YOU GOING TO DO!?!?
    2. Re:Free, but not Free by Svartalf · · Score: 5, Informative

      In actuality, they released everything BUT the driver info for the MPEG stuff. They handed the 2D and 3D over to the DRI and XFree86 people- Alan Cox was working on making the drivers all nice and clean up until recently.

      From what I got from my contacts at SiS and VIA when I was working on set-top box designs using their chipsets was that the stuff was being held to an NDA because of contractual reasons. My ignorant guess would be that there's something with regards to the MPEG patent licensing that prevents the details being released for piracy prevention reasons because the use of these accelerators would enable real-time/near real-time transcoding of DVDs, etc.

      This is not to say that I'm right, or if I am, that it's a good reason.

      --
      I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
    3. Re:Free, but not Free by BrynM · · Score: 2, Interesting
      Do you discipline slave code with a CAT5 bullwhip?

      But seriously, you bring up a good point. Companies that GPL or OSS their driver code are doing themselves a favor and saving a lot of the money that would be spent supporting the code later on. I hope that we'll see someone release hardware someday on an open spec with just an OSS reference driver so the community can build the driver from scratch on a new product. Initial sales might be a little flat, but that company could save lots of cash in the long run, have a long product life and actually have the OSS community like them. If I'm wrong and some company is already doing this, let me know. I'll make sure they get prime consideration when I need to buy whatever they make.

      --
      US Democracy:The best person for the job (among These pre-selected choices...)
    4. Re:Free, but not Free by afidel · · Score: 3, Insightful

      More likely is they bought the MPEG core from some other company and so they don't own it's design. I know this is not at all uncommon in the consumer electronics space, for instance companies often buy a MIPS core with various accelerator subcores.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    5. Re:Free, but not Free by captaineo · · Score: 4, Interesting

      Here are two legitimate reasons a hardware company might withhold driver code:

      1) They differentiate high-end and low-end versions of the same product in software only. I think Nvidia and some storage vendors do this - they sell the same card for $200 and $400, but the driver disables certain features on the $200 part. If they released the source someone could easily find a way to re-enable the "high-end" features on cheap hardware, thus erasing the product differentiation. (which would force the company to sell only the more expensive part, and everyone loses)

      2) Software-based copy prevention, a la DVD CSS, or software-based restrictions, like Macrovision. (I know at least one video card company won't release driver source because it would be obvious how to stop Macrovision from being enabled when a video player requires it)

      I'd say 2) is slightly less legitimate, but I have no problem with reason 1). I'd rather be able to buy cheap but limited hardware than not have the option at all.

    6. Re:Free, but not Free by dasmegabyte · · Score: 4, Insightful

      How are they doing themselves a favor?

      Most hardware companies use off the shelf parts. They aren't designing the technology so much as lciensing it and marketting it. The ONLY reason they are able to make money off of their products is that they have something that Generic Q. Solderinggun doesn't -- they have the ability to interface these hardware chips with a computer. And all of that magic happens in the driver.

      I've seen lies here that drivers don't make money, and this is simply ludicrous. Let's take a real world example: back in 1997, both Iomega and Miro (later Pinnacle) marketted an MJPEG video input box based off of a Zoran chip. Zoran made a very very nice chip capable of massive resolutions, dozens of colour modes and bus mastering and all kinds of kick ass stuff. However, Iomega skimped on their drivers. The result was a product that was totally unable to operate at spec, because the driver had a fundamental flaw that prevented it from capturing at 29.976. Savvy video users quickly learned to cap at 30.10, drop a frame, and save $100+ over the cost of the similar Miro card. However, no matter how much the Slashdot community would like to think otherwise, you can't make money selling to ONLY savvy users. Iomega promptly dropped support, even though late model drivers were FIXING the issues. Miro, on the other hand, made money off of their superior drivers for years to come. Those drivers made that money.

      If Miro opened the source of their drivers, GPL or otherwise, nothing would have stopped Iomega from getting them, modding them slightly to include their hardware, and releasing them back to the community. After all, they're not selling them. Good for everybody, right?

      No good for Miro, whose dilligence in driver manufacture has just cost them countless sales. Their hardware is now just the sale as the other guy's but sells for much more.

      Why the hell do you want hardware companies to lose money for your hobby? Are you so vain that you really think your 3% of the marketshare is worth that much to the VIAs of the world?

      --
      Hey freaks: now you're ju
    7. Re:Free, but not Free by benjamindees · · Score: 2, Interesting

      3) They plan to license their closed-source driver to OEM's that create standalone Linux products for niche markets, a la Broadcom and Linksys.

      I think this one fits this particular situation perfectly. If VIA can withold the one piece of the puzzle (hardware decoding) that opens the door to easy, cheap, upgradeable DVR boxes and license that piece to lots of different companies, VIA wins.

      --
      "I assumed blithely that there were no elves out there in the darkness"
    8. Re:Free, but not Free by ckaminski · · Score: 3, Interesting

      Remember a year or two ago when turbo-charging your Celerons was all the rage? Intel fixed this with an ondie switch that was lasered shut at the factory to stop this. Nothing, not one thing, is preventing a manufacturer from adding $0.10 to a part for a hard-wired switch that makes a $200 part into a $400 part. If it's in software, you're still taking the chance some enterprising developer is going to figure it all out, and ruin your party.

      Most people, especially saavy ones, are not loathe to trying out new drivers. MANY are very afraid of taking soldering irons to their $200 parts.

      -Chris

    9. Re:Free, but not Free by AJWM · · Score: 2

      pure and simple greed. It should just be out and out illegal

      Greed should be illegal? But you just said "If they can make a profit by selling the card for $200, they should sell it for $200". Surely making any profit at all is just being greedy, shouldn't they be forced to sell it at break-even pricing?

      Of course, that doesn't leave any money in the coffers to pay for the R & D for the next product, so that next product might take a lot longer to ever be produced. On the other hand, if they had some of the extra cash from selling $400 parts to people who are perfectly willing to pay that money for what they're getting, then they could afford to pay a few more engineers so that the next product is ready sooner.

      Come to think of it, aren't you being greedy by demanding a $400 product for only $200?

      --
      -- Alastair
    10. Re:Free, but not Free by ajs318 · · Score: 2

      Read it again. What I was saying was if, by modifying the software with a $200 card I can get the same functionality as a $400 one, then there should not be any law stopping me from doing so. That's a lot easier to administrate than actually making greed illegal. If the law feels the need to say anything about it at all, it should say that the company can't do anything about it if I try.

      As customers, we pay their wages. They must never be allowed to forget that.

      --
      Je fume. Tu fumes. Nous fûmes!
  5. Er... by slackingme · · Score: 5, Funny

    But does it ru--
    Nevermind, no points to spare :)

  6. CLE266.tgz mirror (original slashdotted) by ultrapenguin · · Score: 4, Informative

    I've setup a mirror for the source at http://43.244.87.231/cle266.tgz

    Be nice to it, and check the original site after slashdot effect goes away.

  7. Re:Software decoding works fine by MikeFM · · Score: 5, Informative

    My lil epia box does better than my parents faster Wintel box at playing dvd's and vob's. Sure a lot of that is because MPlayer and Linux are so much better but you're mistaken if you think the epia systems don't have the muscle for the job. If they could enable the hardware decoding it might even make the playback better. They also run much cooler, more energy effecient, and quieter.. something that IMO is a mark of quality.. not of being 'cheap'. Besides, price compare the CPU's.. you'll find they aren't that cheap. :)

    --
    At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
  8. irony by mo · · Score: 4, Insightful

    The silly thing with all of this is that the drivers and support for this card that result from the reverse engineering will ultimately result in more sales. It seems so counter-intuitive for VIA to resist this.

  9. Cool! by Anonymous Coward · · Score: 3, Funny

    Let's harass them for not releasing the code, reverse engineer it and post it everywhere, until they get mad and discontinue Linux driver development altogether! Then xine and mplayer will work GREAT!

    1. Re:Cool! by El · · Score: 5, Funny

      Better yet, lets reverse engineer the Windows drivers instead of the Linux drivers, so then they'll get mad and discontinue Windows driver development altogether! Yeah, right...

      --

      "Freedom means freedom for everybody" -- Dick Cheney

  10. why do it by hand? by MikeFM · · Score: 5, Insightful

    Why not use a program that automaticlly takes the binary and builds a C program from it? You still have to pick through the logic to give things helpful function/variable names and refactor but it'd save the step discribed here. In the past when I've reverse engineered binaries that is the type of tool I used. Any good reason for doing this by hand?

    This still begs the question.. why not just release the damn source? If we can reverse engineer the drivers what would keep the competition from doing so? Why harm your customers for a false sense of security?

    --
    At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    1. Re:why do it by hand? by zerocool^ · · Score: 2, Interesting

      i often wonder if companies that have cheif coders that are "sympathetic" to OSS users make their products easy to revers engineer.

      For example, if someone made a video driver, refused to release it open source because of contractual problems, but made it relatively easy to pick apart a bit at a time, it would give them plausable deniability, but still help out the OSS community.

      ~Will

      --
      sig?
    2. Re:why do it by hand? by MikeFM · · Score: 2, Interesting

      Still.. the whole point of not releasing the source is to not release the info about the device. They don't release that info because they (or someone they have licensed tech from is delusional enough to think that without the source code competitiors can't figure out that info and thus can't compete as well. Obviously people do figure out that info all the time through various means of reverse engineering.. so all they are doing is making it hard and delaying support and thus sales to non-Windows users that might want to buy their device.

      The MPAA shouldn't care about an MPEG decoder. The only thing I can see them caring about is if the decoder can handle CSS.. and thus need to somehow hide it's keys and such.. which seems a moot point as they've already been cracked.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    3. Re:why do it by hand? by ajs318 · · Score: 2

      Java Bytecode is basically interpretable code better optimised for machine-readability than human-readability. The "Java Virtual Machine" is just a fancy name for an interpreter. Although, I would guess it would be perfectly possible to implement a processor capable of interpreting Java Bytecode as its native instruction set ..... then again, you most probably could make a processor capable of interpreting perl as its native instruction set, if you really wanted to. The code it interprets may be binary in nature {saves space} but it is interpreted, nonetheless, and therefore probably quite easy to reconstruct the source code from. All the "compiler" does is parse the code, replacing all those object-oriented method calls and property accesses with regular subroutines and the fancy loop structures with IFs and GOTOs. {several OO devotees probably are now wearing the same facial expression as a child who has just discovered that their favourite dessert is made with vegetables}. C and friends tend to perform various optimisations on the fly. For example, evaluating `i++` in void context is somewhat useless {you don't need to remember the previous value of i if you're only going to throw it away} so the compiler actually changes it to `++i`. Compiled C code is as distinguishable from raw assembler as Dreamweaver's output is from hand-coded HTML. And the compiler leaves in much "unnecessary" information {variable and function names; bit structure details} unless you strip the binary it produces.

      --
      Je fume. Tu fumes. Nous fûmes!
  11. C vs. assembler by Atario · · Score: 5, Funny

    From the article:

    Also some of the logic could be detemined by decoding binary flag fields. For example:

    push gVIAGraphicInfo
    push 805476C3h
    push fVideo
    call ioctl

    Can now be decoded into the rather more readable:-

    ioctl(fVideo,
    _IOR('v', //118 192+3,
    VIAGRAPHICINFO),//0x805476C3, &gVIAGraphicInfo )

    Oh yeah. Much more readable.

    --
    "A great democracy must be progressive or it will soon cease to be a great democracy." --Theodore Roosevelt
  12. -1, Wrong by Jerk+City+Troll · · Score: 3, Insightful

    Hardware decoding allows for much higher resolution video. Furthermore, specialized hardware typically have more accuracy when decoding the stream. There's additional features too: you can allocate, say, more bits for dynamic color range, fractalize regions that have semi-random "noise" distribution (like tree leaves from a distance) and so on that can improve video quality (to help eliminate obvious artifacts). I am not saying all hardware decoders do this, but these are some advantages. It's very analogous to having specialized 3D hardware to handle graphics rather than "letting the CPU do it".

    1. Re:-1, Wrong by Cooper_007 · · Score: 2, Interesting
      Incredible to see a +5 on an incorrect statement.
      There is only one reason to do this decoding in hardware:

      SPEED

      More accuracy in decoding a stream? In software you can take a variable that's as big as you want. Bigger variable => higher accuracy.
      Additional features? Code 'em up, make a filter of 'em or whatever. Only takes a good concept and some time.

      All these plusses you state as being the reason for using a hardware solution can actually be made using plain old software. The only reason they're not going that route is because if you increase your variable size to get more accuracy, you get a performance penalty. If you make the stream go through filter after filter getting the quality up to snuff, you get a performance penalty.

      The only way to not incur these penalties is by making a hardware part that does all those things without taxing the CPU.

      Cooper

  13. well yes, what else do you want? by twitter · · Score: 3, Insightful
    He took the binary code and inferred a C language program that would produce the same code.

    It won't produce the same code. Different compilers do things different ways. In the end the binary produced will run the hardware the same way and that's the goal.

    Very clever, but I thought reverse engineering worked on a functional level.

    He did do functional analysis to make it work. He understood what the thing was doing. If he did not, his code would never have worked. He made little doodles and what have you to make it clear to himself. Now it's in C, the diagrams are much easier to make, though we can be sure he's going to share his diagrams as well. That way other people can make nice software too.

    IANAL, but I don't think the source code is legally safe if VIA wants to go after it.

    I don't know why you think that. He could have had his computer tell him what it was doing instead of using IDC, no? It's not like he dumpster dived code like old Bill Gates did BASIC. He understood what the code did and reimplemented it himself. Even if he did have dumpster dived code, he could use that to make a functional diagram and then use that to write new code and the results would be the same.

    If there is a legal problem with this, there should not be. Why should people be afraid to understand what their machines do and then share that information? So someone else can make money of evryone else's ignorance? Shit, no one would be able to get anything done that way.

    --

    Friends don't help friends install M$ junk.

    1. Re:well yes, what else do you want? by AvitarX · · Score: 2, Informative

      I believe that if you used dumpster dived code to make a diagram, and then used that to make the code you are open for abuse. Because you could have accidentaly infringed.

      The coder and the diagramer should be different people for clean reverse engineering.

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
  14. Not quite done yet by wowbagger · · Score: 5, Insightful

    Well, he has done the first part of a reverse engineering process - he has worked out, by inspection of the target, what is being done.

    However, he now needs to write the specifications for the hardware, and publish THAT, so that somebody else, somebody who has not seen the binary driver, can write a program based upon the specifications.

    Should this not be done, then this code, while interesting to individuals, would be pure poison to anybody who has any intention of distributing this code in a commercial way (e.g. a distro).

    And writing a specification for the chip, by inspecting the code, is far more difficult than simply reverse compiling the binary.

  15. why hardware decoder? by RelliK · · Score: 3, Insightful

    With the ever-increasing clock speed of our CPUs, what is the point of having a hardware MPEG decoder? I understand that p2-400 is sufficient to play DVD-quality movies. The amount you spend on the hardware decoder could have been better spent on memory or video card or CPU or whatever. Now, a hardware encoder would certainly be useful as encoding is still very CPU-intensive. I was contemplating a tivo-like box with a hardware encoder. Does anyone know if hardware MPEG encoders are supported on Linux?

    --
    ___
    If you think big enough, you'll never have to do it.
    1. Re:why hardware decoder? by DeadScreenSky · · Score: 2, Informative

      Maybe it doesn't work in Linux or on your specific setup, but my 'suffiently accelerated ATI card' has a hardware MPEG decoder. All of them have had it for years, AFAIK - the original Radeon did, and I am pretty sure later Rage Pros also did. So maybe you actually are using a hardware decoder without realizing it?

      --
      There is no excellent beauty that hath not some strangeness in the proportion. -- Francis Bacon
    2. Re:why hardware decoder? by Wumpus · · Score: 2

      MPlayer was my first choice on those machines, and it just couldn't handle the task.

      MPlayer is a really nice research platform for accelration techniques, but a media player it isn't. What killed it for me was its lack of support for DVD menus. Even if it did support them, it just didn't perform well, and I couldn't use it.

      I've worked with the MPlayer source on several occasions, around version 0.50. It was an abomination - a monolithic design that couldn't be modified in any meaningful way without a rewrite. It had obvious bugs (like using the wrong xlib API to read X events, resulting in a massive memory leak of every single X event ever sent to the application because they weren't being removed from the queue), and just seemed very fragile.

      Considering the sorry state of the code, I can't but admire the MPlayer authors for their dedication and focus, and for taking it as far as they have.

      On the Windows side I tried PowerDVD, which almost worked, but it had visual glitches when using MMX and it couldn't keep audio sync without causing the audio to skip every once in a while.

      I use XINE on that machine right now, (Totem, actually, which my 4 year old son is perfectly happy with), and it just works - no digging into man pages, no unpleasant interaction with a snotty maintainer. I like that.

  16. A link to just that: Reverse Engineering Compiler by myst564 · · Score: 4, Informative

    Just to prove it exists:

    Reverse Engineering Compiler

  17. Re:Why do you need source code to develop for it? by Dr.+Zowie · · Score: 2, Informative

    They're not reverse-engineering the hardware, they're reverse-engineering the driver software that is used to talk to the hardware. In the absence of an authoritative interface document, the driver can serve as one. In the absence of source code for the driver, the reverse-engineered driver code can serve as one.

  18. maybe, but not for that reason by sydlexic · · Score: 2, Informative

    the decoded mpeg2 cannot be captured, it's decoded directly to the video memory.

    1. Re:maybe, but not for that reason by homer_ca · · Score: 4, Interesting
      Another possiblity is that Macrovision copy protection is enabled or diabled in the driver (maybe even by flipping one bit). Macrovision is the analog copy protection mandated by the DMCA. So can't let the open source community break their one bit encryption.

      I believe this is the TV encoder chip used by the EPIA-M and the VT1622M is the one that supports Macrovision.

  19. the fist of M$ by twitter · · Score: 2, Insightful
    The silly thing with all of this is that the drivers and support for this card that result from the reverse engineering will ultimately result in more sales. It seems so counter-intuitive for VIA to resist this.

    Can you imagine what would happen to VIA's sales if they somehow offended M$ and M$ retaliated? They could keep VIA in the dark or give them bogus SDK info so that their hardware would not run well under Windblows. Even witholding a dinky little check here is damaging. Harware makers that defy Microsoft are doing something heroic and should be rewarded.

    Once enough hardware makers tell Microsoft to shove off, it's all over. In fact, it's already all over. Windows already enjoys the bad reputation they deserve. When you buy something for Windows, the odds of it working are only marginally better with the goofey M$ binary driver than they are with a free driver. There are some exceptions to this rule, like winmodems and crappy little digicams, but the gap is closing quickly. Everyone will be better off when stuff can be chosen on grounds of technical merit rather than M$ favor.

    --

    Friends don't help friends install M$ junk.

  20. Why a hardware decoder? - Because - It's a VIA by Chordonblue · · Score: 4, Interesting

    Obviously you've never used VIA processors before. They are notorious for their slow FPU's. In fact, before their latest top-of-the line model - the Nehemiah, their FPU's of previous models always ran at HALF CLOCK. Ouchy.

    But, even at full speed a similarly clocked Celeron kicks it's ass in every which way. That said, high performance is not the stated purpose of the Centaur/Via CPU. Its low watts, coupled with the decoder make for an excellent all-around box. I've built around 7 or 8 of these myself and they are excellent for what they are designed for (think: mom and dad or net terminals, not Half Life 2).

    I have a few of these floating around the school here now as basic net access / workstation terminals and they are hugely popular - especially in light of what they replaced (AMD 300's). There's nothing like tearing apart some ancient computer and putting one of these boards in it. 90% of the time, it's simply cavernous in there (so much space!)

    Last week I put one in an Aptiva and realized that if I was an enterprising person (read: man with a Dremel) I could have fit TWO of them in there as a dual workstation! :O

    So to sum up, they're small as hell (you have to see it to believe it), simple, fun, easy to configure, but don't plan of using them at the next Fragfest 2003 (c)

    --
    "...Well, there's egg and bacon; egg sausage and bacon; egg and spam; egg bacon and spam; egg bacon sausage and spam..."
    1. Re:Why a hardware decoder? - Because - It's a VIA by pantherace · · Score: 2
      You mean throwing a Nvidia geforce fx5ti5000 at it won't help ? or an Ati all-in-heat-production 9950 pro wont?

      Sorry, I do know someone who is contemplating building a very cheap (relatively cool and non-power hungry) cluster out of them. Which will (sadly) beat the SGI "High performance" system (either easily parallelizable, or single-threaded, non-super memory bandwidth (though they wouldn't do that bad on that either, considering the age of the SGI)) for a very small fraction of the price. (and it should even fit in something the size of a filing cabinet!)

      And to back up your above statement, they make GREAT workstations. (esp if you have a cluster in the back to help out :) )

  21. NOT reverse engineering by Performer+Guy · · Score: 4, Informative

    This is not reverse engineering, he dissassembled the code and pretty much copied/ported the result to C. I don't think this meets any cleanroom standards and the code is dangerously contaminated. To use this work you would have to get someone else to reimplement the driver without looking at this contaminated code base. That means they need to be passed a description of the hardware interface inferred from observations of how this driver works, and the code produced by dissassebling the driver needs to be tossed in the garbage can.

    Who taught anyone that dissassembling someone's proprietary code and doing a line for line port then publishing the result was in any way legitimate?

    1. Re: NOT reverse engineering by Adam+J.+Richter · · Score: 3, Informative
      Who taught anyone that dissassembling someone's proprietary code and doing a line for line port then publishing the result was in any way legitimate?

      "In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work". United States Code, Title 17, section 102(b).

    2. Re:NOT reverse engineering by swillden · · Score: 3, Insightful

      Who taught anyone that dissassembling someone's proprietary code and doing a line for line port then publishing the result was in any way legitimate?

      The better question is: Who decided that the "clean room" approach is actually necessary? Answer: a bunch of ultra-paranoid lawyers at Compaq who were about to piss off Big Blue (deep pockets, lots of lawyers and extremely protective of IP) in a big way and wanted to make absolutely completely sure that there was no way their project could be called a copy.

      I don't think it's at all clear that copyright law makes so-called "clean room" reverse engineering necessary. AFAIK, a court has never stated that source code reconstructed from a binary is considered a copy, or even a derivative work. Copyright law does not prevent you from reading something, learning from it, and creating something else based on what you learned. It may be that a court would rule this a derivative work, rather than an work of independent authorship, but it's highly questionable since courts have already said that only the expressive, not the functional, part of code is copyrightable.

      It's very clear that clean room reverse engineering is sufficient. It's far from clear that clean room reverse engineering is necessary.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    3. Re:NOT reverse engineering by orv · · Score: 5, Informative

      The copyright statement in the driver from via states:-

      * Permission is hereby granted, free of charge, to any person obtaining a
      * copy of this software and associated documentation files (the "Software"),
      * to deal in the Software without restriction, including without limitation
      * the rights to use, copy, modify, merge, publish, distribute, sub license,
      * and/or sell copies of the Software, and to permit persons to whom the
      * Software is furnished to do so, subject to the following conditions:
      *
      * The above copyright notice and this permission notice (including the
      * next paragraph) shall be included in all copies or substantial portions
      * of the Software.


      It's just that they didn't actually release the code for the driver. So the port doesn't need to be a proper clean room reverse engineer.

  22. Why do you say VIA resisted? by Fefe · · Score: 4, Insightful

    First of all, it's just a small wrapper library that is comparatively easy to reverse engineer.

    Second of all, there is a library we can reverse engineer.

    Third of all, the guy is using the VIA forums to spread the word, so VIA obviously knows about this, and they haven't sued.

    To me this rather looks like they were waiting for someone to reverse engineer this, because they couldn't release the sources themselves for contractual reasons. Don't just assume people are evil, maybe they didn't have a choice and did what was in their power to give you the means to help yourself.

  23. Ask and Ye Shall Receive? by R33MSpec · · Score: 2, Insightful

    "..Typically, only requests from companies developing product for sale will be approved.."

    Has the article submitter actually asked them instead of going by a press release and venting on /. ?

  24. Re:So he replicated the binary? by meowsqueak · · Score: 2, Insightful

    Gotta start somewhere though - an opensource driver is a good place to start building your superior functionality on.

  25. Title should read ... by Anony+Moose+Cow+Turd · · Score: 2, Interesting

    Code porting MPEG driver from assembly to C.

    --

    "Too slow chicken marengo" - The Cat
  26. Re:A link to just that: Reverse Engineering Compil by shird · · Score: 2, Funny

    Ironically, the sources to that "Reverse Engineering Compiler" are not available in the public domain...

    --
    I.O.U One Sig.
  27. Dxr3 by daserver · · Score: 3, Interesting

    Lets not forget the hardware mpeg2 decoder - dxr3. A lot of people have worked on this and it has resulted in a very decent driver. It has had absolutely zero help from sigma. There is even hacks to make it display rgb directly to your tv, bypassing the crappy composite and svideo.

  28. reverse engineering? by sewagemaster · · Score: 2, Funny

    reverse "engineering"?
    is that what it's called now?

    back in the day, i used to just double click on the mpeg clip on my computer, and all you could see were "reverse cowgirls". whatever these "engineers" (or pr0nstars as we used to call them) are doing is just great. My "intellectual property" is now as WIDE-OPEN as open source for you!

    ackk kids.... when do they ever use the proper symmentics.. (old man like me cant spell...)

  29. Theres also VIAEXP... by excessive · · Score: 2, Informative
    The VIA enhanced Xine Player now which does have the details of the MPEG2 stuff for the CLE266... (...and it is connected with VIA, which is where I found the link...)

    Although it did only start about a fortnight ago.

    1. Re:Theres also VIAEXP... by orv · · Score: 2, Interesting

      Yup, the problem is that VeXP is just a modified and slightly broken version of xine rather than a patch to get the EPIA mpeg hardware going.
      Also, the VeXP code relies on using the VIA ddmpeg binary driver and VIA binary video drivers.

  30. Re:The Wrong Thing To Do by vidarh · · Score: 2, Interesting
    No, it sends the message "release a driver for ANY operating system" and we'll reverse engineer it and buy your hardware...

    It's not like you'd need a Linux driver for it to be relatively straightforward to reverse engineer - most hardware drivers are relatively simple, they act as relatively thin layers to abstract out low level hardware access - and reverse engineering them isn't a big deal.

    The most notable exceptions are winmodem drivers, where the drivers provide more or less a full modem protocol stack, and 3d graphics cards drivers that tend to provide quite high level interfaces to relatively low level hardware primitives.

    If any hardware vendor for more simple hardware devices believe that anyone will have a problem reverse engineering their drivers, they are clueless idiots and will only benefit from learning a lesson.

  31. PVR era by sonamchauhan · · Score: 2, Insightful

    A Mini-ITX Linux system that used the functionality provided by this driver, had a 3-second BIOS bootup time using Linuxbios, plus a PCI TV tuner card with hardware MPEG-2 encoding, would be a pretty impressive media center.

  32. Look at it this way by ajs318 · · Score: 2, Interesting

    He owns the hardware; therefore, he has a right to make use of it. The details required to write a driver form a part of the operating instructions for the hardware, and anyone claiming them to be "proprietary secrets" should be laughed out of court with a dusty bootprint on their arse.

    Is it a proprietary secret that "Esc", "K", followed by a two-byte binary number presented units-first between 1 and 480, followed by that many bytes, is the code used to select bit-image mode on an Epson-compatible Dot Matrix Printer? Of course not! why, Back In The Days, when if you wanted software you pretty much had to write your own, the printer would have been useless without such information. So the manufacturers used to provide it in the handbooks. Kit that didn't come with adequate documentation, didn't get bought.

    Today, with pre-written software in abundance, manufacturers are becoming sloppy and not documenting fully how to interact with their products. For the casual user, this isn't a big problem, because they were never going to do anything with this information anyway, so why waste paper or plastic telling them it? But if there is even one user who wishes to do more than what it says on the box, then it suddenly becomes a very big deal indeed.

    My analogy is that he used "reasonable force" to obtain information to which he was entitled, after polite request had failed. The law is quite clear that in certain situations, reasonable force may be used. This situation is more "gentle" and relies less on quick decisions than, say, physically moving a person who is trying to resist. {He could have obtained said information by holding a knife to someone's throat at the manufacturer; this would likely be seen as more than reasonable force.}

    We should be writing to our elected representatives now to make sure it becomes mandatory for manufacturers to supply full hardware specifications, gratis or at cost, to anybody who wants them. Concealing details is a dirty, lowdown, scumbag, coward's trick that will cost companies sales. Please don't betray your cowardice by bleating about "competitors gaining an advantage" - you will have access to your competitors' documents, too, and if your competitors manage to do a better job than you, then you failed it! I have no sympathy, either, for those who whine that people might find it easier to break the law if they were given certain information. It is already more than easy enough to break the law. A few extra ways aren't going to make any difference here or there. You shouldn't rely on doing crap design and keeping things secret; it's another form of corner-cutting. Do it properly or not at all.

    If the guy is ever taken to court, his best chance is to push for a trial by jury an hope that, out of twelve people, he can convince two of them that, although he does not deny what he did, it is the law that is wrong this time and they can acquit him. If this happens often enough the law will be changed.

    --
    Je fume. Tu fumes. Nous fûmes!