redhat9 下摄像头驱动程序spca5xx和gspca安装

方法一:直接在2.4.20内核上安装spca55xx

方法二:升级2.4.20内核到2.6.18然后编译安装摄像头驱动gspca

两种方法我都试过,都可以成功

方法一:直接在2.4.20内核上安装spca55xx

spca5xx、gspcat和spcaview简单介绍

Linux内核中集成了对0V511系列摄像头的支持,但没有包含对我的摄像头的支持,本文选用了开源驱动spca5xx,这个驱动提供了对大部分主流摄像头的支持。 gspca和spca5xx是一个系列的,它用于2.6.17以上的内核版本,以前的版本使用spca5xx驱动程序。spca5xx在Linux下常用的摄像头驱动, 这是一个通用驱动,可以在google里搜索并下载这个驱动程序。http://spca50x.sourceforge.net/spca50x.php 这个网站上有这个程序支持的摄像头和图像传感器信息。这个驱动程序也是基于上面的video4linux的。关于这个驱动的安装以及驱动要求的版本和支持的摄像头驱动等更详细的信息可以在你下载的安装包里找。

spcaview是一个我非常喜欢的应用程序,可以作为浏览采集到的图像接口。当然它更强大的不是这一点,spcaview 是 Linux网络客户端监控工具,当然也能用于本地测试摄像头用。如果用于网络监控的摄像头,还必须要有spcaserv,本文只用它来监视本地摄像头。通过spcaview 可以进行数据流的采集,可以实现单帧采集,连续帧采集。对于数据流的采集,可以在服务器端,也可以在客户端。当然服务器端和客户端都得有桌面环境。 spcaview 工具可以过 -o 参数把数据流传到一个文件中。也可以采用压缩数据流的办法,要用到-z参数。程序源码中有详细的使用说明。

二spca5xx和spcaview在X86 机器上的编译使用

编译环境仍然是在VMware虚拟机的客户操作系统Redhat9.0下面。下面列出详细的编译和安装步骤。

n     下载源代码,不论安装什么软件,这个总是必须的。我下载的软件版本分别为:spca5xx-20051212.tar.gz和spcaview-20051127.tar.gz,也有更新一些的版本,这里我用的是这个。还有一个用到的压缩包

gspcav1-20071224.tar.gz,这个是为了修改某些结构体而使用的。

n     解压缩上面两个压缩包,这里假设这两个文件都在/root/tmp目录下面。可以执行命令如下进行解压缩,为了方便,我以root帐户登录:

[root@localhost tmp]# tar zxvf spca5xx-20051212.tar.gz

[root@localhost tmp]# tar zxvf spcaview-20051227.tar.gz

执行完这两个命令后将在/root/tmp目录下面产生两个目录,spca5xx-20051212和spcaview-20051227。

n     编译spcaview,编译这个程序不会出现问题,可以直接通过,方法是先进到文件夹spcaview-20051227下面,执行终端命令make,

[root@localhost spcaview-20051227]# make

[root@localhost spcaview-20051227]# make install

执行完这两个步骤,就已经把spcaview安装到系统中了,可以在终端执行命令spcaview,将会弹出一个窗口,如果摄像头驱动Ok,应该就可以成功看到采集到的图像了。如果要安装成网络服务器的形式,可以参考README文件。本文只是安装成本地监控来使用

n     编译spca5xx,这个是图像采集设备的驱动程序,也就是摄像头的驱动。编译这个程序的过程中,遇到了不少问题,不过最后都解决了。 这里先说明一下编译的整个过程,稍后说明安装过程中出现的问题。

这个驱动程序已经可以在Redhat9.0的原装内核2.4.20-8下成功编译并运行。要在这个内核下成功编译需要修改一些文件。首先修改一下/root/tmp/spca5xx-20051212/drivers/usb/spca5xx.c文件,终端下利用VI编辑器,在这个文件把84程序行 //#define RH9_REMAP 1前面的//去掉,也就是把语句行的注释去掉,让其有效。

另外还要修改所有的判断Linux版本行的条件编译语句中的

#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,22),修改为

#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20)。

要让中星微的厂商ID和产品ID为 (0x0ac8,0x305b) 的摄像头工作还必须修改文件/root/tmp/spca5xx-20051212/drivers/usb/tas5130c.h,如果是其他的摄像头有可能需要更改这个文件,有可能不需要,要看你的厂商ID和产品ID对应的数据是否正确。我的摄像头刚好就是上面的中星微的一款产品,结果不能正常驱动。这里我并不是特别理解,这些数据的含义,只是以结构体的形式定义了一些16进制数据。我列出其中一个结构体的一部分如下:

static __u16 tas5130cxx_start_data[][3] = {

{0xa0, 0x0001, 0x0000},           //00,00,01,cc,

{0xa0, 0x0002, 0x0008},           //00,08,02,cc,

。。。。。。。。。。。。。。。。。。。。。。//省略的数据部分。

{0xa0, 0x0008, 0x0250},           //02,50,08,cc,

{0xa0, 0x0008, 0x0301},           //03,01,08,cc,

{0xa0, 0x0060, 0x01a8},           //01,a8,60,cc,

{0xa0, 0x0061, 0x0116},           //01,16,61,cc,

{0xa0, 0x0065, 0x0118},           //01,18,65,cc

/********************/

{0, 0, 0}

};,既然不知道这些数据什么意思怎么修改呢,这个我当时也很无奈。后来想到可以借助于gspca驱动,在现在的linux发行版中好多都有。ubuntu linux就集成了这个驱动程序。经过验证,在ubuntu下面是可以支持我的摄像头的,所以我就把gspca的源代码下载下来,把其中相应的代码拷贝了一份,然后替换掉相应的结构体里的数据就可以了。

3   实验过程中出现的问题

这里列出的问题并不是每个人都一样。因为我的摄像头不一定和你的一样。我的摄像头,奥尼产的。

问题一:spcaview窗口没有显示,是黑屏的。

通过检测USB接口发现用的是中星微的DSP控制器,传感器芯片型号开始没有办法获得,当我把程序编译好,驱动装上以后,可以看到USB摄像头有反应了,找到了视频设备,但显示框是黑色的。也就是没有图像。去google了一下,有些人也碰到了相似问题。因为这种现象跟摄像头的控制器和传感器芯片有关,所以这样的帖子不是特别多。只好自己想办法了。因为我装了个Ubuntu的虚拟机,所以我想应该在比较高一点的版本上进行测试,经过实验结果发现自己的Ubuntu系统是可以捕获到自己的zc305b摄像头图像的。这就给了我希望。我把gspca(Ubuntu上用的是这个)和spca5xx的源代码进行比较。当然不是胡乱进行比较了。因为我用了一个sonix的摄像头在Redhat9上成功抓取了图像,所以我想一定是传感器的问题,有可能是对zc30b内部这个传感器没有搞对。发现把spca5xx.c和spca5xx.h中原来的SENSOR_TAS5130C改为SENSOR_TAS5130C_VF0250,并且把头文件的数据结果一个tas3150c开头的数组也都改成tas5130c_vf0250开头的。另外为了编译通过,还需要改sonix.h,et61x511.h,主要是这两个文件里都用到了tas3150c.h这个头文件的这些数据结构。结果真的成功了,已经可以成功用我的摄像头抓取图像了。当然这里的方法是我刚开始编译成功时使用的,实际上不用这么麻烦。可以按照第2部分的方法,复制一份结构体数据就可以了,这样就用不着麻烦的去改那么多地方了。这里我写下来,部分出于自己笔记的习惯。

问题二:如何解决Redhat9.0自带内核2.4.20-8编译失败和spcaview打不开v4l设备的问题。

刚开始把代码下载下来的时候兴致冲冲的编译一下,发现编译都通不过,只好又去网上google一下。发现有几个兄弟是通过升级内核版本来实现的。都是通过看Readme文件,觉得不一定支持这个内核版本号。还有些同僚说可能是Redhat公司对内核打了自己的补丁。这些话有对有错。下面解释一下。

查看源代码发现有//#define RH9_REMAP 1 这句话说明是可以Redhat9下面编译的,先把这句代码的注释去掉,编译一下,发现可以通过了。可是把摄像头插上,还是打不开设备。解决了编译的问题还得解决摄像头的其他问题。我们要让自己的摄像头正常显示图像才好。我开始的想法就是把编译时出现的一些警告去掉。这里要说明一下,通过升级内核的方法是比较简单的。我是升级到2.4.26,升级并编译完之后,对于许多摄像头来说都是可以直接用的。如果出现黑屏就要考虑上面提到的解决办法。这部分主要是讲不升级内核,如何在Redhat9自带内核下面的编译。仔细读一下代码,发现里面好多版本判断的语句根本没有包括2.4.20,这也就难怪我们没有办法打开摄像头设备了。后来经过实验,把所有的2.4.22的内核版本判断该成2.4.20就OK了。注意一处:spca5xx.c文件的8548行开始。

  1. #if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22)
  2. static struct usb_driver spca5xx_driver = {
  3. .owner = THIS_MODULE,
  4. .name = "spca5xx",
  5. .id_table = device_table,
  6. .probe = spca5xx_probe,
  7. .disconnect = spca5xx_disconnect
  8. };
  9. #else
  10. static struct usb_driver spca5xx_driver = {
  11. #if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20)
  12. THIS_MODULE,
  13. #endif
  14. "spca5xx",
  15. spca5xx_probe,
  16. spca5xx_disconnect,
  17. {NULL,NULL}
  18. };
  19. #endif

