# appears that pwc/pwcx will be discontinued

## warthog

have you all seen this?

from the website:

 *Quote:*   

> Linux support for Philips USB webcams discontinued
> 
> Okay, this is not going to be pleasant. I've decided to discontinue supporting PWC, the Philips webcam driver for Linux. The reason is a continual disagreement between me and the kernel maintainers on the binary-only part that PWC has, in order to use the webcam to its full potential. This has now reached a point where I'm throwing in the towel.
> 
> 

 

Personally, I think this is a pretty rotton course of action.  From first glance, it appears that we [as users] are screwed.

----------

## darkangael

Not to mention that this trend may eventually mean no more ati-drivers and nvidia-*!

----------

## dannycool

No, it won't. The drivers from ati and nvidia don't exist within the official kernel source tree; they're separate modules. The kernel developers have absolutely no say on which modules you install; but of course they do have the authority to exclude contributions from the kernel source tree.

From the web page that was mentioned:  *Quote:*   

> I've considered the alternative, taking PWC/PWCX out of the kernel and supporting it solely as an add-on module, but rejected it. It would mean a demotion of PWC to a 2nd rank module, 

  This looks more like an ego problem on the part of the PWC developer to me. This is completely so not how open source works. This guy is basically saying he demands custom features in the official kernel sources just to make his software work, while he could perfectly well just continue developing the module outside of the official source tree.

----------

## darkangael

It's true that they are not in the kernel tree, but if the trend continues, it could mean the removal of the feature which allows tainted modules to be loaded from the kernel. Sure, you could patch it back, but it would kill linux for those who only ever wanted to use the binary distros such as redhat or mandrake. Linux would once again be "geeks only" at least for games. It would be a setback for anyone who wants to see linux proliferate further than just an elite group (those who are not afraid to patch and compile their own kernel).

----------

## darkangael

 *dannycool wrote:*   

>  This looks more like an ego problem on the part of the PWC developer to me. This is completely so not how open source works. This guy is basically saying he demands custom features in the official kernel sources just to make his software work, while he could perfectly well just continue developing the module outside of the official source tree.

 

They took a vital part of his driver out of the module (the part that loads the driver). He isn't requesting custom features, he is writing a driver from which they removed what is most likely the best part! Who wouldn't be pissed off at that.

----------

## dannycool

They took it out of the module included with the kernel sources! This is a perfectly legal policy decision. They're trying to make linux more safe. He IS requesting a custom feature where the kernel would load binary code from someplace on your hard disk. Code that has not been audited by anyone and where nobody knows what the hell it does. It's fine if you want to install that, but I personally prefer the kernel source tree not to include hazardous hat tricks like that.

NOBODY in any way limited the possibilities of the author with a separate module. It is VERY unlikely they would ever do that. Had he chosen to continue support for his driver as a separate module (which is in NO WAY any less of a qualified module than one that's included with the kernel sources), everybody would still be able to use the driver.

He discontinued supporting the driver just because of a disagreement with the kernel maintainers, while there's a perfectly good solution to his dilemma which would not require any custom features within the kernel sources.

It's just childish. "Mommy, Timmy won't include my LEGO house in his city so I'm discontinuing support for LEGO in my room altogether."

----------

## JackBak

Couple of thoughts here,

1. DAMN! I'm in the middle of writing a GTK+ application with these two drivers.

2. I see the kernel folk's position on the hook to the PWCX module - which I think is being forwarded on the basis of "purity" but OK. One doesn't know what kind of slippery slope one is on at the beggining of the slope, maybe allowing the hook would lead to bad things.

I also see Nemosft's point of view - he has apparently worked (on the Linux community's behalf) with Philips wherein they made him sign a non-disclosure agreement (the NDA he refers to on his website). There seems not much he can do about open sourcing the PWCX half of this "driver". I do agree with him that without the compression module (PWCX) it really hobbles the web cam. Without the PWCX you can't get 640 x 480 at any frame rate.

Note: remember this PWC/PWCX combo is not just for the Philips it also handles the Logitech and Creative (and more) web cams.

3. I don't understand Nemosoft's position about not wanting to support the driver and PWCX module as a  *Quote:*   

> second rank module

  - hell isn't that what the nVidia is, and many of us use that!

Once again, DAMN.Last edited by JackBak on Thu Aug 26, 2004 2:50 pm; edited 1 time in total

----------

## darkangael

I guess it all depends on intent. If it was just to make the kernel "safer", it might perhaps be a somewhat sane decision (except that it's probably no more unsafe to do that than to load a binary-only module). From what the author of that page says, though, it sounds a lot more like they just rejected it because it isn't open source. Perhaps if the kernel maintainers say something on the matter things will be a little clearer, so I will wait until I see something from their end before I continue  :Wink:   Either way, the decision sucks for people with webcams. 

Perhaps it might be possible for someone else to maintain the driver in its old form though? What was the license on the binary part of the driver?

----------

## dannycool

No it's of course not any more safe to load a binary-only module; the point is that it is safe to use the linux kernel if you need to install those modules separately, while you can rely on the kernel sources to not do any voodoo magic like that.

----------

## Acetik

the probleme is that when u decide to use the pwcx modules, the pwc driver in the kernel permit pwcx to have access to the kernel directly without being autorized by the kernel. So there is a problem, it's a backdoor

----------

## darkangael

 *dannycool wrote:*   

> No it's of course not any more safe to load a binary-only module; the point is that it is safe to use the linux kernel if you need to install those modules separately, while you can rely on the kernel sources to not do any voodoo magic like that.

 

Wouldn't it be easier to just require a module option (pwcx=yes) rather than remove it completely? By default, the kernel wouldn't do anything with the binary stuff, unless you explicitly told it to in which case you accept the risk knowingly (same as you do when you load any other binary driver).

----------

## JackBak

Acetik,

Do the nVidia and ATI binaries provide backdoors as well?

----------

## darkangael

If you can replace the pcwx module itself, then there is every chance that the person has enough access  (e.g. root) to be able to replace any other kernel module on the system as well.

----------

## dannycool

JackBak, they provide the same kind of backdoor - in fact any module does. As soon as you get permission to load modules you can execute code in kernel space. This is why many security howtos say that you should disable modules on production servers (where they aren't usually needed anyway).

The difference is that with the nvidia and ati modules, there's no extra feature needed within the kernel. As long as you have loadable modules turned on you can use them.

Pwcx adds a *second* backdoor of the same type.

The policy is just that modules that require such trickery should be what I just wrote - modules. 

If anyone could contribute code that adds backdoors, at some point it would become very hard to track these potential loopholes. It's a LOT easier if standard kernel code just doesn't do that and users have to install separate software to enable them.

----------

## JackBak

Ok dannycool, I see your point. Slight language correction, I went back to the README for pwcx and it is a module, you've got to do "make module make modules_install" so that's OK. The pwc part is not a module and I think that is your point.

So I am in agreement if you mean to say that the pwc part should become a module. Which actually was what I referred to in my point 3. above.

----------

## darkangael

 *JackBak wrote:*   

> Ok dannycool, I see your point. Slight language correction, I went back to the README for pwcx and it is a module, you've got to do "make module make modules_install" so that's OK. The pwc part is not a module and I think that is your point.
> 
> So I am in agreement if you mean to say that the pwc part should become a module. Which actually was what I referred to in my point 3. above.

 

pwc isn't a module? I was under the impression that pwc was a module, pwcx was a module and pwc called pwcx, just in a non-standard way, although it is quite possible that pwcx isn't a module just an object file (which isn't all that different to how a module is made anyway afaik).

 *Acetik wrote:*   

> the probleme is that when u decide to use the pwcx modules, the pwc driver in the kernel permit pwcx to have access to the kernel directly without being autorized by the kernel. So there is a problem, it's a backdoor

 

Actually all the hook appears to do from the description is give the pcw kernel module access  to pwcx rather than the other way around (pwcx is just a function stored inside a .o file).

----------

## JackBak

darkangel,

Once again language diffs (on my part) - pwc is not afaik anything in /etc/init.d nor is it modprobe'd. It is part (because it is in the kernel) of the usb/hotplug sequence that is loaded (?) activated (?) when I plug in the Philips web cam.

So do we have kernel modules and not kernel modules? According to dannycool a module once loaded gets kernel space to excute in. Maybe there are two types of modules and only a "kernel" module or a driver get protected space rights. I don't know, help me out here.

----------

## warthog

 *dannycool wrote:*   

> 
> 
> It's just childish. "Mommy, Timmy won't include my LEGO house in his city so I'm discontinuing support for LEGO in my room altogether."

 

I agree, and I think this also shows how this paradigm breaks the open-source model.  No-one can fork his work since he was under NDA and no-one else knows the internal workings of pwcx.  If something like this happened on another open source project, a new group of interested parties would just fork the work and continue development.

Worst case, if he really wasn't interested in working on pwcx under the new conditions dictated by the kernel team, he should have offered to allow another person(s) to work on it after they agreed to a NDA by phillips. In my opinion, this is an example of one person abusing their power.  :Evil or Very Mad: 

----------

## darkangael

 *JackBak wrote:*   

> darkangel,
> 
> Once again language diffs (on my part) - pwc is not afaik anything in /etc/init.d nor is it modprobe'd. It is part (because it is in the kernel) of the usb/hotplug sequence that is loaded (?) activated (?) when I plug in the Philips web cam.
> 
> So do we have kernel modules and not kernel modules? According to dannycool a module once loaded gets kernel space to excute in. Maybe there are two types of modules and only a "kernel" module or a driver get protected space rights. I don't know, help me out here.

 

If you look deeper into the process that hotplug goes into, I think you will find that hotplug does the 'modprobeing' for you. Plug your camera in and then do an lsmod. I know for sure that you at least CAN modprobe pwc, and that modinfo gives valid data for it. pwcx is the same, except that you don't get the source for it.

----------

## darkangael

Here is what I have gleaned from my research:

Both pwc and pwcx are kernel modules. pwc.ko has a GPL license and is included in kernel 2.6.7 as part of the kernel source. pwcx.ko has its license listed as: "Proprietary. See http://www.smcc.demon.nl/webcam/tainting.html" and can be downloaded, untarred and placed in the /lib/modules/`uname -r`/kernel/drivers/usb/media/ folder (or at least that is where I think it goes).

The problem appears to be that(again from reading his descriptions, I used archive.org to read the page linked to in the license field as well as reading the actual page at http://www.smcc.demon.nl/webcam/) the pwc module calls functions from the pwcx module if present, rather than implementing them in the open source driver.

This looks IMO to be more than just someone complaining about lego, and to my eyes doesn't look at all like a "custom kernel feature" or a security hole. It looks  a lot like GPL puritanism in a form which can only harm the prospects of further support from vendors who do not wish to open source their intellectual property. This kind of behaviour can be just as harmful as the behaviour of MS (instead of trying to kill all open source, they seem to prefer to kill off everything that isn't if possible). I personally believe there should be a balance.

I don't think the author of the module is "abusing power" so much as he has given up on trying to fight the kernel maintainers (who in some respects could be seen as "abusing their power") on being able to give you this driver without having you jump through hoops to get it working. If you had worked for a long time on a project, given it to someone, and then had them take out the best part just because it "wasn't open source" would you still give to them?

----------

## dannycool

I don't think it's GPL puritanism. It's just that it is *very* reasonable to not include code with the kernel where you can't tell what it does.

In any case, it's just stupid to blackmail the kernel developers into modifying their policy to suit *one person's ideas* of what they should be like. Even if the kernel developers are wrong and the pwcx author is right, this is *not* how open source works. 

Especially not if you've signed an NDA and any attempt at blackmail could be understood as originating from the company that makes the device in question. I mean, honestly, what real open source developer would demand something like that and behave like a spoiled child when she doesn't get her pony?

----------

## JackBak

Thanks darkangael on the tip about hotplug doing the modprobeing. I did know that when the camera was plugged in I could do the rc-update -s thing and see it so that should have told me it was a module.

----------

## adinardi

Personally, I think that both the kernel maintainers are at fault and also the module writer. I mean what its looking like is that now Linux is as bad as Microsoft. Linux used to be about choice and freedom, but now instead of allowing users to use their hardware we're forced into this "use open-source or go away" kind of thing. I think even Linux people need to realize that there's a place for both open source and proprietary. Open source zealots are  just hurting themselves. What company wants to deal with a bunch of children complaning about something being closed.

Alas, the writer could have taken the extra time to just make it an outside module instead of making so many people's $80 cameras paperweights. Heck, if I knew enough about module development I'd sign the NDA and develop it. He could have atleast kept up a patch others could use. I hate people like this.

Well, I was 100% Linux on my desktop and all but games on my laptop. But as time goes on I realize that after making the switch and really seeing what goes on... maybe Linux and its developers still need to grow up a bit. Now I have to boot into Windows every time I just want to use my webcam. Great.... 

</rant>

----------

## darkangael

 *dannycool wrote:*   

> I don't think it's GPL puritanism. It's just that it is *very* reasonable to not include code with the kernel where you can't tell what it does.

 

He doesn't expect them to include the binary module in the kernel. All he asks is that they leave the code in that checks for the pwcx module in the kernel and uses it if it is there. There is NO good reason to disallow this any more than there is reason to disallow the use of the ati or nvidia binary modules. If there was a backdoor in the pwcx module, then it is clear that it would be a lot easier to just put a backdoor straight into the module itself. pwcx has just as much access to kernelspace as the pwc module. 

 *dannycool wrote:*   

> 
> 
> In any case, it's just stupid to blackmail the kernel developers into modifying their policy to suit *one person's ideas* of what they should be like. Even if the kernel developers are wrong and the pwcx author is right, this is *not* how open source works.
> 
> Especially not if you've signed an NDA and any attempt at blackmail could be understood as originating from the company that makes the device in question. I mean, honestly, what real open source developer would demand something like that and behave like a spoiled child when she doesn't get her pony?
> ...

 

What he objects to is that they took his module, removed the part that looks for the binary module and uses it if present (and makes it worthwhile in the first place most likely, as the support provided by the GPL part of the module sounds pretty crappy compared to what the cam can actually do), then put it in the kernel. The code isn't "unsafe", and doesn't go against any policy that any other binary only driver uses. It just happened that there was a GPL component of the driver which could be used without the binary part, so they took that and rejected the binary part because they didn't like it (it didn't suit *a small group of people's ideas*). And I am sure that what he was requesting suited many more people's ideas, he was just the only one who actually went out and expressed them (that we have seen).

In summary: The guy wrote as much of his driver as he could in GPL, despite the fact that he could quite easily have just made the whole thing binary only, he went to great effort to make as much as possible open source. The open source zealots took advantage of the fact that to do this he had to make the binary-only part separable from the GPL part and removed all reference to the binary pary, disadvantaging anyone who wished to use the driver without patching the kernel (covering many people who would own these webcams I would suspect) simply because it didn't fit *their* ideals. From what he wrote, that's exactly why the told him they did it too.

Yes, it was not very reasonable of him to drop the driver like that, but the actions of the kernel devs was not very reasonable either.

----------

## darkangael

 *adinardi wrote:*   

> Personally, I think that both the kernel maintainers are at fault and also the module writer. I mean what its looking like is that now Linux is as bad as Microsoft. Linux used to be about choice and freedom, but now instead of allowing users to use their hardware we're forced into this "use open-source or go away" kind of thing. I think even Linux people need to realize that there's a place for both open source and proprietary. Open source zealots are  just hurting themselves. What company wants to deal with a bunch of children complaning about something being closed.
> 
> Alas, the writer could have taken the extra time to just make it an outside module instead of making so many people's $80 cameras paperweights. Heck, if I knew enough about module development I'd sign the NDA and develop it. He could have atleast kept up a patch others could use. I hate people like this.
> 
> Well, I was 100% Linux on my desktop and all but games on my laptop. But as time goes on I realize that after making the switch and really seeing what goes on... maybe Linux and its developers still need to grow up a bit. Now I have to boot into Windows every time I just want to use my webcam. Great.... 
> ...

 

An easy solution until something major breaks it is (assuming 2.6.x):

```

mkdir ~/pwcbak

cp /lib/modules/`uname -r`/kernel/drivers/usb/media/pwc.ko ~/pwcbak

cp /lib/modules/`uname -r`/kernel/drivers/usb/media/pwcx.ko ~/pwcbak

```

Now, after compiling a new kernel and rebooting, simply

```

cp ~/pwcbak/* /lib/modules/`uname -r`/kernel/drivers/usb/media/pwc.ko 

depmod

```

and your cam should work just as before  :Very Happy: 

You may need to enable "module versioning support" (CONFIG_MODVERSIONS) in the "loadable module support" section of the kernel config to enable loading modules from different versions. The other alternative is to simply stick with an older kernel version or compile the module again against the latest kernel.

----------

## dannycool

I just can't see what's so difficult about maintaining the module outside of the kernel sources. There's no difference whatsoever for the author, except that he can invest time into development on his own schedule.

It's really just a bad case of "I want to be in the kernel credits" or something.

----------

## darkangael

 *dannycool wrote:*   

> I just can't see what's so difficult about maintaining the module outside of the kernel sources. There's no difference whatsoever for the author, except that he can invest time into development on his own schedule.
> 
> It's really just a bad case of "I want to be in the kernel credits" or something.

 

It probably wouldn't make it harder for him to maintain the code, but for many users, it will make it very hard for them to use the driver.

If all he wanted was his name on the kernel credits, then he wouldn't be complaining. His module is in the kernel and his name is on it, just in a crippled form.  Dropping the module was hardly the most ideal course of action to take, but his message is valid and so are his reasons; it is only his actions which are not good (but not unjustified either). 

The kernel maintainers responsible for this are making a very clear statement: "we will make it as hard as we can for binary only modules to exist as we can". This is far less like the fundamentals of OSS (which I always thought were about freedom and choice, not about restricting choices) than simply giving up and deciding it's not worth the effort to help out people you disagree with. 

He isn't blackmailing the kernel devs, because by removing the kernel hooks from the driver they are making a clear statement that they do not care about the people who want this driver to work easily and that they do not want his binary module. Removing it isn't blackmail, because they do not want it. 

He is under no obligation to give anyone his time and effort, and he has made a decision for himself not to bother. On the other hand, the kernel devs have made a decision for all linux users that they should not use the binary part (even though they have no real way of stopping them, it's no more ethical than cornering the media player market by preinstalling only your own media player and codecs in an OS distribution).

----------

## dannycool

How exactly would it be hard for the users?

Most other third party modules can be installed exactly like most other software can - based on make, or autoconf, or whatever, but definitely not difficult to do.

----------

## darkangael

If you are not  used to compiling your own kernel, chances are you do not have the kernel sources lying around. To compile and install an external module you need the kernel sources afaik, which means downloading and extracting them. And to some people compiling anything from source even if it is using automake is "hard" enough to turn them off (some non-technical people are starting to use linux, which is good as it means one day they might learn something. Turning them away just as it is being adopted is a bad thing).

----------

## dannycool

People who can't compile their own stuff are not supposed to run linux.

----------

## darkangael

You see that is the exact kind of attitude which caused this problem in the first place.

A) If we want proper support from software and hardware vendors then we need more people to use it. A LOT more. Most of these people are initially not going to want to compile from source (although many of these people may change their minds).

B) It's just plain arrogant.

----------

## dweigert

This really isn't a good day.  This really pissed me off beyond all reason.  My apologies for the previous post that was here.  I understand why the kernel maintainers are doing this, but really disagree with their methods.  

Telling the rest of us who:

 a) aren't kernel developers OR

 b) aren't skilled at coding in the first place OR

 c) bought the thing on the expectation that since the driver works and is actively developed it will stick around OR

 d) because it Just Worked

