当前位置: 首页 > article >正文

rk3588 区分两个相同的usb相机

有时候会插入两个一模一样的usb相机,担心每次启动他们所对应的设备节点 /dev/video* 会变化,所以需要绑定usb口,区分两个相机。把两个相机都插入后,查看usb信息

root@rk3588:/# udevadm info --attribute-walk --name=/dev/video0Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.looking at device '/devices/platform/fc800000.usb/usb1/1-1/1-1:1.0/video4linux/video0':KERNEL=="video0"SUBSYSTEM=="video4linux"DRIVER==""ATTR{dev_debug}=="0"ATTR{index}=="0"ATTR{name}=="USB Camera: USB Camera"looking at parent device '/devices/platform/fc800000.usb/usb1/1-1/1-1:1.0':KERNELS=="1-1:1.0"SUBSYSTEMS=="usb"DRIVERS=="uvcvideo"ATTRS{bAlternateSetting}==" 0"ATTRS{authorized}=="1"ATTRS{iad_bFunctionClass}=="0e"ATTRS{iad_bInterfaceCount}=="02"ATTRS{bInterfaceSubClass}=="01"ATTRS{iad_bFunctionSubClass}=="03"ATTRS{bInterfaceNumber}=="00"ATTRS{iad_bFirstInterface}=="00"ATTRS{bInterfaceProtocol}=="00"ATTRS{iad_bFunctionProtocol}=="00"ATTRS{bInterfaceClass}=="0e"ATTRS{bNumEndpoints}=="01"ATTRS{supports_autosuspend}=="1"ATTRS{interface}=="USB Camera"looking at parent device '/devices/platform/fc800000.usb/usb1/1-1':KERNELS=="1-1"SUBSYSTEMS=="usb"DRIVERS=="usb"ATTRS{configuration}==""ATTRS{bMaxPacketSize0}=="64"ATTRS{bDeviceClass}=="ef"ATTRS{bcdDevice}=="1001"ATTRS{bNumInterfaces}==" 2"ATTRS{bConfigurationValue}=="1"ATTRS{manufacturer}=="VNV"ATTRS{bNumConfigurations}=="1"ATTRS{authorized}=="1"ATTRS{speed}=="480"ATTRS{idProduct}=="c001"ATTRS{urbnum}=="32"ATTRS{devnum}=="2"ATTRS{product}=="USB Camera"ATTRS{maxchild}=="0"ATTRS{bmAttributes}=="80"ATTRS{bDeviceSubClass}=="02"ATTRS{bMaxPower}=="500mA"ATTRS{rx_lanes}=="1"ATTRS{removable}=="unknown"ATTRS{idVendor}=="1bcf"ATTRS{version}==" 2.00"ATTRS{avoid_reset_quirk}=="0"ATTRS{bDeviceProtocol}=="01"ATTRS{tx_lanes}=="1"ATTRS{devspec}=="(null)"ATTRS{ltm_capable}=="no"ATTRS{devpath}=="1"ATTRS{busnum}=="1"ATTRS{quirks}=="0x0"looking at parent device '/devices/platform/fc800000.usb/usb1':KERNELS=="usb1"SUBSYSTEMS=="usb"DRIVERS=="usb"ATTRS{configuration}==""ATTRS{bMaxPacketSize0}=="64"ATTRS{bDeviceClass}=="09"ATTRS{bcdDevice}=="0510"ATTRS{bNumInterfaces}==" 1"ATTRS{bConfigurationValue}=="1"ATTRS{manufacturer}=="Linux 5.10.110 ehci_hcd"ATTRS{bNumConfigurations}=="1"ATTRS{authorized}=="1"ATTRS{speed}=="480"ATTRS{idProduct}=="0002"ATTRS{urbnum}=="23"ATTRS{devnum}=="1"ATTRS{product}=="EHCI Host Controller"ATTRS{maxchild}=="1"ATTRS{bmAttributes}=="e0"ATTRS{bDeviceSubClass}=="00"ATTRS{bMaxPower}=="0mA"ATTRS{rx_lanes}=="1"ATTRS{removable}=="unknown"ATTRS{idVendor}=="1d6b"ATTRS{interface_authorized_default}=="1"ATTRS{authorized_default}=="1"ATTRS{version}==" 2.00"ATTRS{avoid_reset_quirk}=="0"ATTRS{serial}=="fc800000.usb"ATTRS{bDeviceProtocol}=="00"ATTRS{tx_lanes}=="1"ATTRS{ltm_capable}=="no"ATTRS{devpath}=="0"ATTRS{busnum}=="1"ATTRS{quirks}=="0x0"looking at parent device '/devices/platform/fc800000.usb':KERNELS=="fc800000.usb"SUBSYSTEMS=="platform"DRIVERS=="ehci-platform"ATTRS{companion}==""ATTRS{driver_override}=="(null)"ATTRS{uframe_periodic_max}=="100"looking at parent device '/devices/platform':KERNELS=="platform"SUBSYSTEMS==""DRIVERS==""

通过 KERNELS=="1-1" (应该可以加更多信息来区分,没深入研究)可以区分usb相机对应的usb口,udev可以绑定usb相机到对应的usb

root@rk3588:/# cat /etc/udev/rules.d/50-video.rules 
KERNEL =="video*",ATTR{index}=="0",KERNELS=="1-1",MODE:="0777",SYMLINK+="my_video0"
KERNEL =="video*",ATTR{index}=="0",KERNELS=="2-1",MODE:="0777",SYMLINK+="my_video1"

这样不管usb 0口插入的是哪个usb相机,它都对应 /dev/my_video0 节点,应用层访问该节点即可获取数据。

http://www.lryc.cn/news/2404456.html

相关文章:

  • [概率论基本概念4]什么是无偏估计
  • 乐观锁与悲观锁的实现和应用
  • PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式
  • 【vue】Uniapp 打包Android 文件选择上传问题详解~
  • ASR技术(自动语音识别)深度解析
  • 图论水题2
  • Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然
  • 网络编程之服务器模型与UDP编程
  • Transformer-BiLSTM、Transformer、CNN-BiLSTM、BiLSTM、CNN五模型时序预测
  • 阿里云服务器安装nginx并配置前端资源路径(前后端部署到一台服务器并成功访问)
  • Ubuntu 下开机自动执行命令的方法
  • C++11新增重要标准(下)
  • 【第六篇】 SpringBoot的日志基础操作
  • Pluto论文阅读笔记
  • ubuntu显示器未知
  • Faiss向量数据库全面解析:从原理到实战
  • matlab 2024a ​工具箱Aerospsce Toolbox报错​
  • 使用有限计算实现视频生成模型的高效训练
  • Server2003 B-1 Windows操作系统渗透
  • 一次Oracle的非正常关闭
  • AI不会杀死创作,但会杀死平庸
  • JeecgBoot低代码管理平台
  • Fetch与Axios:区别、联系、优缺点及使用差异
  • YOLO11解决方案之分析
  • yolov11与双目测距结合,实现目标的识别和定位测距(onnx版本)
  • 基于51单片机和8X8点阵屏、独立按键的填充消除类小游戏
  • 将数据库表导出为C#实体对象
  • 物联网技术发展与应用研究分析
  • 金融系统渗透测试
  • C++ 信息学奥赛总复习题