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

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 节点,应用层访问该节点即可获取数据。

相关文章:

  • 手写muduo网络库(零):多线程中使用 weakptr 跨线程监听生命状态
  • Linux中 SONAME 的作用
  • 【Redis】Cluster集群
  • LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
  • 【Python工具开发】k3q_arxml 简单但是非常好用的arxml编辑器,可以称为arxml杀手包
  • 《影像引导下骨盆创伤手术的术前骨折复位规划:基于学习的综合流程》|文献速递-深度学习医疗AI最新文献
  • curl获取ip定位信息 --- libcurl-easy(二)
  • 如何在Windows本机安装Python并确保与Python.NET兼容
  • Vue 组件库发布实战(含 TypeScript 支持)
  • 【单片机期末】单片机系统设计
  • .Net Framework 4/C# 关键字(非常用,持续更新...)
  • Playwright 测试框架 - .NET
  • 嵌入式学习笔记-freeRTOS taskENTER_CRITICAL(_FROM_ISR)跟taskEXIT_CRITICAL(_FROM_ISR)函数解析
  • [密码学实战]C语言使用SDF库构建国密算法RESTful服务(五)
  • 机器学习笔记【Week7】
  • 在WPF项目中集成Python:Python.NET深度实战指南
  • Unreal从入门到精通之 UE4 vs UE5 VR性能优化实战
  • 基于大模型的 UI 自动化系统
  • Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
  • 智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
  • 网站缩略图制作/危机公关处理方案
  • 深圳做网站建设月薪多少/今天重大新闻头条新闻
  • 安阳 做网站/电子制作网站
  • 如何进行一个网站建设/建立企业网站步骤
  • 网站服务器选择什么操作系统/成人大学报名官网入口
  • 加强网站建设管理 及时更新/网络广告策划