to go screw ourselves, is a bit unfair.   The average user who I want to be using linux (of any flavor) doesn't give a crap that there is a binary module.

There should have been an effort made to deal with this in a better way rather than the cluster which is happening.

Dan

----------

## fargle

Okay, next question is - does anyone have an alternate download location?  I have a QuickCam Orbit that I was going to get working on my home server so I can watch the house remotely, but I hadn't downloaded the source yet - please help!  It's a $100 camera that's a Linux doorstop without the code!

----------

## fargle

*sigh* Posted in the heat of the moment.

I would imagine that any of a number of SRPMs have it .

----------

## HotShotDJ

Assuming that this is the end of the road (at least for now) of support for these webcams in Linux... are there other webcams that I can easily purchase that will work WELL in Linux?  Are there any that will function FULLY using open source drivers?

----------

## Parasietje

Ok, now that the code for calling pwcx.ko using a hook is removed from the kernel, the solutions are:

1. Patching the kernel to provide the hook code again

BUT: the pwc developer refuses because "it's not user-friendly"

2. Creating a 'legal' out-of-the-kernel driver

BUT: the pwc developer says it's too much work to change the driver

And he thinks it isn't user-friendly. (it's as user-friendly as the nvidia-drivers)

3. Use the pwc module without pwcx

