Slashdot Mirror


Free/Open Source Software Hardware Requirements?

Bender asks: "Most on Slashdot seem to be concerned with getting Free/Open Source software to be compatible with hardware (firmware, register sets, etc). My question is from the other side of the table: I'm in the hardware business and I'm wondering if there are any central guidelines to better guarantee compatibility with Linux/*BSD. As an example, to guarantee that our hardware runs Microsoft Windows, we have to conform to the Windows Logo Program Requirements. These requirements dictate (among other things) firmware interfaces, debug ports, and DRM. Some of these requirements, if not implemented carefully, could trigger incompatibilities with non-Microsoft operating systems. Is there a Linux/*BSD equivalent to the Microsoft requirements to allow hardware designers to build OS agnostic systems?"

36 of 228 comments (clear)

  1. Interface Documentation by nadamsieee · · Score: 4, Insightful

    Well documented, unencumbered interfaces would be a nice start.

  2. Um, no by The+Bungi · · Score: 1, Insightful
    That's like asking Homer if he has some Grey Poupon...

    [ouch]

  3. Well... by pdbogen · · Score: 5, Insightful

    My ininformed, off-the-cuff answer would be:

    Complete and freely available documentation.

    If your product is really wanted, people will adapt (look at how hard people try to do this with things like reverse-engineered open-source drivers). If you freely provided complete documentation on your hardware, it would make it several orders of magnitude easier for developers to write software for your hardware.

    1. Re:Well... by PugMajere · · Score: 4, Insightful

      Documentation available under NDA is fine, so long as the drivers developed using it can be distributed.

      It is, however, not preferred.

      The preference is that the necessary documentation be freely available, and even, redistributable, so that it can accompany the source if it would be beneficial.

    2. Re:Well... by tomstdenis · · Score: 3, Insightful

      buahahahahaha hahahahahahahahah buahahaha muahahahahahh

      You're kidding right? Basically every component of my computer has crashed windows at one point in time.

      Faulty 3d drivers, crash the thing going from a D3d game to desktop.

      Faulty hauppage drivers lock up the tv viewer and can make the machine unstable

      Faulty cpu drivers [I kid you not] from via for the AMD64 make it crash on bootup [don't have my exact mobo model off the top of my head but it's an ASUS K8V I think].

      Granted things work [for the most part] more smoothly in windows but that is ONLY because they write drivers for it. If they spent event a quarter of their time/money on Linux/BSD drivers we wouldn't be having this conversation.

      Tom

      --
      Someday, I'll have a real sig.
    3. Re:Well... by spectecjr · · Score: 2, Insightful

      You missed the point. The little "designed for WinXP" logo is totally meaningless.

      Sure it "works" in winxp ... that's totally different from being "rock stable robust in winxp" which most things are not.


      Let me guess.. you click through the "these drivers have not been signed" warnings, don't you?

      That warning means that the drivers haven't been through Microsoft's WHQL driver testing procedures. Which means that you deserve whatever you get.

      --
      Coming soon - pyrogyra
    4. Re:Well... by Anonymous Coward · · Score: 2, Insightful
      Documentation available under NDA is fine, so long as the drivers developed using it can be distributed.

      Not really.

      Not unless the SOURCE for the drivers can be distributed under a F/OSS license. (and if an NDA it went that far you may as well rename it a DA"Disclosure Agreement")

    5. Re:Well... by spectecjr · · Score: 2, Insightful

      Let you in on a little hint buddy, even nvidias drivers have that warning...

      No they don't.
      http://www.nvidia.com/object/winxp_2k_71.8 4.html

      "Version: 71.84
      Release Date: March 11, 2005
      WHQL Certified"

      Know what that last line - WHQL Certified - means?

      Well, for starters, it means you're talking through your hat.

      --
      Coming soon - pyrogyra
    6. Re:Well... by vsprintf · · Score: 3, Insightful

      Dude, whoever built and looks after your computer is doing a really shitty job of it :-)

      I can't comment on his computer, but something causes Windows to crash, and I have one computer that doesn't want to run it. The machine is a K6 without anything fancy - fairly vanilla stuff with an ATI Rage 128 card. It won't (actively) run Windows 98 (that was the last time I tried) for more than 30 minutes without crashing. However, it has run every version of Mandrake Linux from 7.2 to 10.1 without problems.

      When using Windows, it would run for hours as long as you didn't actually do anything like open a program or use the mouse. When I did try to use Windows, it would crash at seemingly random times, and not a BSOD either - it would freeze solid or give a black screen. One person suggested the power supply was marginal and just wasn't enough to support Windows, but I find that a bit hard to believe. In any case, I can vouch for the fact that Windows has problems with certain hardware when Linux doesn't.

  4. Legacy, Ick by ackthpt · · Score: 2, Insightful

    Microsoft requirements (to their legacy code and operating system) are what really holds the PC back. Has there been any decent effort to break this mold?

    --

    A feeling of having made the same mistake before: Deja Foobar
  5. just make documentation available by Chirs · · Score: 4, Insightful


    The real key is to make documentation available to OS developers, preferably without an NDA. Pretty much everything else can be worked around--a lot of the main OS developers are pretty bright.

    One other thing to consider is that there is a lot of 64-bit hardware running on free OSs. It's nice when PCI devices can DMA to the full address space.

  6. Use the distributions by michelcultivo · · Score: 2, Insightful

    You can use the distributions like RedHat, Mandrake, Debian to test the devices and put the specified support in kernel. Or better, why not send the hardware to one group of kernel developers.

  7. Re:To make it work with linux... by Anonymous Coward · · Score: 1, Insightful

    ... send a free piece of the hardware to every major kernel-programmer.

    Uh, so, build it first. ??? +5 Profit?

  8. Hardware-compatible software by doshell · · Score: 5, Insightful

    I always felt the term "Windows compatible hardware" was a big piece of bullshit. Shouldn't it be the software to conform to the hardware, and not the other way round? Hardware seems to be the lowest common denominator here.

    Of course (as some posts already mentioned), this can only be achieved if the hardware in question is properly documented so that developers know how to write drivers for it, without having to resort to dirty (and sometimes illegal) tricks like reverse engineering.

    --
    Score: i, Imaginary
    1. Re:Hardware-compatible software by Anonymous Coward · · Score: 2, Insightful
      Shouldn't it be the software to conform to the hardware, and not the other way round?

      Uhh, no. Given an operating system with 98% market share and an in-design piece of hardware, doesn't a hardware standard make more sense than building whatever comes to mind and hoping that Microsoft will release a service pack to make your product usable? As a hardware designer, which would you prefer?

    2. Re:Hardware-compatible software by mzwaterski · · Score: 5, Insightful

      It is pretty hard for software to conform to hardware if the hardware is designed/released after the software has been released to the public.

  9. Linux doesn't have the muscle.... by Univac_1004 · · Score: 4, Insightful
    ...to drive the hardware: MS does.

    So the *nix crowd has always been followers.

    If the harware guys want to play OS here's the game plan:

    1. exactly follow existing spes (where posable)

    2. clearly and loudly publish interface details

    3. release *Linux drivers with the hardware

    [#3 is cheaper than you think!]

  10. If it's open source... by ImaLamer · · Score: 5, Insightful

    ...then people will correct you if it's wrong. If you release open source drivers to the community and do it in a fashion which inspires feedback (mailing lists, forums, Sourceforge) and people find fault (bugs, standards compliance, bad code style) it can and likely will be fixed.

    If you are prepared to put paid developers at the whim of the community then you are already on the right track to wide acceptance. You have to realize it isn't your baby anymore and if you've just released a horrible monster it will get tamed and put into other projects that have nothing to do with you.

    Going open source is easy - anyone will tell you what is good and bad to do. Closed source, proprietary software tends to lean towards groupthink and suddenly a bad project is worse. There is no reason to keep discussions and ideas behind closed doors in the open source world so you can benefit from wider feedback.

    In a year you'll be discussing you're release on Slashdot, and we'll be saying *BSD is dying. But that will be some of the best marketing and market research you can do, and it will all pay off.

    I'm in a weird mood..

  11. Re:This is no problem.. by El+Cubano · · Score: 4, Insightful

    If you release complete documentation of said hardware ...

    True. The trend seems to be that many F/OSS projects prefer to develop the drivers themselves (as it assures them a known level quality from reliable developers). That is not to say they don't trust the developers in many hardware companies. But let's face it, a EE sometimes makes a crappy programmer (and I have pleny of EE-wielding friends that work for hardware companies and end up getting pressed into service writing drivers for hardware when they would rather be designing the next batch of hardware).

    Failing that, as long as the F/OSS people can QA the stuff and suggest modifications it will eventually make it in. This can be seen in the all the back-and-forth between the Linux kernel developers and SGI over getting support for XFS into the kernel, which ultimately resulted the XFS patches getting accepted into Linus' tree.

  12. I just want to say... by JustNiz · · Score: 3, Insightful

    THANK YOU!!! I wish more hardware manufacturers thought like you!

  13. One rule by bigberk · · Score: 4, Insightful

    Publicly document the hardware interface. That's all that's need, really. As a programmer and electrical engineer all I need is a decent spec sheet for a piece of hardware to construct an interface to a linux system.

    Remember that documenting your interface does not mean revealing the secrets of what's going on under the hood! What do the signal lines do? What commands are accepted? What are the timing characteristics? What format of text/image/video flows along the lines? etc

  14. Open Source is Like Terrorism (note: ironic subj.) by mumblestheclown · · Score: 2, Insightful
    You can't "fight a war against terrorism" because terrorism is a means, not a thing or group of individuals.

    Likewise, you can not design "for F/OSS" because F/OSS is a means. Linux and the like may be most associated with F/OSS, so you might legitimately ask "how to I do hardware so that it is compatible with most linux distributions", but NOT (generally) with F/OSS. Consider the (unlikely) case where MS open source'd XP source code today - there you have it .. F/OSS software, and you see that your question loses its correctness.

    And now for the part that will receive real flames from the unthoughtful: F/OSS came of age with linux. But, likewise, the fundamentally good idea is handicapped by its association with it. F/OSS is too important an idea and reality to be associated with a unix clone with generally poor usability (despite its stability) and the blindered hobbyists who dance around it.

  15. It also helps... by temojen · · Score: 4, Insightful

    If you write your own drivers for Linux and one of the BSDs and release them under the GPL and BSDL with the complete documentation. From that point on the community can take care of maintaining and porting them if you don't (it's better if you do).

    It's not enough to release your own closed-source driver for one architecture (like nvidia and ati do) because this locks out people on other architectures and later kernel versions.

  16. Re:Maybe misunderstood? by Anonymous Coward · · Score: 2, Insightful

    I suppose that's why FreeBSD has been explicitly offering Linux binary compatibility for years, because no one wants it.

    Hmm.

  17. a comment by latroM · · Score: 2, Insightful

    I have to say that don't even think about some proprietary binary no matter how wrapped and supported it was by distributions.

  18. Re:Follow the windows guide, by andreyw · · Score: 2, Insightful

    How is saying "no DRM" a poke at Microsoft? It's also a poke at Intel, DMCA, MPAA, RIAA, BSA, w/e. Sheesh. Aren't we defensive today.

  19. Thoughts from the tastier end of the food chain... by Anonymous Coward · · Score: 2, Insightful
    From what I (as a lowly end-consumer and occasional fiddler) can tell, two mistakes to avoid are:
    • Slaving off to software what should be done in hardware, unless you're planning on going cross-platform with the software support. Think WinModems here.
    • Closed. Binary. Firmware. There's a whole bunch of wireless hardware that it'll be years before anyone can use under Linux, if they even bother, for precisely this reason, and it bugs the hell out of me.
    So, yeah - if you're going open, go all the way.
  20. Perhaps release a F/OSS reference driver by Anonymous Coward · · Score: 2, Insightful
    But (for your own sanity) openly announce that it's unsupported by your company but that you'd welcome others to fork it.

    Your company almost certainly doesn't want to provide support for the driver itself (for each of the OS's, etc) - but just putting out the reference driver with the conditions that it works (i.e. "this was only tested on the 2.0 kernel running Caldera Linux") can help people with the clues they need

  21. Been Down This Road... by mykepredko · · Score: 2, Insightful

    Hey Bender,

    I've gone around this block a few times and I have a few comments that you might find useful.

    First off, you didn't say what is your market space. Are you shooting for home, office, workstation or server? I think you'll probably find it easiest to be compatible in the office desktop or server spaces where the configurations are quite generic and not apt to be modified by the end user. Secondly, you didn't say what you did. Are you a full system designer, motherboard designer or configurator? Are you looking to design components that are *nix compatible or are you looking to put together off the shelf components into a system that is *nix compatible? How you answer these questions will affect how you approach the problem.

    If I were in your position, I would suggest that you look at the "PC/99" Specification put out by Microsoft/Intel and see what you can do to be compatible with this specification instead of the more Windows (and DRM) specific later specifications and try to get/design hardware that meets this specification; it should be very *nix compatible although it will not encompass the latest audio and video specifications (which is why I suggested office desktop and (preferably 1U) server products.

    The problem with this approach will be specifying chipsets that can handle the latest processors and memory. You should be able to mix and match to end up with a motherboard that will run the latest processors with the most appropriate memory and access EIDE and SCSI storage and should be very *nix friendly.

    Good luck and let us know how you make out,

    myke

  22. Keep the DRM part by Anonymous Coward · · Score: 3, Insightful
    There is nothing technically wrong with DRM.

    Personally, I *want* Linux to be able to used the good parts of Trusted Computing (palladium).

    DRM is a technology - not unlike encryption - that has it's uses and places in the Linux world. Surely you wouldn't claim that Linux would be better off without SSL support. Some uses of DRM technology are a valuable and logical extention to help improve secure commerce. I want Linux to have a place in those solutions.

  23. Re:This is no problem.. by shaka999 · · Score: 4, Insightful

    BS!

    Way to sidestep the question. It sounds as if the original author wants his system to just drop in and work. You suggesting that he document and let others fix a problem that shouldn't have occured in the first place.

    --
    One should not theorize before one has data. -Sherlock Holmes-
  24. Re:This is no problem.. by MrDomino · · Score: 3, Insightful

    You have to recognize, though, that it can be difficult for hardware producers to write drivers that run on every conceivable version of *n*x; there are so many different combinations of hardware and kernel options that it quickly gets messy. It's much better for hardware manufacturers to release specifications for their hardware--publish what the chip does when it receives signal x on pins 20-25, and what the significance of the output of pins 30-39 is. Then, let the driver writers for the various operating systems take care of the work so that the hardware manufacturer can stick to what it does best: manufacturing hardware.

    Open drivers would be nice, but without any standard interface to different operating systems, it's a lofty goal at best and a severe distraction from real hardware development work at worst; open specifications are what really count.

  25. People RTFQ!! by Dacmot · · Score: 2, Insightful

    From the way I understand the question it seems nobody understood what the poster meant.

    It seems to me like the guys is looking at some kind of guide to writing drivers for the different *nix flavours. Telling him to write open drivers with open documentation and specs isn't helping him.

    As far as Linux is concerned, a good place to start is here. *BSDs probably have a similar way of working: almost all the communication between the kernel/driver developers is done by email on mailing lists. IRC channels are also used.

    Many of the free unix flavours (linux/bsd/etc.) share open source drivers; ethernet card drivers is a good example of that. The interface with the kernel may be slightly different across platform but the low-level hardware access remains fairly similar.

    My best advice would be to look at existing drivers. They are all open source so you can look at the source code all you want.

  26. A vote for bloat.... by Univac_1004 · · Score: 2, Insightful
    ...at least on distribution media.

    Anyway, this is much harder for a small manufacturer to acomplish.

    Placing drivers in the Internet Archive and etching the URL on the hardware is the minimium they should do.

  27. I doubt that is the question. Much less the answer by LWATCDR · · Score: 4, Insightful

    My guess this guy is working as a systems integrator. AKA he is building boxs.
    I think he wants to know how to select parts that will work with Linux and BSD not how to build parts that will work with them.

    If so it is a very good question. How would a hardware integrator know what Video, SATA card, Raid controllers, and motherboards to use?

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  28. Re:Only if noone else can sign the NDA... by damiangerous · · Score: 2, Insightful
    Nope, there's nothing in the GPL about making your code hard to read.

    Depends on how you look at it. Sure, if you work with the obfuscated code in the normal course of development then that's fine. But developing it "normally" and then obfuscating it for release is technically a violation. The source code is defined as "the preferred form of the work for making modifications to it." If you're releasing anything as "source code" other than what you work with, then that's not the "preferred" form.