这里显然把22改为20后就不合适了。那么如何把想要的版本包含进来呢。我把这里的22没有改,把20改成18就可以了。读代码可能感觉第二个地方不改好象也包括2.4.20-8了。但经过实验是不行的。我也有点糊涂。不过关键是自己的目的达到了,很开心。

vmware+redhat9 摄像头驱动安装方法一相关推荐

  1. NVIDIA显卡驱动安装和ZED摄像头驱动安装及使用

    ZED驱动安装及使用说明 步骤1:安装nvidia 显卡驱动 1).到英伟达官网搜索,下载电脑相应的显卡驱动.run文件 https://www.nvidia.com/Download/index.a ...

  2. ros uvc摄像头驱动安装

    USB插入win10系统设备管理器/照相机/属性/详细信息/属性/硬件ID :VID_1BCF ;PID:2CBD linux下输入,安装驱动: sudo apt-get install ros-ki ...

  3. vmware Dos声卡驱动安装说明

    Vmware虚拟机中dos\win3.1声卡驱动,Vmware使用虚拟创新SB16声卡来实现的.在dos下执行install.exe就可以开始安装了.同时注意查看虚拟机的vmx文件,是不是有这样几条, ...

  4. ROS USB摄像头驱动安装

    在ROS下常用的主要有两种驱动包:usb_cam和uvc_cam. 2 .usb_cam安装 在工作空间中采用源代码安装: cdcatkinws/src cd catkin_ws/src git cl ...

  5. uEye摄像头驱动安装(ubuntu)

    哎,ubuntu重装,uEye摄像头的驱动也得重装. 怕再次重装,决定写篇博客,帮助自己也帮助下别人 首先IDS公司的摄像头还是不错了,除了usb外,还可以使用以太网连接,而且有一些中文手册 不过驱动 ...

  6. win7 xp win8 系统驱动安装说明,万能驱动下

    驱动安装说明: 驱动安装方法一: xp系统32位 ,win7 32位,win764  win8 64 根据自己的系统选择相应的驱动安装文件. 驱动没有的话,得下载哦,下载地址 http://pan.b ...

  7. w ndows摄像头驱动怎么安,一步一步教你安装如何摄像头驱动(图)

    1,摄像头驱动手动安装 将摄像头连接到电脑有效的USB接口上,系统将会提示找到新硬件,并弹出产品安装向导: 教你安装如何摄像头驱动 按照提示:点击"下一步" 教你安装如何摄像头驱动 ...

  8. Ubuntu系统---NVIDIA 驱动安装

    Ubuntu系统---NVIDIA 驱动安装 第一次安装"NVIDIA 驱动",小小的激动,因为终于可以玩GPU了.预想一块GPU,盼望太久,差点放弃,感谢J姐让我捡个漏.但是,第 ...

  9. 联想服务器id显示感叹号,网卡驱动安装后显示感叹号

    相关文章: 故障现象: 网卡驱动安装后显示感叹号,如图: 原因分析: 网卡驱动安装后显示有感叹号故障绝大部分仍是驱动安装错误导致,可通过重新下载并安装官网提供驱动或者通过第三方软件更新解决,亦或通过彻 ...

最新文章

  1. python连接oracle数据库_Python连接oracle数据库 例子一
  2. 冷热分离和直接使用大数据库_基于 MySQL 的热数据与冷数据分离设计与实现
  3. 模型训练慢和显存不够怎么办?GPU加速混合精度训练
  4. docker用gpu的参数_ZStack实践汇 | ZStack+Docker支撑GPU业务实践
  5. android cursor 空,java – Android:即使数据库不为空,Cursor也总是返回null
  6. Python模拟汉诺塔问题移动盘子的过程
  7. c++编译器对类的处理
  8. 算法笔记--STL中的各种遍历及查找(待增)
  9. Django路由控制
  10. ICCV2021 | 简单有效的长尾视觉识别新方案:蒸馏自监督(SSD)
  11. Openstack 笔记概要
  12. Web.py session用户认证
  13. 基于C语言设计的无边框背景透明窗体
  14. 使用压缩包安装mysql
  15. 单位脉冲响应、单位阶跃响应的作用?
  16. css鼠标经过字体抖动,jQuery+css3实现文字跟随鼠标的上下抖动
  17. 浮点数切分 C++
  18. 回答朋友关于微信CRM系统如何使用的问题
  19. 手持PDA功能及优势
  20. LBS-----基站轨迹定位算法

热门文章

  1. USB HID接口芯片
  2. 安装 WineHQ 安装包
  3. 多元函数第五:拓扑初步(1):开集,闭集,内部,边界,外部
  4. java 实现文本转为语音
  5. PR剪辑教学之电子相册案例
  6. 【软件架构】支持大规模系统的设计模式和原则
  7. 手机访客更方便刷脸开闸更快捷
  8. Windows打包为用户安装字体
  9. channel shuffle通道洗牌
  10. CSS 精灵(雪碧图、精灵图)、滑动门