BUT: the pwc developer DEMANDS that the code be removed from the kernel...

So basically, the way I see it, the only one who screws the users is the pwc developer!

Did you read the note on his website? He says he hates the kernel maintainers for depriving users of their right for supported hardware, "so I'm pulling the plug because I'm too lazy to write a full out-of-the-kernel driver".

He even refuses to keep his _working_ code in the kernel. Let someone else do the work on the decompression algorithym, we cracked NTFS too, didn't we?

Look, I understand him for being SICK of working on the philips webcam driver. It's his perfect legal right. But why delete all of the source code? Pull the plug, but keep out an invitation for other programmers to try and improve the code. What he's doing now is just plain childish... I'm 16 and I think HE should behave more like a responsable adult...

----------

## Parasietje

 *HotShotDJ wrote:*   

> Assuming that this is the end of the road (at least for now) of support for these webcams in Linux... are there other webcams that I can easily purchase that will work WELL in Linux?  Are there any that will function FULLY using open source drivers?

 

The Philips TOUCam 2 works perfectly with the ov511 drivers. Maybe a little bit of hope for those of you who thaught it wouldn't work...  :Wink: 

----------

## waf

 *dannycool wrote:*   

> People who can't compile their own stuff are not supposed to run linux.

 

Yeah, that'll get Linux adopted on the desktop.    :Rolling Eyes: 

