Kernel Maintainer Kills Philips USB Camera Support
outanowhere writes "The author of the Philips webcams kernel module has thrown in the towel and quit providing the pwc and pwcx kernel modules which make using Philips-based USB cameras such as those from Logitech and Philips possible with Linux.
According to the author, the last straw was when a kernel maintainer changed his pwc module to make using the binary-only pwcx compression module impossible.
It is a victory for obsessive kernel-purists but a major loss for all Linux users."
For all of you who wonder what we mean when we say "zealots make it hard for businesses to take F/OSS seriously", this is what we mean.
Yes, all Linux users who care about that particular module.
Itt's not like everyone in the world own a Philips USB camera.
Yes, yes. I know what's the point. Making it harder to include binary carbage in the kernel makes it harder to provide modules for proprietary hardware solutions.
But in the long run, do you want to have third party binary carbage in YOUR KERNEL?
No way to check out what's in there. Except perhaps reverse engineering, which isn't an option to everyone. Programming is hard. Reverse engineering is harder.
Bot Assisted Blogging
I met the maintainer once (although he lives relativly close), nice guy, but I kinda think this is just a useless move to annoy him, there are many fully binary only modules out there and he makes the effort to make opensource what he can (NDA) but provides a binary only module (on his own website) to add some more functionality (larger image/higher fps).
Sad, really sad. It's a lose-lose situation, and the biggest losers are linux users [who have pwc-based webcams].
Anyway, the last release files can still be found online, backup fast (e.g. gentoo distfiles : pwcx-8.4.tar.gz, usb-pwcx-8.2.2.tar.gz).
#include "coucou.h"
The module was fully GPL compliant but provided a hook where you could attach a binary-only part (this part wasn't necessary for the module to work, it just added more functionality).
So the module was completely GPL compliant but some people thought the hook to be "impure" or something... and removed it. After it has been three years in the kernel tree. The author is right: this is a little late to make a point !
That's zealotry in my book as the module did meet the legal requirements.
There's already a "tainted" identifier for modules - it's purpose is to tell you when your kernel's been tainted from an Impure Source(tm) - lsmod will tell you if your kernel's been corrupted by a non-GPL type module. Oops's from a tainted kernel a simply not accepted by the kernel maintainers as they can't bugtrace with them.
See What does it mean for a module to be tainted?
So why the hell can't they all just agree to mark it as tainted and be done with the whole hoo-ha?
You are in a twisty maze of processor lines, all alike.
There is a lot of hype here.
Talk about flagrantly showing your bias. How about we rephrase that last sentence as...
This is only a loss to those silly people who think that their $50 web cam is so damn important that all of the kernel developers should support binary interfaces to cater for undocumented video hardware. The USB hook for binary modules was a real detriment to the USB subsystem. It was taken out for technical reasons.
As for this..
Talk about immature. He could leave it there until a new maintainer stepped forward but he'd rather have a dummy spit and stamp his feet.
What a wanker.
While the Philips binary seems to be stable, if an exception to it were made other binary modules could be argued for. In fact, that's what is happening now; more and more kernel patches are being made available with binary-only parts.
There are two solutions to this;
Converting USB kernel modules into user space tools happens regularly. Not as easily done as said, and it's less prestigious, though as a technical solution it does solve the kernel dispute.
Not having the source for these devices is silly, though. Do they intend to sell hardware or drivers? By releasing the source or the specs (at a minimum), Philips would gain much and loose little. Someone else can go on a rant to fill in the details...I'm done!
A firewall can not protect you from yourself. Turn off what you do not need. Do not use the firewall to do your work.
-grin-
Kernel maintainers see linux as a server platform... and that seems to be that... webcams don't really make headway in the Apache-server linux arena which is what Linux is really mainly being used for apart from embedded stuff.
Sure, perhaps they have a point? A kernel-hook here and a direct access there, and next thing you will have something like DirectX under linux! The Horror! A Security Nightmare!
But then there is also the practical approach... if they remove these things, then there *should* be alternatives!
Otherwise I will stop using Linux as my development platform as it's not consistent...
-sigh-
I've been using the pxc.o driver of Allesondro Rubini for some time now, and even that is a bit of a pain to install... One has to modify gub configs with kernel params etc...
The decompression part of this driver is in the kernel. This allows applications to get at the uncompressed (or "decoded") videostream through the v4l (video4linux) programming interface.
That's all fine and dandy, you may think. Not so. Nowadays applications shouldn't use these kernel interfaces at all. They should use media frameworks like GStreamer. If they did, the driver core could remain in the kernel, while the decompressor would be a special video-source plugin for GStreamer that talks to the kernel driver through some private interface.
The decompressor code could remain in userspace, where no one gives a flying fsck about its license. Applications would be more portable, and could use any video source instead of only v4l devices. Plus, it would be much easier to reverse engineer that damn decompressor, put it under the GPL, and be done with it.
Wenn ist das Nunstruck git und Slotermeyer? Ja!... Beiherhund das Oder die Flipperwaldt gersput!
Regarding point a), Linux has a hisotry of allowing binary modules, provided that there is reasonable evidence that they are not derived from the kernel code. This allows things like the andrew filesystem modules and various other binary modules to exist. The tainted flag is to mark them as non-debuggable. The primary module in this case is licensed as GPL, so that's not the issue. It debateable (as we don't have the source), whether the bianry module qualifies as being derived from the kernel or not. If a strong case can be made that it is derived, distributing under a non-GPL license is illegal. Non-one seems to have made this claim, so it is probable that this is not an issue.
b) on the other hand, is very much an issue. The GPL code provides a specialised hook for the binary-only module. It would be pretty difficult to argue that this does not consitute linking under the FSF's definition, and as such, the combined work must be distributable under the GPL. Since this is not the case, there is a licensing problem.
Now, if the binary only module communicated with the GPL'd code via standard interfaces (run as a userspace program, or whatever), the linking issue would not apply. This is not the case.
This is not zealotry. The Linux kernel is GPL. With that, come certain limitations. Especially with accusations (SCO) flying about, being very careful the kernel follows the legal requirements of the GPL is important.
So what can you do about it? Not much, unless the kernel maintainers ease up a little, and stop being such fundamentalistic turds.
I spittled my cereal all over my desk!! thanks a lot!
I love the misguided comments in this story. In particular, I like the "most users don't care what is in their kernel, so we shouldn't care that we're taking away freedoms from all (including those who do care)".
Some comments from the guy who actually did this (http://www.uwsg.iu.edu/hypermail/linux/kernel/040 8.3/0270.html):
So, just to summarise, a) removing the hook doesn't stop the driver working, b) there isn't really anything stopping him publishing the code as free software. Basically, he just wants to take his ball home because he thinks he should be allowed to put hooks for proprietary modules into the kernel.
Is it the first time he's threatened to do this? No (http://www.uwsg.iu.edu/hypermail/linux/kernel/010 5.3/0365.html):
Linux doesn't need proprietary drivers, it doesn't need to compromise freedom, and it certainly doesn't need people to try to press the issue by holding code hostage. And, aside from all the facts that this guy is acting an arse, there are also questions over whether or not the hook is legal (Linus' point of view of derivative works of the Linux kernel is quite clear - they must be GPL'd), and the decision to remove the hook was partially a technical one anyway (only one driver is using it).
Yet, we are still going to get people holding this up as an example of the GPL preventing Linux from "going enterprise" or whatever. Guys; shove it - for Linux to be "accepted by business" doesn't mean that developers should bend over for whatever perversion proprietary companies want. Jeesh.
"Elmo knows where you live!" - The Simpsons
Still, I disagree anyone, except outanowhere and Nemosoft Unv, are being "zealots" in this case. There are perfectly good reasons for avoiding having proprietary, closed, code run at a kernel level with kernel privileges, and by Unv's own admission, there are other ways of achieving the same thing. He just doesn't want to do them:
This really is a matter of deciding whether he's maintaining proprietary code to operate a proprietary device, in which case, unfortunately, he's going to have to seperate his work from everyone else's, or whether he's not in which case he's going to have to press Philips harder to get out of the NDA. Ultimately, one way or another, he has many, many, options available to him that will ensure his camera will work under Linux. He's chosen to reject all routes except one that makes a lot of other people very uncomfortable. I'd say he's far more guilty of "zealotry" than the kernel maintainers he flames.You are not alone. This is not normal. None of this is normal.
So what's going to happen next? Well, I'm pulling the plug completely. I'm cleaning up this website, removing the downloads, documentation, FAQs, etc. I'm discontinuing the webcam@ mailbox, and I'm going to request (well, demand) that PWC will be removed from the kernel tree. I do not want a crippled driver in the kernel with my name attached to it. Last, I'm going to remove the entries in the bugtracker.
It's fine to lose interest due to political reasons and want to stop maintaining it. But this is pretty lame. Demanding that his code be removed from the kernel? (I expect the license will make it impossible to really "demand" that.) Getting rid of all the existing downloads, documentation and FAQs? It sounds more like a tantrum to me.
Repling to my own post, yeah, yeah..
So, I just read a few of Mr. PWCX's additions to the maillists and I've come to think he's a being a real asshole. At the very first mention of removing his hook he goes balistic and threatens to remove all his work. He's probably only doing it now because he threatened he would in the first place.
And so, yet again, the person left with the most suckage is the average linux user. The kernel team is a hair bit restrictive, driver devs morph into uber-elitist pricks and yank their code, and people are left with less or poor hardware support.
Fuckin' crazy.
I'm against picketing, but I don't know how to show it.
Yes, poor poor philips. They put so much time and money into this... oh wait no they didn't. They didn't put any money in. They didn't even put any developers in.
They let an outside guy write a _proprietry_ _binary_ driver under an NDA. Big deal.
How many other webcam companies let another guy write a prorietary driver under an NDA?
I can't think of any.
Realative to the situation, it is a big deal.
I'm against picketing, but I don't know how to show it.
It *is* a tantrum.
He can't demand back what he has already GPL-licensed. He can request it to be evicted of the kernel, and his request will probably be granted... Then someone else will take pwc and maintain it as a kernel patch. The interesting thing is that it seems not to exist any license information for pwcx.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
3 years ago, when he was asked to take its image format conversion out of the kernel:
here's the message
Since the Philips webcams work so well (I have half a dozen myself in various applications, most with the 9.0 beta 2 driver), I'm surprised nobody has ever attempted to reverse-engineer the USB traffic and create a completely open, non-tainted-by-NDA decompression module.
It wouldn't be the first time Linux developers had ignored an uncooperative device manufacturer.
...laura
One ironic twist is that LavaRnd used only the PWC (open source) module. We did NOT use the PWCX (binary-only) module. Our hotplug script did an rmmod of the pwcx module. We discovered that the PWCX module reduced the entropy that the webcams provided. The PWCX module, when loaded, made webcams a poorer entropy source.
LavaRnd used the entropy provided by the actual hardware. Our analysis showed that PWCX was in effect "faking" the larger image sizes by taking, say the true 160x120 pixel CCD output and expanding it to something like 640x480. The expansion was as if a 2D smoothing function (such as a 2D spline?) filled in the pixels in between. Each of the original 160x120 hardware pixels was turned into a 4x4 pixel grid where the edges of the grid were adjusted to fit better with neighboring 4x4 pixel grids. The PWCX appeared to support a higher frame rate because the PWCX module "decompressed" the true hardware pixels and filled in the pseudo-pixels on the other side of the USB wire.
We discovered the PWCX effect while taking entropy measurements of webcam frames. Using PWC alone in 160x120 mode, the webcam produced slightly more entropy than 640x480 PWCX mode. The PWCX module was not adding real image data to webcam frames, it was just smoothing and filling in data that looked good enough to a human. However, PWCX could not fool the math ... :-)
The PWC maintainer says on his web site:
The PWC maintainer's position appears to be that if you cannot use PWCX, then PWC is worthless. From LavaRnd's point of view, PWCX (the binary only module) adds no value and in some ways reduces the Logitech QuickCam's value as an entropy source.
We (LavaRnd) do not want to take sides in this PWC/PWCX kernel dispute. If this posting appears that way, then we apologize. The PWC folks have been mostly patient with our unusual use of their webcam modules. The Linux kernel folks have provided us with a wonderful platform for LavaRnd. As for ourselves, we put a lot of time into helping end users use the PWC module in older kernels.
Here is our advice request:
The LavaRnd project would like to see the PWC (open source) module remain in the Linux Kernel. We would like the Linux kernel folk to not honor the maintainer's request to remove everything. We want the support of PWC without PWCX to continue in the Linux Kernel. What is the best was to make this position / request known to the key Kernel people in the hopes they will PWC as part of Linux?
And does every chunk of the Linux Kernel need an active maintainer? Could PWC remain in the Linux Kernel without the original maintainer's support or would someone such as ourselves need to step up and offer to maintain it?
chongo (was here)
I have to agree with the other respondant. I understand how irritating it is for you -- after all, there are no code style constraints on Windows drivers -- but the only software that makes it into the mainstream Linux kernel (or bundled with the Windows distribution) is the very good stuff, and unlike on Windows, on Linux the code, not just the binary, is a factor in the quality.
I *do* realize that this could cause major problems if there are internal reasons for using a particular style or -- God forbid -- if you are trying to get a driver into both Linux and BSD or something similar. I'm not sure that there is a good solution, for trying to get open source drivers included in a kernel. That's an interesting point, though.
May we never see th