有两个以上的USB设备,他们的Vendor ID和Product ID都一样,如何指定对应的usb插口和/dev/ttyUSB的序号?

如果有两个以上的USB设备,他们的Vendor ID和Product ID都一样,那么无法通过Vendor ID和Product ID来区分它们。需要采取其他方式来指定对应的USB插口和/dev/ttyUSB的序号。有以下两条思路:

1,通过设备的序列号(Serial Number)来区分它们。每个USB设备都有一个唯一的序列号,可以在设备的属性中找到。可以通过在udev规则中设置SYMLINK选项来为每个设备指定一个独特的符号链接名,从而将其与/dev/ttyUSB的特定序号关联起来。

2,在插入USB设备时,手动将其插入到特定的USB插口中。然后可以通过udev规则中的ATTRS选项来匹配设备的属性,以便将其与特定的/dev/ttyUSB序号关联起来。例如,可以使用ATTRS{serial}属性来匹配设备的序列号。

需要注意的是,这种方法需要手动操作USB插口,一旦设备被插入到不同的插口中,它们的/dev/ttyUSB序号可能会发生变化。因此,最好将每个设备插入到固定的USB插口中,以确保它们始终与相同的/dev/ttyUSB序号关联。

具体如何指定某个物理上usb插口为给定的/dev/ttyUSB序号

要将特定的物理USB插口与给定的/dev/ttyUSB序号绑定,可以使用udev规则。

首先,需要确定要绑定的USB设备的Vendor ID 和 Product ID,以及设备的序列号(Serial Number),可以使用lsusb命令查看:

$ lsusb
Bus 001 Device 003: ID 0c45:7603 Microdia USB Camera (Asus F3SA notebook integrated webcam)
Bus 001 Device 002: ID 064e:a101 Suyin Corp. Acer CrystalEye Webcam
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

将要绑定的USB设备插入到要绑定的物理USB插口中。

创建一个udev规则文件,例如/etc/udev/rules.d/99-usb-serial.rules:

$ sudo vi /etc/udev/rules.d/99-usb-serial.rules

在规则文件中添加以下内容,将设备的Vendor ID、Product ID替换成实际的值,将ATTRS{devnum}替换为要绑定的物理USB插口的编号(可以使用lsusb -t命令查看):

SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="xxxx", ATTRS{devnum}=="xx", SYMLINK+="ttyUSB0"

其中,SUBSYSTEM=="tty"表示只对tty设备进行匹配,ATTRS{idVendor}和ATTRS{idProduct}分别指定设备的Vendor ID和Product ID,ATTRS{devnum}指定设备所在的物理USB插口编号,SYMLINK+="ttyUSB0"表示将匹配的设备链接到/dev/ttyUSB0。

重载udev规则,使其生效:

$ sudo udevadm control --reload-rules

重新插入设备,检查设备是否被正确地链接到/dev/ttyUSB0:

$ ls -l /dev/ttyUSB0
lrwxrwxrwx 1 root root 15 Jul 28 10:35 /dev/ttyUSB0 -> ttyACM0

如果设备被正确地链接到/dev/ttyUSB0,那么就可以使用这个设备了。如果需要绑定多个设备,可以创建多个规则文件,每个文件为一个设备指定一个唯一的链接名称。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值