In the end, this fuss over kernel "purity" is killing any chance I have of getting my friends over to Linux. Converting them to open source software is easy, as there are many really amazing applications available for most platforms (like Firefox), but would Firefox be enough to have them over if it didn't work with Flash, or Java because neither of them are "open source"? No, it wouldn't, they'd drop Firefox like a hot potato.

Frankly, this is situation is petty and in the end hurts the end user. Even if the decision to remove pcw(x) from the kernel was the right one, it was handled in a manner which to call it anything less than juvenile would be an understatement.

At the time where Linux is fighting to become a viable desktop, we're removing functionality from the core of Linux? This doesn't make any sense, it's not progressive, it's regressive. This unwavering fanaticism is killing Linux's chances on the desktop.

The ideology of Linux is pretty much "share and enjoy", and the author of PCWX went so far as to sign an NDA with Phillips so he could SHARE the ability to use the majority of web-cams on Linux. The proper avenue to have open source drivers for web-cams would be to approach Phillips to take Linux seriously. At the very least maybe they could put out their own binary only (GASP!) drivers for Linux similar to the way that NVidia deals with Linux, and 

I might add that even though Nemosoft has closed up shop, if anyone needs the latest drivers (pwc(x)), PM me and I'll hook ya up. I've managed to get pwcx working on gentoo-2.6.8-r3, for those of you who might be interested.

