我们插入多个不同usb串口时候,在/dev/目录下映射的节点为ttyUSB0、ttyUSB1...,且名称不固定,解决该问题则需要为每种串口添加udev规则以便区分。下文以一个usb串口为例。
插入usb串口,执行lsusb命令
[root@localhost rules.d]# lsusb
Bus 001 Device 002: ID 8087:8000 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
找到我们需要添加规则的usb串口,“Bus 002 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter”,以上可知idVendor=1a86,idProduct=7523。
进入到/etc/udev/rules.d目录,新建xxx.rules文件,这里我们新建名为usb.rules 的规则文件,添加以下规则。
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="QinHeng232"
重启系统后,会在/dev目录下建立QinHeng232这个节点。这个节点是根据厂商id及产品id来区分是否为该usb串口的。