ylfc2000 发表于 2005-5-5 00:14:21

有关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')

hotchise 发表于 2005-5-7 23:33:36

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上享受非编的乐趣了,大家快
试试吧。

netknow 发表于 2005-5-13 09:51:36

请问楼上的高手,你提到的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
请问出现这个问题是什么原因?

neptune 发表于 2005-5-15 16:38:37

我记德好像/lib/modules/2.6.8.1-10mdksmp/build是指向包含内核源代码目录的连接。编译驱动是需要内核源码的

netknow 发表于 2005-5-20 11:36:58

对,上面这位大虾说的没错!在编译驱动之前要先安装内核源码,我已经安装了,并且用了下面的语句:
         make
         su
         make install
系统运行正常,但是连上摄像头后打开GNOME后仍然看不到图像。重启系统就出现了起不来大的现象了!
   为什么呢?那里处理问题?

hotchise 发表于 2005-5-24 20:14:44

很抱歉,我是转贴高手的文章
我自己也没试成功呢
关键linux支持的摄像头太少了
我们这种新手不容易安装成功啊

hotchise 发表于 2005-5-24 20:17:33


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"改成自己用的内核版本号
再试试看

netknow 发表于 2005-5-25 15:40:11

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 文件,而且是不是内核源码必须处于配置状态才能编译驱动?

hotchise 发表于 2005-5-26 11:49:54


在我得/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]
查看完整版本: 有关linux下使用usb摄像头