Michel Xhaard是一名法国医师(Physician),现年60岁,他从事“三维超声及彩色多普勒成像”方面的研究多年。可是就是这个看起来似乎跟IT没多大关系的人,却写出了一个几乎是“万能”的Linux版摄像头驱动。
故事还要从三年前开始,他买了一对当时能找到的最便宜的摄像头,当然,“Made in China”。可能是因为被低廉的价格吸引,他没有考虑是否可用于Linux的问题就将它们带回了家。
他有一台电脑,使用Windows 2000系统,他把其中一个摄像头插在这台电脑上。但是不久之后,他就发现了问题——“中国制造”的摄像头确实非常便宜,不过这也就意味着很差的产品支持,大家应该见过,这类摄像头上面一般没有官方技术支持网站也没有厂址,更别提驱动升级了。而这个摄像头自带的驱动在内存控制上肯定存在缺陷,至少在W2K系统下,工作十二小时之后需要重启一下才能保持流畅运行系统。
为了避免这种麻烦,他决定使用Linux系统,可以想象,这个系统下摄像头罢工了。他写信给制造商,却没有任何回应,于是他咨询了一些媒体,他们告诉他这个摄像头的芯片组是ZC0301,制造商现在名叫“中星微(Vimicro)”,这个厂商在Linux兼容名单之中。
他想到,那么多使用各种廉价摄像头的人因为驱动问题而困扰,便自己编写了一个Linux下的摄像头驱动。他表示当他想到,在没有任何的企业支持的情况下,已经有235款(软件初始版本支持数量)摄像头因为一个不知名的人的劳动而能够正常运行时,感到突然的惊喜,有种“幕后英雄”的感觉。
随着版本的改进,越来越多的摄像头被添加到支持列表中,目前已经有244款了,详细支持列表请点这里。该驱动本站已经提供下载:
2.6.11以下核心版本的Linux系统
2.6.11及其以上核心版本的Linux系统
附文:在 Linux 中如何使用中星微芯片的摄像头
目前,这颗DSP在廉价型摄像头市场中以及占据了绝对统治地位。在售的数10款不同品牌、外观的廉价摄像头,无一例外全部是使用这个芯片。一个市场领先的产品却长期无法在 Linux 下使用,这样的状况是不可接受的。
中星微电子的 zc-0301 是一颗廉价摄像头常用的 DSP 控制芯片。这类芯片的摄像头在 Windows 下看驱动,可以看见 Vimicro 以及 301P 等类似字样,在 Linux 下 lsusb
则可看见如下字样:
idVendor 0x0ac8 Z-Star Microelectronics Corp. idProduct 0x301b iManufacturer 1 Z-Star Corp. iProduct 2 PC Camera
这颗芯片也称为 zc-0301/0302。目前,这颗DSP在廉价型摄像头市场中以及占据了绝对统治地位。我在 5.1 节期间去商店调查了一番,抽了3个店铺,数10款不同品牌、外观的廉价摄像头,无一例外全部是使用这个芯片。
然而,该公司对 Linux 并不友好,既不提供驱动,也拒绝公开文档。几年来我曾数度寻找,都未能在 Linux 下用起来。一个市场领先的产品却长期无法在 Linux 下使用,这样的状况是不可接受的。51节期间发布的2个新发布的驱动,都可以驱动这款摄像头,它们是 spca5xx 和 zc030x。
这个驱动的主页位于 http://mxhaard.free.fr/ 。主页显得有些凌乱。驱动下载后, make && make install
即可完成编译与安装。
安装完成后相应的模块被装进了 /lib/modules/ 下面相应版本的内核所在的目录中,所以装载只要执行 modprobe spca5xx
,然后打开 gnomemeeting,此设备就已经出现在了 V4L 设备列表中。如图
"Gnomemeeting 的设备列表截图":按下确定后,就看见了摄像头的画面。
相当的顺利,不由让人十分欣喜。不过,图像质量却不如 Windows 下的好。画面显得灰暗,估计是白平衡没有设好。但 gnomemeeting 下不像 Windows MSN Messenger 中,没有”自动白平衡“这个选项。手动调节的话,gnomemeeting 提供的4个滑块,只有”对比度“一项拉动有效果,别的3个都没有任何作用。
尽管画质不佳,但画面速度还可以,更重要的是给人看到了希望。
另外,spca5xx 项目主页下面还提供了一个简单易用的摄像头操作软件,不仅可以用于 spca5xx 驱动,而且可以和所有 V4L 驱动配合,很不错,如图
ZC030X 项目从名字上看,就是专门给 Z-Star 30x 系列芯片写的驱动,他们甚至在 sourceforge 注册了个项目,主页位于 http://zc0302.sourceforge.net/ 。
这个项目资料和文档齐全,不过还没有开发完成。至今还没有一个发行版,所有代码都在 CVS 中。网站上有个 beta 版的 tarball,我下载了这个包。
编译和 spca5xx 一样顺利,不过它的脚本没有 spca5xx 完善,并不做安装的工作。有一个 load
脚本用于此内核模块的装载,但装载时忘了先装入 V4L 的模块 videodev
。
此模块装入后即识别出了我的摄像头,并立刻开启之,点亮了上面的绿灯。但是,当我开启 gnomemeeting 打算看看它的画质时,gnomemeeting 冻住了。最终,我也没看到画面。
虽然如此,但是一个对 Linux 不友好的中国公司的产品,终于在 Linux 下有了解决方案,也实在难得,让人至少有了希望。不足的是,最终这项工作仍然是由外国人完成的,而不是在它的原产地中国。