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

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.xdnf.cn/news/12273.html

相关文章:

  • 数据库管理与高可用-MySQL主从复制与读写分离
  • Redux 实践与中间件应用
  • 分布式Session处理的五大主流方案解析
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(八):异步处理逻辑详解
  • Copilot for Xcode (iOS的 AI辅助编程)
  • ubuntu 22 安装milvus
  • 【QT面试题】(二)
  • RocketMQ入门5.3.2版本(基于java、SpringBoot操作)
  • 构建 MCP 服务器:第 2 部分 — 使用资源模板扩展资源
  • Unity基于GraphView的可视化关卡编辑器开发指南
  • Playwright 测试框架 - .NET
  • 智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
  • Oracle 用户名大小写控制
  • 若依添加添加监听容器配置(删除键,键过期)
  • 关于事务的简介
  • Ubuntu系统下交叉编译cJSON
  • IDEA运行Tomcat出现乱码问题解决汇总
  • 三种读写传统xls格式文件开源库libxls、xlslib、BasicExcel的比较
  • c++ chrono头文件含义
  • Ubuntu系统配置C++的boost库(含filesystem模块)的方法
  • 前缀和题目:逐步求和得到正数的最小值
  • Vue事件总线
  • MyBatis 查询功能实现全流程
  • 《操盘实战》速读笔记
  • 使用Hutool工具进行rsa加密解密示例:
  • Linux进程替换以及exec六大函数运用
  • 【电赛培训课】测量与信号类赛题分析
  • Power Apps:自动发送运行错误邮件
  • 图着色问题(回溯)
  • Redux:不可变数据与纯函数的艺术