USBシリアルコンバータをたくさん挿してマイコンのデバッグをすることありますよね。
挿す順番でデバイスファイルの名前が変わってしまい面倒ですが、udevのコンフィグファイルを書くことでシンボリックリンクを作成することが出来ます。これによってデバイスファイルを固定した形で作業することが出来ます。
デバイスのID取得
デバイスを挿抜したときのログをdmesgで確認します。
1本目
[ 322.612636] usb 1-2: new full-speed USB device number 12 using xhci_hcd
[ 322.768178] usb 1-2: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 4.00
[ 322.768197] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 322.768209] usb 1-2: Product: USB HS SERIAL CONVERTER
[ 322.768219] usb 1-2: Manufacturer: FTDI
[ 322.768228] usb 1-2: SerialNumber: FT1W8XXX
[ 322.782407] ftdi_sio 1-2:1.0: FTDI USB Serial Device converter detected
[ 322.782530] usb 1-2: Detected FT232BM
[ 322.782971] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0
2本目
[ 406.788163] usb 1-1.3: new full-speed USB device number 14 using xhci_hcd
[ 406.900555] usb 1-1.3: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[ 406.900571] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 406.900583] usb 1-1.3: Product: TTL232R-3V3
[ 406.900594] usb 1-1.3: Manufacturer: FTDI
[ 406.900603] usb 1-1.3: SerialNumber: FTA3BXXX
[ 406.915978] ftdi_sio 1-1.3:1.0: FTDI USB Serial Device converter detected
[ 406.916379] usb 1-1.3: Detected FT232RL
[ 406.918202] usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUSB1
どちらもFTDIのUSBシリアルコンバータですね。
以下の行を確認してデバイスのIDを取得します。
[ 406.900555] usb 1-1.3: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[ 406.900603] usb 1-1.3: SerialNumber: FTA3BXXX
ベンダID、製品ID、シリアル番号をメモしましょう。
- idVendor: 0403
- idProduct: 6001
- SerialNumber: FTA3BXXX
udev ruleの記述
udevのルールを記述して適当な名前を割り当てます。
/etc/udev/rules.d10-local.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FT1W8XXX", SYMLINK+="printer"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTA3BXXX", SYMLINK+="stm_console"
書き込んだあとにはudevに知らせる必要があります。
$ sudo udevadm trigger
ケーブルを挿し直すとシンボリックリンクが作成されていることが分かります。
$ ls -l /dev/label_printer
lrwxrwxrwx 1 root root 7 Mar 28 17:04 /dev/printer -> ttyUSB0
$ ls -l /dev/stm_console
lrwxrwxrwx 1 root root 7 Mar 28 17:04 /dev/stm_console -> ttyUSB1
環境
Linux hostname 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux