Slashdot Mirror


Debian Removes Binary-only Firmware From Kernel

mbanck writes "The Debian Linux kernel maintainer has announced that he will remove firmware from GPL'd drivers which obviously lack source code in its preferred form (i.e. something more appropriate than a hexdump inside a char[]), in accordance with the release manager's decision. The alternatives are user-space loading of the firmware via hotplug's request_firmware() API or making the vendors aware of the issue. How do the other distributions handle this?"

24 of 121 comments (clear)

  1. how other distros handle it by 7-Vodka · · Score: 3, Insightful

    How do other distros handle it? What a retarded question.
    Obviously, other distributions just include them because they want their stuff to work and don't like pissing off their userbase.
    Ah, debian we love you for it though.

    --

    Liberty.

    1. Re:how other distros handle it by swillden · · Score: 5, Insightful

      Ah, debian we love you for it though.

      Yes, we do.

      This is an example of a rare thing called "Integrity": sticking to your principles, even when it's inconvenient, or painful.

      Lots of people are going to call Debian foolish and narrow-minded, but it's the same foolish and narrow-minded sense of principle that started this whole Free Software movement, and it seems to me that with the burgeoning commercialization of Free Software, it's very important that we have some voices who maintain the "pure" vision. Not because the commercialization is bad, but because commerce is pragmatic and that pragmatism poses some risks to a movement whose foundation is idealism.

      Ultimately, making Free Software a truly viable option for computing requires a mix of both idealism and pragmatism, and we do, indeed, love Debian for providing an idealistic counterbalance.

      Oh, and it's a damned fine operating system, too :-)

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    2. Re:how other distros handle it by Anonymous Coward · · Score: 4, Insightful

      That's a damn good principle to stick to when you are based in the most litigious nation on Earth.

      Just think 'non-US' and you'll realize that one of Debian's policies has always been to make sure not only that it works, but that it actually works legally. It only takes one C&D letter (or, if you don't fold to those, one court order/FBI visit) to fuck everything up and undo the countless man-hours that have gone into Debian.

      For that matter, they are also trying to protect their end-users. IP law is a sketchy thing and we all have heard the SCO-babble about end-users being responsible for the IP within the software they use. If you remove legal issues before the software reaches the end-user... Well it's just good for everyone.

    3. Re:how other distros handle it by swillden · · Score: 4, Interesting

      Except in this case the principle their sticking to is rabid legalism.

      What? Debian's goal is to be a complete, *Free* operating system, where the definition of "Free" is the one put forward by RMS and the FSF, namely: Free to use, free to examine, free to modify and free to share. These binary-only firmware components are not Free. You may have freedom to use and share them, but you can't examine or modify them. Debian wants to be a Free operating system not Mostly Free, or Very Nearly Free.

      What's "rabid" or "legalistic" about that?

      It's pragmatism taken to an extreme.

      That sentence parses just fine (no misspellings, even!) but it makes no sense. What are you trying to say? How can such an impractical decision be "pragmatism taken to an extreme"? What would that phrase mean anyway? Extremes, by definition, are not pragmatic!

      It has nothing to do with FSF style "save the users from themselves" ideology.

      Now you've switched to a different target, choosing to mischaracterize the FSF's position. FYI, the FSF has no intention of saving users from anyone, the FSF just wants to make it possible for people who want to to create, use, read, modify and distribute Free Software, with the assurance that the original author's wishes (that it be Free) will continue to be honored as long as the copyrights are in force. If anything, it's about saving developers from having their work misappropriated, not about saving users from anything.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    4. Re:how other distros handle it by Dwonis · · Score: 4, Insightful
      Not wanting to get sued is pragmatic. But their efforts to absolutely guarantee this move beyond pragmatism to absurdity.

      Yes, absurdity. It's not like anyone is ever going to accuse Linux developers of copyright infringement...

  2. tg3 Driver Affected by semaj · · Score: 5, Informative

    One of the drivers I use - the tg3 Gigabit Ethernet driver - is affected by this. The driver currently contains non-free firmware that is uploaded to the card in a couple of cases.

    An interesting thing about this driver is that it appears to work (to the extent that most people need) without the firmware. There has been some attempt on the linux-kernel mailing list to make the firmware part of the kernel optional. That way Debian can just turn that option off and presumably remove the associated firmware from their kernel. Anyone who needs the bug fixes/features provided by the firmware can use a non-Debian kernel.

    Not everyone's in favour of this idea though. There's more about it on the mailing list if anyone's interested.

    --
    Meep meep
  3. Let me see if I've got this... by Anonymous Coward · · Score: 5, Insightful

    Correct me if I'm wrong.

    There are currently some vendors whose hardware require firmware to be uploaded to them (for example, Broadcom NICs), and these vendors have esentially embedded the binary for the firmware into the kernel source.

    Since the firmware is most likely not GPL, and the kernel source is GPL, we've got a GPL violation on our hands.

    So the suggested fix is to have these vendors pull the firmware out into its own file, and rewrite that part of the kernel source to pull in the firmware dynamically.

    Doesn't really seem like that big of a deal, unless I'm missing something?

    1. Re:Let me see if I've got this... by luferbu · · Score: 5, Informative

      This has been already discused in the past, in fact, Richard Stallman published an article where he states that the Linux kernel is in violation with the GPL because of the firmware included without source code, see the article at here

    2. Re:Let me see if I've got this... by Cecil · · Score: 3, Insightful

      Since the firmware is most likely not GPL, and the kernel source is GPL, we've got a GPL violation on our hands.

      Correction is on its way:

      The GPL offers no restrictions on what code you can put into the GPL'd project. If you were putting the kernel into a non-GPL product, then that's definitely a GPL violation, but not the other way around. So, if you are allowed to put the firmware binary code into the kernel, through fair-use, a license, whatever, then it's fine to do that. If you're not licensed to do it somehow you're (to use the popular vernacular) stealing. This is probably where the dynamic-pulling of the firmware comes in. If you own the device in question, and pull the firmware right out of it, there's no question that's your right as owner of the device.

      The problem here is that using binary garbage is against the spirit of the GPL. I could make a GPL'd version of a short C program that reads in a bunch of opcodes from a large array and executes them, resulting in a full-featured (browser/word processor/database/widget/whatever). Is this program open-source? Not really, but technically since it is under the GPL, Debian would allow it. They're now changing that position, and saying that this does not in fact count as open-source software, and they do not want it in their distribution.

      Doesn't really seem like that big of a deal, unless I'm missing something?

      Freedom never really seems like a big deal. I constantly hear people berating RMS, but contrary to popular belief, there is a purpose behind the things he does and says. Same with the Debian project. I agree it is probably going to be frustrating and stupid in the short term. But most of these strange, philosophical sort of decisions are all about long term goals and this one is no exception.

    3. Re:Let me see if I've got this... by Make · · Score: 4, Insightful

      Your point is wrong.

      You are allowed to put non-free firmware into the kernel and use it for yourself. But you are _not_ allowed to distribute this kernel, unless you license the firmware under GPL. Read the GPL carefully. Derived work has to be licensed under the same conditions as the original work - which is GPLv2 for the Linux kernel code.

      Which way you insert code - either GPL code into non-free code or the other way round - simply makes no difference.

    4. Re:Let me see if I've got this... by squiggleslash · · Score: 3, Informative
      The GPL offers no restrictions on what code you can put into the GPL'd project. If you were putting the kernel into a non-GPL product, then that's definitely a GPL violation, but not the other way around. So, if you are allowed to put the firmware binary code into the kernel, through fair-use, a license, whatever, then it's fine to do that. If you're not licensed to do it somehow you're (to use the popular vernacular) stealing. This is probably where the dynamic-pulling of the firmware comes in. If you own the device in question, and pull the firmware right out of it, there's no question that's your right as owner of the device.
      Erm, probably not.

      If you redistribute a GPL'd program that you yourself do not hold the rights to, you must release full source code. You can't say "Well, I never had source code to this module that I added, therefore I'm not releasing the source for that", it has to be everything.

      The reason I say "you yourself do not hold the rights to" is that a copyright holder, obviously, is not bound by their own license. But you and I and even Linus these days are bound by the GPL wrt Linux, because the copyright on Linux is shared amongst a large number of parties.

      Now, everything thus hinges on the redistribution part. If an end user grabs a module with a binary portion, inserts it into their kernel, and limits their use of it to that, then that's fine.

      If I find all the copyright holders to Linux, buy the rights, and then release Squigglix under the GPL, with a binary portion, then that's fine too, because I'm not bound by the GPL.

      If someone tries to redistribute Squigglix under the GPL (ie they're not asking me first, they're just looking at the COPYING file and agreeing to the conditions), then they're violating the GPL, because they're not releasing full source.

      If someone tries to redistribute Squigglix with my permission (ie they've asked me first, or there's a thing tacked on to the COPYING file allowing the source to be withheld for code I passed on to them in binary form only), then they're not violating the license, because the modified license allows them to do so.

      If someone tries to redistribute Squigglix under the GPL (ie they're not asking me first, they're just looking at the COPYING file and agreeing to the conditions), but before they do they remove the binary-only portion, then they're respecting the GPL, because they're not releasing full source.

      The GPL is very clear about this: If you redistribute and are doing so only because the GPL allows you to, you must include source. If you don't include source, even if you never had it you are violating that license.

      Linus's COPYING file does include a get-out in that user-land software does not have to be GPL'd, which is why Debian's saying it's ok to have a firmware binary that's loaded by a user-land program. But the kernel itself really is GPL, and it has to be distributed under the normal conditions of the GPL. Anyone currently shipping those drivers that include substantial binary-only source-unavailable portions, such as those with binary-only firmware code, is violating the license if they're shipping it with the rest of Linux.

      --
      You are not alone. This is not normal. None of this is normal.
  4. Re:This only hurts Debian. by squiggleslash · · Score: 4, Insightful
    People simply expect their hardware to work, without having to jump through massive hoops.
    That presumably can be solved by making the user-space firmware loading process as painless as possible, maybe part of a larger infrastructure dealing with module-based device driver loading and configuring.

    In some ways this is what Linux needs. Darwin's system, where kernel extensions are packaged up with XML files that describe capabilities, requirements, etc, strikes me as a good model to follow.

    As far as Debian's choice with the kernel as-is, I honestly don't think they have much of a choice. There are licensing issues with including binary-only code in the kernel, I see nowhere in the GPL that gives a get-out if that binary is supposed to be run on a different CPU. Right now the practice is tolerated, but it probably shouldn't be.

    --
    You are not alone. This is not normal. None of this is normal.
  5. Re:What if that's the "best" way by squiggleslash · · Score: 3, Insightful

    Your comparison would be valid if the firmware files also included the source to that firmware, just as GCC comes with the Bison file and the file generated by Bison.

    --
    You are not alone. This is not normal. None of this is normal.
  6. Re:Hmm.. by Slowping · · Score: 4, Interesting

    I agree that this is going a little far.

    The firmware code doesn't get executed by the CPU, and thus in a sense it doesn't get executed by Linux. Firmware is used by an off-board processor, and thus I don't see a GPL violation here.

    Consider if a piece of hardware needed a Magic Number string to start up. No code, no logic, no meaning; just a magic number required to activate the device. Can't we consider the firmware code as just a magic number? After all, Linux doesn't interpret or execute it.

    --
    (\(\
    (^.^)
    (")")
    *beware the cute-bunny virus
  7. Re:Hmm.. by Tonetheman · · Score: 3, Insightful

    I second that... hell we should not run linux on any computer where we cannot have an open source bios.

    Debian has to be the biggest bunch of holier than thou morons... why would you intentionally make it hard on the user of your software to get something done?

    And I am not even trying to troll on this. It is a valid question. There is no good reason to do this other than a few zealots who are SO out of touch with the rest of the world.

    If I was using Debian in a commercial setting that required the use of one of the "bad" drivers... what would my choices be? Stop my business until the "evil" drivers magically become open source? No I tell you what I would do... I would switch distros or even worse jump to Windows where the damn things are supported and probably already work.
    Debian is doing nothing but causing problems just because they can.

  8. about time by mcelrath · · Score: 4, Insightful
    It's about time someone stood up to this issue.

    This could be a very good thing for linux. It could encourage vendors to provide updated firmware that can be installed from userspace, without requiring a kernel patch. It could encourage vendors to provide firmware at all designed for linux. For some other vendors it will surely encourage them to release the source, which will only lead to a massive hack-fest and fast improvement in capabilities of the firmware, which the company can negotiate to include in their windoze product. It seems to me separating firmware is win/win for both vendors and users, even if it is rocky while the separation is taking place.

    -- Bob

    --
    1^2=1; (-1)^2=1; 1^2=(-1)^2; 1=-1; 1=0.
  9. Re:This only hurts Debian. by squiggleslash · · Score: 3, Informative
    Doesn't this limit the programing languages that can be used to develop the code? I mean you can only include a finite number of compilers.
    Not really, you ONLY have to include source. You're not forbidden from including a binary (or "compiled version") in addition to the source, and indeed GCC, which uses a Bison generated grammar file, is one example of this - it comes with both source and post-Bisoned file so that you don't have problems should you not already have Bison.

    Debian would be happy with firmware updaters as long as the source to the firmware is available and code to compile the firmware and update the module's binary with that firmware is available. The problem, at the moment, is that rarely is the firmware available.

    --
    You are not alone. This is not normal. None of this is normal.
  10. Legal acts by nuggz · · Score: 3, Interesting

    The GPL does not permit this bundling. It is clearly linked, and it is not the source code.
    To distribute it like this is a violation of the GPL.
    Your choices in your situation would be to add the driver yourself. The supplier could likely write a trivial patch to install it into your kernel source. You could then freely use it.

    You're complaining about debian holding you hostage when it is actually the supplier of the closed module who is causing the problem. They could always release a GPL compatible driver.

  11. Re:What if that's the "best" way by Marillion · · Score: 5, Insightful
    I'm sorry, I wasn't as clear as I could have been. I agree, vendors should do all that.

    But, a point I was trying to make, what if the toolset required to generate isn't open? There could a dozen reasons for that from technical (the device's CPU is not supported by GCC) to political (tool used by vendor is closed - either by the vendor or by NDA).

    Now were back to the discusion of device proliferation and hardware compatability. This point is already begin discussed quite well with one noteable exception.

    What about vendors who lock their code into on-board EEROM chips? That class of vendor surely covers over 95% of them out there. Think about it CD-ROM drives, Video card 3D engines, Printers, Phones, Music Players. These all have on-board systems. But if the firmware is locked in the device for the most part, it's out of sight, out of mind. But, when you get right down to it, there's no difference between a hex-dump in a kernel file or code locked in on-board EEPROM.

    The "Great Moment" that launched Richard Stallman's crusade to liberate software was when his trying to get a printer manufacturer to give him the source code to a buggy printer so he could fix those bugs. They said no. Not long after that incident and watching computer makers "steal" X11 for their own versions of UNIX, the GPL was born.

    --
    This is a boring sig
  12. Although the sentiment is good... by getnuked · · Score: 3, Insightful
    ... this will only hurt debian in the long run.

    How does RMS expect us to compile a kernel for our architecture and for every architecture which we need embedded firmware for? We could end up being required to have dozens of different compilers (think ARM7, i960, MIPS...), not to mention libraries and other tools installed. Many of these are closed source, or are restricted from distributing the source. A good example is the DSP I am using at an optical controller company - the silicon vendor is the only source of the compiler which costs $4000 U.S., not to mention that many of the libraries we use are not available in source form.

    Trust me, the embedded market is a completely different picture than the desktop when it comes to development. Even if the firmware source was released it would do you no good.

  13. thank debian for taking up the issue by Splork · · Score: 3, Interesting

    while we may all be fine and happy with drivers that work using vendor supplied binary-only bits of firmware inside an otherwise open driver, those vendors are not guaranteed to continue supplying that firmware or keep it free forever (as if buying their hardware isn't enough!).

    keeping that out of the kernel and as something to be loaded by hotplug is the best that can be done for devices that the vendor won't (and often can't) provide full source for.

    the messier issue is where do you draw the line at what is allowed and what is not? is a sequence of 20-odd magic values written to proprietary chipset registers any different than 800 bytes stored in a string and sent to the device on startup? both are equally obfuscated but only one is likely "code" in any sense due to its size.

    less and less devices will bother to have any rom and firmware on them in the future as a flash rom takes space and costs money and is not needed when the OS can load it for you. tackle this now!

  14. Every time I hear someone whining about Debian... by Just+Some+Guy · · Score: 5, Insightful
    ...I want to shake them until they stop. When you come down to it, mainly Debian exists for one purpose: to provide a solid, completely Free operating system. If the license on a piece of software can be interpreted as not giving freedom to the end user, then Debian cannot include that software without violating it's formal constitution.

    Q: "But why don't they include the accelerated NVidia driver?!? That would be useful!"
    A: Because it's not Free.

    Q: "But why don't they include qmail?!? That would be useful!"
    A: Because it's not Free.

    Q: "But why don't they include pine?!? That would be useful!"
    A: Because it's not Free.

    Despite that, every time Debian removes (or refuses to add) a piece of non-Free software, the "pragmists" queue up to swear that Debian is irrelevant because they don't care about market share, or that they're a bunch of extremists.

    Understand this: Debian has a very explicit social contract with their users. If you continue to be surprised by their strict adherence, then either 1)you need to accept that they will always side with Freedom over pragmatism, or 2)you have a seriously warped worldview that causes you to be mystified by integrity. Either way, find something else to gripe about.

    Debian is Free and increasingly popular among those of use who share that value. Every time they make a difficult decision like this, even at the expense of practicality, I respect them even more. Even if you hate Debian, you still benefit from their hard-line observation of their ideals every time you execute a bit of Free code that exists because they otherwise would have rejected it from their distributions.

    I just don't why some people are still surprised each and every time. A real news article would be "Debian includes Qmail in 'main'". Now that would be a reason to criticize them. This is not.

    --
    Dewey, what part of this looks like authorities should be involved?
  15. Re:Hmm.. by mbanck · · Score: 3, Insightful
    In other words, that binary data could very well be the PREFERRED form of the firmware for everyone but the manufacturer, regardless of one's religious adherence to the GPL.

    If the firmware really is the preferred form of modification and is (along with the rest of driver) GPL'd, everything is fine. Of course, this is a bit hard to check, but talking to the vendor might help here.

    But keep in mind that we are talking about the preferred form of modification here, from the POV of the vendor.

    Michael

  16. Debian's done the right thing by Anonymous Coward · · Score: 3, Interesting

    It's amazing how inconvenient it can be to stick to one's principles. In this case, we have binary globs being shipped in the kernel. The question isn't about whether you're allowed to use them as the end user. You are. The question isn't whether this is a GPL violation. It's not.

    Normally we think of the kernel as being one package licensed under the GPL. Instead, if we take Torvalds' claim as gospel (and we can since it's estoppel), the kernel is GPL'd but ships with non-GPL'd parts. This is no conflict; the firmware is not a derived work and need not be covered under the GPL. As long as Torvalds has the right to redistribute those binary blobs, under any license, then he can distribute them with his kernel.

    Debian, however, has a more difficult decision. The Debian Free Software Guidelines (DFSG) dictates that "The program must include source code..." and this clause applies as much to firmware as it does to the kernel core.

    It's easy to criticize Debian as being overly pedantic without due concern for their users, or to say that they aren't being pragmatic. Instead Debian alongside hardline Free software advocates such as Stallman himself are being very pragmatic; their efforts of refusing non-Free software promotes the continuing development of Free software. They are consistently working towards a world of Free software, and pragmatically, compromise is a step in the wrong directory.

    Maybe the code isn't shipped because we don't have compilers that will compile it. Obviously, the solution isn't to ship binary firmware with the kernel, the solution is to author a Free software compiler for this architecture! Or at least a GCC backend.

    The other reason for Debian to be extremely pedantic about legal issues which is commonly overlooked is their dependence on the goodwill of their ftpmasters. The ftpmasters are the group of ISPs donating storage and bandwidth to Debian. Debian offers these people a guarantee: debian-legal (and lawyers with parent company Software in the Public Interest (SPI) are prepared to prove that the ftpmasters do indeed have the rights to redistribute all Debian software. Now, can you prove that with the kernel firmware? What license does it fall under, since it can't possibly be the GPL without source?