首先,查詢現有的usb轉serial的裝置命令
pi@raspberrypi:~ $ ls -l /sys/class/tty/ttyUSB*
lrwxrwxrwx 1 root root 0 Apr 24 06:23 /sys/class/tty/ttyUSB0 -> ../../devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/ttyUSB0/tty/ttyUSB0
lrwxrwxrwx 1 root root 0 Apr 24 06:23 /sys/class/tty/ttyUSB1 -> ../../devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB1/tty/ttyUSB1
查詢設備的匹配類型 idVendor 和 idProduct 在此利用這兩個進行規定和指定,但缺點是如果兩個轉換器都是同一個廠牌可能會無效
idVendor和idProduct可以由lsusb或lsusb -vvv命令查看
其他 udev常用的匹配類型:
- BUS:匹配匯流排類型,比如PCI USB等
- KERNEL:匹配Kernel設備名,比如hda hdb
- DRIVER:匹配Kernel的驅動程式名
- SUBSYSTEM:匹配子系統名
- ID:匹配匯流排系統的ID (e.g. PCI bus ID)
- PLACE:匹配物理位置 (對USB很有用)
修改/創立新的規則文件路徑為
/etc/udev/rules.d/10-local.rule
内容如下
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE="0777", SYMLINK+="uart_nano"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0777", SYMLINK+="uart_compass"
說明:
匹配sys中內核名為ttyUSB*的設備,屬性匹配依據生產商編號idVendor和產品號idProduct, 設定讀寫許可權為0777, 符號連結名為uart_nano(CH340串口轉USB)和uart_compass(FDTI串口轉USB)
完成後,存檔後退出後udev規則就生效了,重新拔插兩個串口設備或重開機(sudo reboot),就可以看到/dev/uart_nano指向/dev/ttyUSB0, /dev/uart_compass指向/dev/ttyUSB1