linuxudevtty
*Linuxシリアルポートのパスを固定する [[index]] **やりかた 2022-06-21 Alma Linux 8.6 udevのrulesファイルを書いて、パスを固定する。 調査方法 デバイスの情報を確認する >udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) 上記コマンド出力の一部抜粋、これをルールに記述する。 > ATTRS{idProduct}=="6001" > ATTRS{idVendor}=="0403" > ATTRS{serial}=="XXYYZZ12" FTDIのデバイス(FT232,FT245)なら、serialが使えるので、それを利用するのが手っ取り早い。 serialは、FTProgで設定できる。FTProgは、FTDIが公式に配布している。 下記の例だと、FT ProgでSerial Numberを"XXYYZZ12"に設定する。 &img(ftprog.png); 90-usb-serial-devices.rules >SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="XXYYZZ12", SYMLINK+="ttyXYYZ", GROUP="dialout", MODE="0666" ルールをインストールして、udevのルールを再読み込みするスクリプト instusbserialrule.sh >#!/bin/bash >cp 90-usb-serial-devices.rules /etc/udev/rules.d/ >udevadm control --reload-rules うまくいけば、/dev/ttyXYZが増える。 設定がうまくいかない時は下記コマンドを使うと、エラーなんかも表示してくれる。 ただし、存在しない(判定してくれない)ATTRSを指定してもエラーは出ない。 >udevadm test -a -p $(udevadm info -q path -n /dev/ttyUSB0) ちょっと間違えた時、$はいらない。罠としてはATTRS{port_number}は利用できない。 >Reading rules file: /etc/udev/rules.d/90-usb-serial-devices.rules >Invalid rule /etc/udev/rules.d/90-usb-serial-devices.rules:4: unknown key '$ATTRS{port_number}' >Reading rules file: /usr/lib/udev/rules.d/90-vconsole.rules **MOXA UPort 1450 で、困ったのが[[MOXA UPort 1450>https://www.moxa.com/jp/products/industrial-edge-connectivity/usb-to-serial-converters-usb-hubs/usb-to-serial-converters/uport-1200-1400-1600-series/uport-1450]] &amazon(B07RYR15KV); nmこいつがシリアル番号が無い。 ttyUSBxだとFTDIと混ざってしまうので、これに別名を付けたい。 色々試した末、udevadm testの最後の方に".ID_PORT"という使えそうなのがあったのでこちらを使ってみた >SUBSYSTEM=="tty", ATTRS{idVendor}=="110a", ATTRS{idProduct}=="1450", SYMLINK+="ttyXYZMX$env{.ID_PORT}", GROUP="dialout", MODE="0666" うまくいくと、/dev/ttyXYZMX0,/dev/ttyXYZMX1,/dev/ttyXYZMX2,/dev/ttyXYZMX3 が増える。 **参考 [[USB-シリアル変換器のデバイスファイル名を固定する>https://smdn.jp/electronics/udev_create_persistent_usb_device_symlink/]] [[USBシリアルを色々な条件で固定する。>https://qiita.com/rdonster/items/ecd335abb2d76eec943d]] これを見てなんか".ID_PORT"使えそうだなーと思った。 [[linux - シリアルポートをある範囲の番号に割り当てる/制限するためのudevルール>https://tutorialmore.com/questions-358628.htm]]
2024-11-21 18:23:49 32400