----------

## dannycool

I don't want it to become a desktop OS anytime soon. Linux is in no way ready for that. No single person I know who can't use Windows properly (i.e. 90% of all Windows users) can make much sense out of Linux at all.

The problem here is not the kernel team, it's the manufacturer of the camera. Writing drivers for their product is their job.

And yes the author of PCWX went as far as signing an NDA with Phillips, but he is also discontinuing support for it for no reason whatsoever except that he got kicked from the kernel credits file.

Thinking about it, why *was* there a separate module anyway? If he signed an NDA why didn't he just write one module which would have been covered by the NDA, and no open source part at all? Seems to make no sense to make a module that does its job so badly it needs external binary code anyway.

----------

## darkangael

 *dannycool wrote:*   

> I don't want it to become a desktop OS anytime soon. Linux is in no way ready for that. No single person I know who can't use Windows properly (i.e. 90% of all Windows users) can make much sense out of Linux at all.
> 
> The problem here is not the kernel team, it's the manufacturer of the camera. Writing drivers for their product is their job.
> 
> And yes the author of PCWX went as far as signing an NDA with Phillips, but he is also discontinuing support for it for no reason whatsoever except that he got kicked from the kernel credits file.
> ...

 

His name wasn't removed from the credits afaik UNTIL HE ASKED FOR HIS DRIVER TO BE REMOVED. This being the case, it can hardly be said he was doing it for the credit alone, seeing as he has basically asked his name to be removed along with the driver.

The reason there was an open source part and a binary part was because he wanted to make as much of it as possible open as he was allowed. The fact that he had to sign an NDA would imply that he wrote the binary part too, it's just that he wasn't allowed to provide the source. The open part did its job perfectly, its job was to handle the parts of the driver that were not proprietary. The pwcx part (binary module) did its job just fine too. It is essentially a kernel level decompression driver, which is no worse than any of the modules listed under "Cryptographic options" or "Library routines" in gentoo-dev-sources. There is no good reason to remove the use of the pwcx driver except that the kernel dev involved is a purist who doesn't want people having the choice of using a binary module. The only reason the ati/nvidia modules still work is that the functionality was locked into the kernel and they aren't allowed to remove it (and it would probably break existing non-binary only modules).

----------

## Nate_S

From what I understand, the terms of the GPL don't allow any binary-only modules to be distributed with the kernel.  I understand if the kernel maintainers see having a hook for the express puropse of using one to be walking a very fine line.  

Furthermore, I don't mind having the kernel sources not having any backdoors that the user doesn't put there themselves.  An example of a good reason for this might be if someone compiles their kernel with genkernel, which compiles most everything in by default.

I don't understand why the module can't be maintained outside of the kernel source, though.  That's exactly what nvidia and ati do, and their quite easy to install.  As I'm sure most of us know, on gentoo, installing the nvidia drivers is as easy as 'emerge nvidia-kernel nvidia-glx,' however, if you download the driver from the nvidia site (or unpack the tarball in distfiles,) they include a pretty handy shell script that is very easy to use.  According to the nvidia docs, the driver has a kernel interface that is GPL'd (the part that gets compiled during the emerge, and that you need kernel sources for,) and a binary part, very much like the pwc/pwcx.  And, for distros that don't include the kernel sources, they have several precompiled kernel-interface-modules, for commonly used kernels like the ones shipped with redhat, suse, fedora, etc., which the script will automatically install if it detects one of these kernels.  If you're using a different kernel, chances are you have the sources anyways, so the script compiles a module against those.  I really don't see why the pcw/pcwx drivers couldn't be maintained in this way.  

Also, if indeed the pcw module would work, albeit poorly, without the hook for the pwcx module, it does seem a bit childish to pull that from the kernel just because of a disagreement with the devs.  

just my thoughts

-Nate

----------

## darkangael

