有关linux下使用usb摄像头
刚才搜索了一下论坛上关于 摄像头的文章,都没有我的问题,所以只好发新贴了偶刚接触linux,是个菜鸟,大虾多多帮偶呵!
最近装了redhat9.0kernel 版本2.4.20-8
usb摄像头是罗技
在网上找了个驱动叫spca5xx它的技术文档里写着支持我的摄像头
按照它的安装步骤, make ---- make install 但是make 后出现如下错误,兄弟们帮我看看,怎么解决
# make
Compiling drivers/usb/spcadecoder.c
Compiling drivers/usb/spca5xx.c
In file included from /lib/modules/2.4.20-8/build/include/linux/pagemap.h:16,
from drivers/usb/spca5xx.c:54:
/lib/modules/2.4.20-8/build/include/linux/highmem.h: In function `bh_kmap':
/lib/modules/2.4.20-8/build/include/linux/highmem.h:20: warning: pointer of type `void *' used in arithmetic
drivers/usb/spca5xx.c: In function `spca5xx_mmap':
drivers/usb/spca5xx.c:5392: warning: passing arg 1 of `remap_page_range_R2baf18f2' makes pointer from integer without a cast
drivers/usb/spca5xx.c:5392: incompatible type for argument 4 of `remap_page_range_R2baf18f2'
drivers/usb/spca5xx.c:5392: too few arguments to function `remap_page_range_R2baf18f2'
drivers/usb/spca5xx.c: At top level:
drivers/usb/spca5xx.c:5435: warning: initialization from incompatible pointer type
drivers/usb/spca5xx.c:8382: warning: initialization from incompatible pointer type
drivers/usb/spca5xx.c:8384: warning: initialization from incompatible pointer type
drivers/usb/spca5xx.c:8385: warning: initialization from incompatible pointer type
drivers/usb/spca5xx.c:8386: warning: braces around scalar initializer
drivers/usb/spca5xx.c:8386: warning: (near initialization for `spca5xx_driver.disconnect')
drivers/usb/spca5xx.c:8386: warning: excess elements in scalar initializer
drivers/usb/spca5xx.c:8386: warning: (near initialization for `spca5xx_driver.disconnect') RedHat Linux 下安装、测试摄像头
1.到www.kernel.org. 下载新的内核 2.4.20的tar包。下载pwc-8.8.tar.gz包
2.替换内核的部分USB驱动,并从新编译内核
3.编辑/etc/modules.conf编辑系统启动加载的模块
4.测试软件XawTv,GnomeMeeting,MainActor
现在就开始把:
第一步,我选用RedHat Linux 9.0作为实验平台,首先到www.kernel.org. 下载新的内核 2.4.20
的tar包。重新编译内核。
#tar zxvf linux-2.4.20.tar.gz -C /usr/src/
#tar zxvf pwcx-8.2.2.tar.gz -C /tmp
目的是用Philips webcams的驱动代替现有驱动
#tar zxvf pwc-8.8.tar.gz -C /tmp
#cd pwc-8.8/kernel-2.4/
ChangeLog .philips.txt.swppwc.h pwc-ioctl.h pwc-misc.c
pwc_timon.h pwc-uncompress.h
philips.txt pwc-ctrl.c pwc-if.c pwc_kiara.h pwc_nala.h
pwc-uncompress.c
# cp * /usr/src/linux-2.4.20-8/drivers/usb/
#make menuconfig
注意要确保以下选项要选种
Multimedia devices --->Video for Linux --->V4L information in proc filesystem
---> BT848 video for Linux
USB support --> Support of USB
--> UHCI (Intel PIIX4, VIA, ...)
--->UHCI Alternate Driver (JE) support
---> USB Audio support
--->OHCI (Compaq,iMacs,OPTi.SiS,ALi,...) support
-->Preliminary USB device filesystem
-->USB OV511 Camera support
其他选项保持默认即可。 在很多时候,我们的USB设备驱动并不包含在内核中。其实我们只要根据
它所需要使用的模块,逐一加载。就可以使它启作用。 这是许多人对 Linux 的 USB 驱动感到有
些疑惑。 我就简单解释一下。Linux USB 驱动程序有三种不同的 USB 主控制器选项。
分别是:
A . "EHCI"驱动程序设计成为实现新的高速 USB 2.0 协议的芯片提供支持。
B . "OHCI"驱动程序用来为非 PC 系统上的(以及带有 SiS 和 ALi 芯片组的 PC 主板上
的)USB 芯片提供支持。 对应模块文件usb-ohci.o
C . UHCI"驱动程序用来为大多数其它 PC 主板(包括 Intel 和 Via)上的 USB 实现提供
支持。对应模块文件usb-uhci.o
只需选择与希望启用的 USB 支持的类型对应的"O(UE)HCI"驱动程序即可。如有疑
惑,单独加EHCI是不行的,通常我的做法是根据主板类型加载UHCI或OHCI后,再加载
EHCI这样才可以支持USB2.0设备)。为保险起见,可以启用"EHCI"、"UHCI" 和"OHCI"。
之后开始编译,完成之后reboot系统。一旦用新的已启用,新的内核重新加载后,在
/proc/bus/usb有相应USB设备信息,用lsmod可以查看系统已加载的模块。
# lsmod
Module SizeUsed by Not tainted
ide-cd 35708 0(autoclean)
cdrom 33728 0(autoclean)
radeon 116132 0
ohci1394 20168 0(unused)
ieee1394 48780 0
audio 46648 0(unused)
soundcore 6404 2
pwc 47688 1
videodev 8288 2
keybdev 2944 0(unused)
mousedev 5492 1
第 12 页 共 28 页
hid 22148 0(unused)
input 5856 0
usb-uhci 26348 0(unused)
ehci-hcd 19976 0(unused)
usbcore 78784 1[audio pwc hid usb-uhc
ext3 70784 2
jbd 51892 2
红色的标注表示是必须加载的modules.
# cat /proc/bus/usb/drivers
usbdevfs
hub
96-111: hiddev
hid
Philips webcam
audio
第二步,编辑系统启动加载的模块
模块的配置方法.
# vi /etc/modules.conf
确保一下两行存在
alias usb-controller ehci-hcd
("ehci"驱动程序设计成为实现新的高速 USB 2.0 协议的芯片提供支持)
alias usb-controller1 usb-uhci
添加如下几行
alias char-major-81 videodev
alias char-major-81-0pwc
options pwc size=vga leds=250,250 fps=25 mbufs=3 compression=0
none /proc/bus/usb usbdevfs defaults 0 0 (自动挂装 USB 设备文件系统)
第三步,测试摄像头
启动RedHat自带的网络视频软件GnomeMeeTing,经过简单配置就能看就你的形象了。你
可能没注意到只要驱动模块成功加载并起动GnomeMeeTing,摄像头的绿色指示灯就一直亮
着。
接下来我为大家推荐一款极为好用的视频编辑软件XawTV,他可以捕捉静态,动态的视频。XawTV
是简单的基于Xaw的TV软件,应用了bttv或者videor4linux驱动。包含各种命令行的程序,截取图片和AVI动画。
下载 xawtv-3.94.tar.gz 包,并安装
# tar zxvf xawtv-3.94.tar.gz -C /tmp
# ./configure ;make ;make install ; xaw
他的配置很简单只要按“O”键就能调出如上图,功能大家
一看就一目了然了。而右边的字母就是相应功能的快捷
键。
处理方式:
对于捕捉的静态图片可以用Gimp进行编辑,而对于捕
捉的AVI文件可以用mplayer进行播放,用MainActor
进行非线性编辑。MainActor是强大的视频编辑软件,不论是数字信号还是模拟信号均能轻松
应付:输入/输出、连接、修整、加入专业过渡效果,注册后功能将十分强大。软件包括
Mainac
MainActor Sequencer(时间轴视频序列发生器)和MainActor Video Editor(在工业领域和多
媒体最终用户中久负盛名的视频编辑软件)。大家有兴趣可以到MainActor的网站上下载。
注意:和在windows 里一样 gnomemeeting和xawt不能同时用,否则就会出现
# xawtv
This is xawtv-3.94, running on Linux/i686
can't open /dev/video0: Device or resource busy
v4l-conf had some trouble, trying to continue anyway
v4l2: open /dev/video0: 设备或资源忙
v4l2: open /dev/video0: 设备或资源忙
v4l: open /dev/video0: 设备或资源忙
这样的错误提示。
这样一来,有了一个摄像头和一些基本的软件大家就能在Linux上享受非编的乐趣了,大家快
试试吧。 请问楼上的高手,你提到的pwc-8.8.tar.gz就是Philips webcams的驱动吗?代替现有的usb驱动?我用的是mandrake10.1,kernel-2.6.8,用的也是罗技的摄像头,pwc-10.0.6a,安装时
#make 后出现错误提示:
make –C /lib/modules/2.6.8.1-10mdksmp/build SUBDIRS=/home/ljr/pwcmodule/pwc-10.0.6a modules
make:*** /lib/modules/2.6.8.1-10mdksmp/build: no such file or directory. 停止.
make:*** 错误 2
请问出现这个问题是什么原因? 我记德好像/lib/modules/2.6.8.1-10mdksmp/build是指向包含内核源代码目录的连接。编译驱动是需要内核源码的 对,上面这位大虾说的没错!在编译驱动之前要先安装内核源码,我已经安装了,并且用了下面的语句:
make
su
make install
系统运行正常,但是连上摄像头后打开GNOME后仍然看不到图像。重启系统就出现了起不来大的现象了!
为什么呢?那里处理问题? 很抱歉,我是转贴高手的文章
我自己也没试成功呢
关键linux支持的摄像头太少了
我们这种新手不容易安装成功啊
make: *** /lib/modules/2.6.8.1-10mdksmp/build: no such file or directory. 停止
并且确保/lib/modules/`uname -r`/build是正确指向内核源码目录的,如下所示:
#ls -l /lib/modules/2.6.10-lvm/build
lrwxrwxrwx1 root root 21 Feb 22 12:50 /lib/modules/2.6.10-lvm/build -> /usr/src/linux-2.6.10/
如果没有正确指向内核源码目录,使用ln -s 命令建立链接:
#ln -s /usr/src/linux-2.6.10 /lib/modules/2.6.10-lvm/build
生成需要的内核源文件:
#cd /usr/src/linux-2.6.10
/root------------> /usr/src/linux-2.6.10
#make mrproper
确保内核源码纯净,保证摄像头编译出来可用。
#cp /boot/config-2.6.10 .config
将当前内核配置文件复制过来
#make scripts/
没有这步,编译就会出错。
楼上的一定将再l"inux-2.6.10"改成自己用的内核版本号
再试试看 hotchise,我在这里不太明白:
#cp /boot/config-2.6.10 .config
将当前内核配置文件复制过来
在我得/boot中并没有config-2.6.10 .config 的文件,而只有一个config-2.6.8.1-10mdksmp这个文件
这里要拷贝的目的地址是不是/usr/src/linux-2.6.8?
我直接运行了make scripts,结果出现了错误:
Makefile: 415; .config: No such file or directory
Scripts/kconfig/conf –s arch/i386/Kconfig
***
***you have not yet configured your kernel!
***
***please run some configruator (e.g “make menuconfig”)
***
make: *** 错误 1
make:*** 错误 2
make:*** 错误 2
从中确实可以看到没有.config 文件,而且是不是内核源码必须处于配置状态才能编译驱动?
在我得/boot中并没有config-2.6.10 .config 的文件,而只有一个config-2.6.8.1-10mdksmp这个文件
是将/boot/config-2.6.10这个文件拷到/usr/src/linux-2.6.10这个源码文件夹里,再将
config-2.6.10改为.config
你是mdk一定要先安装内核源码rpm包,你没有config-2.6.8.1这个文件应该没装内核源码rpm
页:
[1]