saillard logo

PWC Driver

The Enhancements

The PWC driver that ships with recent versions of linux is being maintained at saillard.org . It is a good driver and is kept reasonably up to date. There are room for improvements however. I was interested in using a Philips camera to trigger still shots with as little latency as possible for use with robotics. After studying the problem I determined that I could cut the latency in half by changing the pipeline structure in the driver, and did so without affecting its existing operation. I added a new mode to the driver which essentially allows one to sample off the top of the pipe-line or immediately, rather than off the bottom. This involved creation of a new accessor.

I posted my driver patch and description to the PWC list (twice) without receiving a peep of comment from the devs. I don't know what to make of this. I've been repeatedly queried by others interested in achieving lower latency for the driver. I am not keeping my changes in sync with future updates to the regular PWC driver - its too much work. If anyone is interested in using this code they are free to do so. I will keep it posted here so long as it remains useful.

Installing the modified PWC driver

This works with 2.6.24 kernel from kernel.org . It will no doubt need to be modified for later kernels. The code for this driver is located in /usr/src/linux/drivers/media/video/pwc. Save it as a tarball in case you mess something up, then untar the modified driver in the same directory. Note: if you don't have this directory then it means you don't have PWC support built into your kernel. Go back to make menuconfig and enable PWC support as a module, build your kernel, and come back here when you're done.

cd /usr/src/linux/drivers/media/video/pwc
tar cvfz old-driver.tgz *
tar xvfz 

Now rebuild the kernel. I am assuming you already have a valid .config set up and have built this kernel before. If not, do that before trying to install this modified driver.

cd /usr/src/linux
make modules
make modules_install
make install
cp /usr/src/linux/drivers/media/video/pwc/pwc-ioctl.h /usr/include/media/

If all you've done is change the driver code, the kernel itself will not have changed, so you don't need to recompile the kernel.