It's not a "backdoor" that the user isn't knowingly putting in there! For the hook to have any effect the pwcx module has to be knowingly downloaded and installed! This is a fairly deliberate action. They have to know it's a binary module (the taint warnings). Sure, someone could make a module which *pretends* to be pwcx, but for that to happen the user also knowingly has to put in another binary module, which it is their choice to trust or not. Either that, or the backdoor has to be included in the kernel sources itself (which WOULD be stupid). Also, if they can get the fake pwcx module into the kernel, then there is nothing stopping them doing plenty of harm WITHOUT the hook. I'm sure someone could also just as easily just make a module which pretends to be the crc32 module etc, which are also called by other programs. Are you sure there are no other modules which use "hooks" in just the same way, except to open source modules?

He also isn't asking them to include the binary part, just that it be allowed to work in the way it was intended. That's a perfectly reasonable request. Pulling the module was a stupid way of protesting, almost as dumb as sabotaging a perfectly working module for the sake of open source purity,  but that is his choice I guess.

----------

## bhos13

FYI, the pwc and pwcx modules for download at http://www.smcc.demon.nl/webcam/ work with 2.6.9-rc2.  The included patch (for 2.6.4) didn't work, so you have to patch manually, but the modules compiled and loaded fine, my qc pro 3000 works with it.

----------

## MrNugget

I copied pwc and pwcx manually, looked at my old 2.6.8 kernel for Kconfig, and patched pwcx manually (there is no patch with pwc). 

But when i try to compile it complains:

```
  CC [M]  drivers/usb/media/pwc-if.o

  CC [M]  drivers/usb/media/pwc-misc.o

  CC [M]  drivers/usb/media/pwc-ctrl.o

  CC [M]  drivers/usb/media/pwc-uncompress.o

  CC [M]  drivers/usb/media/pwcx-glue.o

make[3]: *** No rule to make target `drivers/usb/media/libpwcx.', needed by `drivers/usb/media/pwc.o'.  Stop.

make[2]: *** [drivers/usb/media] Error 2

make[1]: *** [drivers/usb] Error 2

make: *** [drivers] Error 2
```

Kernel: linux-2.6.9-rc2-love4

PWC: 9.0.2

PWCX: 9.0

Would be great if you could post your steps. 

Regards,

MrNugget

----------

## rcast

I just thought i should point out that there is a completely open driver which can replace the pwcx driver, it includes the decompression routine 

http://www.saillard.org/pwc/

I tried it and it works well with my logitech notebook pro.

Rene

----------

## maKKus

The new pwc module at http://www.saillard.org/pwc/ works for my Philips 690 Vesta Pro, I think this one is a great step forward (getting rid of the annoying pwcx module)

----------

## transienteagle

I completely missed this thread and am grateful to maKKus for its resurgence.

I have a Logitech Quickcam pro 4000 which I gave up on around about the time I moved from 2.4 to 2.6. I could never get the blessed thing to work properly without the PWCX binary module and if memory serves me right there was an issue with it moving from 2.4 to 2.6 (at least i certainly had problems.)

Well I never knew about http://www.saillard.org/pwc/ until this evening. Had a couple of moments free so located the 4000, downloaded the latest source from saillard and have a perfectly working 4000 once again without any drama whatsoever.

Now as i write this i am looking at my handsome visage peering back at me ......  hmmmmmmmm !!!!!!!!! am I really this ugly????? !!!!!!!!!!!! Hmmmmmmm maybe this does not work as well as I expected hmmmmmm

Depressed TE but with a working 4000

----------

## ohrock

Following the instructions here: http://www.saillard.org/pwc/INSTALL.en

I downloaded the driver and while compiling I got this wierd warnings:

*** Warning: "video_device_release" [/home/ohrock/Downloads/pwc-10.0.4/pwc.ko] undefined!

*** Warning: "video_usercopy" [/home/ohrock/Downloads/pwc-10.0.4/pwc.ko] undefined!

*** Warning: "video_register_device" [/home/ohrock/Downloads/pwc-10.0.4/pwc.ko] undefined!

*** Warning: "video_device_alloc" [/home/ohrock/Downloads/pwc-10.0.4/pwc.ko] undefined!

*** Warning: "video_unregister_device" [/home/ohrock/Downloads/pwc-10.0.4/pwc.ko] undefined!

*** Warning: "video_devdata" [/home/ohrock/Downloads/pwc-10.0.4/pwc.ko] undefined!

Warning are not usually a problem, but when I 'did depmod -a', and modprobe pwc I get this error:

FATAL: Error inserting pwc (/lib/modules/2.6.9-rc4-nitro1/video/pwc.ko): Unknown symbol in module, or unknown parameter (see dmesg)

FATAL: Error running install command for pwc

And my dmesg gives me this:

pwc: Unknown symbol video_devdata

pwc: Unknown symbol video_unregister_device

pwc: Unknown symbol video_device_alloc

pwc: Unknown symbol video_register_device

pwc: Unknown symbol video_usercopy

pwc: Unknown symbol video_device_release

I'm using this kernel:  2.6.9-rc4-nitro1

Can it be that some updates have been done from 2.6.8 that had rule this driver unconpatible?  What can I do?  Any ideas?

Thanks in advance!

P.S.:  (Disclaimer!)  I'm new to gentoo and also to the forums, so I hope I'm not overstepping any boundaries with my post.

----------

## transienteagle

ohrock,

I was able to reproduce your errors (well not exactly line for line but close enough)

This is all a bit counter intuitive but try this.

Make sure that V4l is statically compiled into your kernel (videodev)

I'am sure you know but just in case ...Within menuconfig --> Device Drivers --> multimedia devices ---->Video for Linux

make sure that the original pwc is selected as a module USB support ---> USB Philips Cameras

make bzImage modules modules_install etc

reboot into new kernel

now attempt to recompile saillard.org driver (make clean/make/ make install)

Let me know

rgds

TE

----------

## Jimmy Jazz

peraphs you simply forget to add the library libpwcx.a in you kernel directory ./drivers/usb/media ? 

Jj

----------

## Jimmy Jazz

Hi,

I'm using kernel 2.6.9-rc1 (gentoo-dev-sources)

so here is the way i'm using to compile the pwc(x) version 9...

unpack the archiv files pwc-9.0.x.tar.gz and pwcx-9.0.x.tar.gz into your home directory

copy pwcx/pwcx-glue.c  pwcx/pwcx.h x86/libpwcx.a from ~/pwcx-9.0 into your /usr/src/linux/drivers/usb/media kernel directory

I don't like to patch a kernel with an old version so i prefer modify files manually  :Wink: 

read the patch-2.6.4 file and add the following lines in /usr/src/linux/drivers/usb/media/Makefile, 

```

