ルーターの設定,シリアルコンソール,arduinoのような自作デバイスで使うUSB-シリアル変換器は,udev を使うと
を自動設定できます.
うまく設定すると rootアカウントや sudo を使わずに シリアルポートが使えるようになり大変便利になります.
以下,具体的な手順をまとめます
USBデバイスのIDを調べる
デバイスの識別子(ID)としては
- USBデバイスのベンダーIDとプロダクトIDの組み合わせ
- 製品固有のシリアル番号
などが利用できます
これらの識別子は dmesg で簡単に確認できます.
たとえば arduino uno を繋いだ場合は以下の通りです
[518136.789084] usb 3-5: new full-speed USB device number 22 using xhci_hcd [518136.964454] usb 3-5: New USB device found, idVendor=2a03, idProduct=0043 [518136.964458] usb 3-5: New USB device strings: Mfr=1, Product=2, SerialNumber=220 [518136.964460] usb 3-5: Product: Arduino Uno [518136.964462] usb 3-5: Manufacturer: Arduino Srl [518136.964464] usb 3-5: SerialNumber: *****シリアル番号**** [520646.175416] cdc_acm 3-5:1.0: ttyACM0: USB ACM device
この場合
- ベンダID,プロダクトIDは,それぞれ 2a03,0043
- シリアルは伏せ字の部分
になります
また末尾の出力から,とりあえずデバイスファイルの名前は /dev/ttyACM0 となっていることがわかります
このデバイスファイル名を手がかりに udev にデバイスの情報を問い合わせます
$ udevadm info -a -n /dev/ttyACM0
大量に情報が出力されますが,重要なのは識別子に対応する ATTRS{idProduct} や ATTRS{serial} の出力です
ATTRS{idProduct}=="0043" ATTRS{idVendor}=="2a03" ATTRS{serial}=="**シリアル番号**"
udev の設定ファイルの作成
設定ファイルを用意します.名前は /etc/udev/rules.d/99-serial.rules とします.
中身は以下の通り
SUBSYSTEM=="tty", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0043", ATTRS{serial}=="**シリアル番号**", SYMLINK+="arduino", MODE="0666"
この設定内容で
になります.
設定を反映させます
$ sudo /etc/init.d/udev reload
動作確認
USBデバイスを挿し直します
/dev/arduino というシンボリックリンクが自動作成されれば成功です
絵で見てわかるIoT/センサの仕組みと活用
posted with amazlet at 16.02.23
これ1冊でできる! Arduinoではじめる電子工作 超入門
posted with amazlet at 16.02.23