在Linux2.28内核上使用摄像头


Ubuntu 8.04自带的驱动已经能够识别大多数摄像头,然而兼容性并不好,很多只能被Ekiga识别,而无法使用skype进行视频聊天。我们需要进行一些安装和调试工作来让摄像头更好的工作。

首先,查看当前的usb口连接情况:

$ lsusb
Bus 005 Device 001: ID 0000:0000 
Bus 004 Device 001: ID 0000:0000 
Bus 003 Device 002: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 003 Device 001: ID 0000:0000 
Bus 002 Device 005: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 WebCam
Bus 002 Device 003: ID 046d:c01f Logitech, Inc.
Bus 002 Device 001: ID 0000:0000 
Bus 001 Device 001: ID 0000:0000

从这些信息我们可以看出摄像头的Vendor_id=0ac8,Product_id=301b;还可以看出图形界面已经使用的usb端口的情况及摄像头芯片的制造商Z-Star Microelectronics Corp.说明我们的摄像头已经被系统所识别,下面让我们开始吧:
如果没有连接,重新插一下摄像头,在虚拟机上将会看到摄像头的图标,然后选择到linux中,这样在linux中就能发现USB摄像头设备。

然后安装摄像头的万能驱动,在linux2.6.18以上内核的都需要打补丁。
1. 下载gspcav1-20071224.tar.gz并解压
$ wget -c http://www.slackware.com/~alien/slackbuilds/gspcav1/build/gspcav1-20071224.tar.gz
$ tar zxvf gspcav1-20071224.tar.gz

2. 编译并安装驱动
$ cd gspcav1-20071224
$ make clean
$ make
$ sudo make install

若编译出现以下错误的解决办法
/usr/src/gspcav1-20070508/gspca_core.c:2303: 错误: ‘VIDIOCSYNC’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2354: 错误: ‘VIDIOCGFBUF’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2357: 错误: ‘sizeof’ 不能用于不完全的类型 ‘struct video_buffer’
/usr/src/gspcav1-20070508/gspca_core.c:2357: 错误: ‘sizeof’ 不能用于不完全的类型 ‘struct video_buffer’
/usr/src/gspcav1-20070508/gspca_core.c:2357: 错误: ‘sizeof’ 不能用于不完全的类型 ‘struct video_buffer’
/usr/src/gspcav1-20070508/gspca_core.c:2357: 错误: ‘sizeof’ 不能用于不完全的类型 ‘struct video_buffer’
/usr/src/gspcav1-20070508/gspca_core.c:2357: 错误: ‘sizeof’ 不能用于不完全的类型 ‘struct video_buffer’
/usr/src/gspcav1-20070508/gspca_core.c:2357: 错误: ‘sizeof’ 不能用于不完全的类型 ‘struct video_buffer’
/usr/src/gspcav1-20070508/gspca_core.c:2358: 错误: 提领指向不完全类型的指针
/usr/src/gspcav1-20070508/gspca_core.c:2361: 错误: ‘BASE_VIDIOCPRIVATE’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2393: 错误: ‘VIDIOCKEY’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2395: 错误: ‘VIDIOCCAPTURE’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2397: 错误: ‘VIDIOCSFBUF’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2399: 错误: ‘VIDIOCGTUNER’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2400: 错误: ‘VIDIOCSTUNER’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2402: 错误: ‘VIDIOCGFREQ’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2403: 错误: ‘VIDIOCSFREQ’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2405: 错误: ‘VIDIOCGAUDIO’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c:2406: 错误: ‘VIDIOCSAUDIO’ 未声明 (在此函数内第一次使用)
/usr/src/gspcav1-20070508/gspca_core.c: 在函数 ‘cd_to_spca50x’ 中:
/usr/src/gspcav1-20070508/gspca_core.c:2616: 警告: 隐式声明函数 ‘to_video_device’
/usr/src/gspcav1-20070508/gspca_core.c:2616: 警告: 初始化时将整数赋给指针,未作类型转换
/usr/src/gspcav1-20070508/gspca_core.c: 在函数 ‘spca50x_create_sysfs’ 中:
/usr/src/gspcav1-20070508/gspca_core.c:2655: 警告: 隐式声明函数 ‘video_device_create_file’
/usr/src/gspcav1-20070508/gspca_core.c:2665: 警告: 隐式声明函数 ‘video_device_remove_file’
make[2]: *** [/usr/src/gspcav1-20070508/gspca_core.o] 错误 1
make[1]: *** [_module_/usr/src/gspcav1-20070508] 错误 2
make[1]: Leaving directory `/usr/src/linux-2.6.21.2'
make: *** [default] 错误 2

解决办法,打补丁

内核:linux2.6.27.11
到这儿下载两个文件 http://www.slackware.com/~alien/slackbuilds/gspcav1/build/

gspca_kernel_2.6.27.diff
gspcav1-20071224.tar.gz
第一个文件是补丁文件,LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)用就用得上了。
第二个是驱动文件。

解压:
gspcav1-20071224.tar.gz并进入其目录,拷贝
gspca_kernel_2.6.27.diff到此目录。

当前目录运行命令:
patch -p1<gspca_kernel_2.6.27.diff
进行补丁 

  • 1
  • 2
  • 下一页

相关内容