树莓派USB端口绑定

本文参考引用博客https://blog.csdn.net/lby0910/article/details/77586728

在做树莓派相关的工程时,由于Linux是按照插入顺序对设备进行编号,常遇到插拔不同USB设备(如串口、摄像头、传感器等外设)树莓派识别端口号跳跃的问题,例如原本识别为/dev/video0,重插后识别为/dev/video2这种尴尬的问题。这使得在程序中固定端口号读取十分不方便。幸运的是,我们可以通过使用USB设备的唯一识别码固定端口号。下面分别对串口设备和USB摄像头设备的绑定方法做简介(假设插拔设备后其ID唯一):

查询ID

lsusb

  结果如下

Bus 001 Device 001: ID 0909:0824 Audio-Technica Corp
Bus 001 Device 002: ID 1a40:0101 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 003: ID 0924:1b25 Cubeternet

 通过多次插拔观察设备增减可以确认出设备信息和设备的对应关系。以上Device001/002/003分别是摄像头0、串口蓝牙、摄像头1。接下来我们尝试使用其32位ID号固定其端口。

修改文件

sudo vim /etc/udev/rules.d/99-com.rules

 打开文件后在最后一行添加

KERNEL=="ttyUSB*",ATTRS{idVendor}=="1a40",ATTRS{idProduct}=="0101", MODE:=“0777”, SYMLINK+="device0"
KERNEL=="video*",ATTRS{idVendor}=="0909",ATTRS{idProduct}=="0824", MODE:=“0777”, SYMLINK+="video0"
KERNEL=="video*",ATTRS{idVendor}=="0924",ATTRS{idProduct}=="1b25", MODE:=“0777”, SYMLINK+="video1"

  如果绑定的是串口设备,则KERNEL项写“ttyUSB*”,如果是摄像头设备则写“video*”,将32位ID按顺序写入后两项中,将预绑定的设备名称写入SYMLINK项中

 重启重插

// 重启指令
sudo /etc/init.d/udev restart

 重启后,再次查看当前连接的摄像头设备和串口设备,可以看到新名称,无论之后如何插拔,只要识别到相同的设备ID,linux都会将其命名为刚刚设置的名称。

ls /dev/device*
device0
ls /dev/video*
/dev/video0  /dev/video1

使用/dev/device0, /dev/video0, /dev/video1即可访问相应设备。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值