pwcx-objs      := pwcx-glue.o libpwcx.a

obj-$(CONFIG_USB_PWCX)         += pwcx.o

```

procede the same with the Kconfig file,

```

config USB_PWC

        tristate "USB Philips Cameras"

        depends on USB && VIDEO_DEV

        ---help---

          Say Y or M here if you want to use one of these Philips & OEM

          webcams:

           * Philips PCA645, PCA646 

           * Philips PCVC675, PCVC680, PCVC690

           * Philips PCVC720/40, PCVC730, PCVC740, PCVC750

           * Askey VC010

           * Logitech QuickCam Pro 3000, 4000, 'Zoom', 'Notebook Pro'

             and 'Orbit'/'Sphere'

           * Samsung MPC-C10, MPC-C30

           * Creative Webcam 5, Pro Ex

           * SOTEC Afina Eye

           * Visionite VCS-UC300, VCS-UM100

          The PCA635, PCVC665 and PCVC720/20 are not supported by this driver

          and never will be, but the 665 and 720/20 are supported by other

          drivers.

          This driver has an optional plugin (called PWCX), which is

          distributed as a binary module only. It contains code that allow you

          to use higher resolutions and framerates but may not be distributed

          as source. But even without this plugin you can these cams for most

          applications.

          See <file:Documentation/usb/philips.txt> for more information and

          installation instructions.

          The built-in microphone is enabled by selecting USB Audio support.

          This driver uses the Video For Linux API. You must say Y or M to

          "Video For Linux" (under Character Devices) to use this driver.

          Information on this API and pointers to "v4l" programs may be found

          at <file:Documentation/video4linux/API.html>.

config USB_PWCX

       tristate "PWCX decompressor module"

       depends on USB_PWC

```

(at the right place before the line: config USB_SE401 )

copy every .h .c files from ~/pwcx-9.0.x/2.6 directory into your /usr/src/linux/drivers/usb/media kernel directory

add the following lines in the /usr/src/linux/drivers/usb/media/Makefile, 

```

pwc-objs        := pwc-if.o pwc-misc.o pwc-ctrl.o pwc-uncompress.o

obj-$(CONFIG_USB_PWC)           += pwc.o

```

compile now the kernel with the new options enabled. But don't forget if you are working with a KOUTPUT_DIR directory to add manually the libpwcx.a file in your $KOUPUT_DIR/drivers/usb/media directory. 

I'm not smart enough to modify the global Makefile to do it automatically, lol

run: 

```

make modules_install

```

and copy one more the forgotten libpwcx.a file into your  

/lib/modules/your2.6.9kernelmodulesdirectory/kernel/drivers/usb/media directory. pwcx module will find it here.

create a ToUcam file in the /etc/modules.d directory and add the line:

options pwc size=vga leds=250,250 fps=15 mbufs=2 compression=3 power_save=1

execute,

```

modules-update

modprobe pwc

modprobe pwcx

```

Test it with gnomemeeting for instance.

Enjoy...

Hope it will work for u   :Wink: 

@+

Jj

----------

