由于我们在谈论USB设备并假设您具有udev,因此可以设置一些udev规则。
我猜,这只是一个疯狂的猜测,有人或某事拔出/拔出了设备,然后将其重新插入/添加了设备,这增加了数字。
现在,首先需要供应商和产品ID:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
接下来,您需要序列号(如果有多个):
# udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
ATTRS{serial}=="A6008isP"
现在,让我们创建一个udev规则:
UDEV规则通常分散在中的许多文件中/etc/udev/rules.d
。创建一个名为的新文件99-usb-serial.rules
,并将以下行放入其中,我有三个设备,每个设备都有不同的序列号:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
如果您不希望使用序列号,则来自供应商的具有相同芯片的任何设备都将获得相同的符号链接,在任何给定时间只能插入一个。
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="MySerialDevice"
从这里取
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
。如果没有自定义udev规则,这对您就足够了。