Help us understand the problem. What is going on with this article?

イイ感じのシリアルコンソールサーバーを作る

Yak Shaving 感がすごいですが、モチベーションとしては今 CCIE R&S の勉強をしてて、毎回自分のマシンにUSBつなぐの非常につらかった(なるべくワイヤに縛られたくない、マシン変わっても変わらない操作感がほしい)ので SSH して cu コマンドなり screen コマンドで繋げばいい自作のコンソールサーバーもどきを作りました。

シリアルコンソールサーバーまともに買うと数万とかして高いですからね。KANE GA NAI
手元にあるやつだけで完結したい。

これで簡単なプライベートレンタルラックができますね。

必要なもの

  1. シスコの中古の実機いっぱい
  2. USBコンソールケーブルいっぱい
  3. たくさん指せるUSBハブ
  4. サーバー用にする廃棄寸前のラップトップ
  5. Ubuntu 17.10 Desktop or Server

達成すること

  1. USB コンソールケーブルを別のハブのポートに挿しても同じデバイス名で解決させる(Macの用な感じに /dev/tty.usbserial-AI038TTH 出てほしい)
  2. シリアルコンソールなので一般ユーザでも tty デバイスに読み書きできるようにしたい。

結論だけ知りたい方は最後を参照。

Yak Shaving

sudo udevadm info -q path -n /dev/ttyUSB2
wnoguchi@serial:~$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB2  /dev/ttyUSB4  /dev/ttyUSB6  /dev/ttyUSB8
/dev/ttyUSB1  /dev/ttyUSB3  /dev/ttyUSB5  /dev/ttyUSB7  /dev/ttyUSB9
wnoguchi@serial:~$ udevadm info -q path -n /dev/ttyUSB2
/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.4/3-2.4.1/3-2.4.1:1.0/ttyUSB2/tty/ttyUSB2
wnoguchi@serial:~$ udevadm info -q path -n /dev/ttyUSB2
/devices/pci0000:00/0000:00:10.0/usb3/3-1/3-1.4/3-1.4.1/3-1.4.1:1.0/ttyUSB2/tty/ttyUSB2
wnoguchi@serial:~$ udevadm info --name=/dev/ttyUSB2 --attribute-walk | less
  looking at parent device '/devices/pci0000:00/0000:00:10.0/usb3/3-1/3-1.4/3-1.4.1':
    KERNELS=="3-1.4.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="90mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bmAttributes}=="a0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="25"
    ATTRS{devpath}=="1.4.1"
    ATTRS{idProduct}=="6001"
    ATTRS{idVendor}=="0403"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="FTDI"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="FT232R USB UART"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="AI038TTH"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="15"
    ATTRS{version}==" 2.00"
wnoguchi@serial:~$ udevadm info -q path -n /dev/ttyUSB2
/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.4/3-2.4.1/3-2.4.1:1.0/ttyUSB2/tty/ttyUSB2
wnoguchi@serial:~$ udevadm info --name=/dev/ttyUSB2 --attribute-walk | less

  looking at parent device '/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.4/3-2.4.1':
    KERNELS=="3-2.4.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="90mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bmAttributes}=="a0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="41"
    ATTRS{devpath}=="2.4.1"
    ATTRS{idProduct}=="6001"
    ATTRS{idVendor}=="0403"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="FTDI"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="FT232R USB UART"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="AI038TTH"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="15"
    ATTRS{version}==" 2.00"

ハブを経由せずに直接つなぐ

wnoguchi@serial:~$ ls /dev/ttyUSB*
/dev/ttyUSB0
wnoguchi@serial:~$ ls /dev/ttyUSB*
/dev/ttyUSB0
wnoguchi@serial:~$ udevadm info -q path -n /dev/ttyUSB0
/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2:1.0/ttyUSB0/tty/ttyUSB0

  looking at parent device '/devices/pci0000:00/0000:00:10.0/usb3/3-2':
    KERNELS=="3-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="90mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bmAttributes}=="a0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="50"
    ATTRS{devpath}=="2"
    ATTRS{idProduct}=="6001"
    ATTRS{idVendor}=="0403"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="FTDI"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="FT232R USB UART"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="AI038TTH"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="15"
    ATTRS{version}==" 2.00"

別ポート

wnoguchi@serial:~$ udevadm info -q path -n /dev/ttyUSB0
/devices/pci0000:00/0000:00:10.0/usb3/3-1/3-1:1.0/ttyUSB0/tty/ttyUSB0
  looking at parent device '/devices/pci0000:00/0000:00:10.0/usb3/3-1':
    KERNELS=="3-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="90mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bmAttributes}=="a0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="51"
    ATTRS{devpath}=="1"
    ATTRS{idProduct}=="6001"
    ATTRS{idVendor}=="0403"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="FTDI"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="FT232R USB UART"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="AI038TTH"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="300"
    ATTRS{version}==" 2.00"

USBハブの別のポートに刺す。

wnoguchi@serial:~$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB2  /dev/ttyUSB4  /dev/ttyUSB6  /dev/ttyUSB8
/dev/ttyUSB1  /dev/ttyUSB3  /dev/ttyUSB5  /dev/ttyUSB7  /dev/ttyUSB9
wnoguchi@serial:~$ udevadm info -q path -n /dev/ttyUSB2
/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.0/ttyUSB2/tty/ttyUSB2
  looking at parent device '/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.3/3-2.3.1':
    KERNELS=="3-2.3.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="90mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bmAttributes}=="a0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="59"
    ATTRS{devpath}=="2.3.1"
    ATTRS{idProduct}=="6001"
    ATTRS{idVendor}=="0403"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="FTDI"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="FT232R USB UART"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="A103NTFZ"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="15"
    ATTRS{version}==" 2.00"

番号変わってる。
なかなかに厳しい
たぶん ttyUSB0-1 のデバイス抜けたら順番変わるんでしょ??

wnoguchi@serial:~$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB3  /dev/ttyUSB5  /dev/ttyUSB7  /dev/ttyUSB9
/dev/ttyUSB2  /dev/ttyUSB4  /dev/ttyUSB6  /dev/ttyUSB8

ハブのUSB抜く

wnoguchi@serial:~$ ls /dev/ttyUSB*
ls: cannot access '/dev/ttyUSB*': No such file or directory

また差す

wnoguchi@serial:~$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB2  /dev/ttyUSB4  /dev/ttyUSB6  /dev/ttyUSB8
/dev/ttyUSB1  /dev/ttyUSB3  /dev/ttyUSB5  /dev/ttyUSB7
wnoguchi@serial:~$ udevadm info -q path -n /dev/ttyUSB2
/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.0/ttyUSB2/tty/ttyUSB2
  looking at parent device '/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.3/3-2.3.1':
    KERNELS=="3-2.3.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="90mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bmAttributes}=="a0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="95"
    ATTRS{devpath}=="2.3.1"
    ATTRS{idProduct}=="6001"
    ATTRS{idVendor}=="0403"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="FTDI"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="FT232R USB UART"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="A103NTFZ"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="15"
    ATTRS{version}==" 2.00"

アカン

またUSBロールオーバーケーブルUSBハブの別のポートに刺す
ハブ抜いて刺す

  looking at parent device '/devices/pci0000:00/0000:00:10.0/usb3/3-2/3-2.3/3-2.3.1':
    KERNELS=="3-2.3.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="90mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bmAttributes}=="a0"
    ATTRS{busnum}=="3"
    ATTRS{configuration}==""
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="2.3.1"
    ATTRS{idProduct}=="6001"
    ATTRS{idVendor}=="0403"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="FTDI"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="FT232R USB UART"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="A103NTFZ"
    ATTRS{speed}=="12"
    ATTRS{urbnum}=="15"
    ATTRS{version}==" 2.00"

どうやら使ってるロールオーバーケーブルを抜いて、別の作業終わって別のUSBハブポートに差すと
順番変わるっぽいね。
これはきつい。
ttyデバイス名は Mac で接続したときみたいにシリアル番号で出てほしい。

/dev/tty.usbserial-AI038TTH
  1. linux - How to bind USB device under a static name? - Unix & Linux Stack Exchange
  2. しげふみメモ : screenでシリアルコンソール接続
  3. Linuxでシリアルコンソールを使う - builder by ZDNet Japan
  4. cu Tips - Qiita

Macでおつなぎ申す。
cu は ~. で切断。

➜  ~ cu /dev/tty.usbserial-AI0388SG
cu: /dev/tty.usbserial-AI0388SG: System not found

cu --line /dev/tty.usbserial-AI038TTH --speed 9600

➜  ~ cu --line /dev/tty.usbserial-AI038TTH --speed 9600

cu: creat during lock (/var/spool/uucp/TMP00000007cd in /Users/wnoguchi as uid 501): Permission denied
cu: /dev/tty.usbserial-AI038TTH: Line in use
➜  ~ sudo cu --line /dev/tty.usbserial-AI038TTH --speed 9600

R2>~.

Disconnected.

LinuxでUSBシリアルケーブルを使う | NETWIZ.JP

wnoguchi@serial:~$ sudo ls -l /dev/ttyUSB8
crw-rw---- 1 root dialout 188, 8 Dec  9 20:25 /dev/ttyUSB8

Ubuntuでminicom起動すると/dev/ttyUSB0のパーミッションがないと言われる - kinneko@転職先募集中の日記

今度はパーミッションでエラーになるよ。なんやねん...
screen はいけるのに cu はいけない。
sudoers ちゃんと設定したんだけどなあ

wnoguchi@serial:~$ sudo cu --line /dev/ttyUSB0 --speed 9600
cu: open (/dev/ttyUSB0): Permission denied
cu: /dev/ttyUSB0: Line in use

グループ指定したら行けることが判明。

wnoguchi@serial:~$ sudo -g dialout cu --line /dev/ttyUSB0 --speed 9600
Connected.

R1#disable
R1>~.

何もない

root@serial:~# ls /etc/udev/rules.d/

Fixed tty device assignments in Linux using udev

udev(7): dynamic device management - Linux man page

Persistent names for usb-serial devices | HintShop

wnoguchi@serial:~$ apropos udev
apropos: can't set the locale; make sure $LC_* and $LANG are correct
systemd-udevd (8)    - Device event managing daemon
systemd-udevd-control.socket (8) - Device event managing daemon
systemd-udevd-kernel.socket (8) - Device event managing daemon
systemd-udevd.service (8) - Device event managing daemon
udev (7)             - Dynamic device management
udev.conf (5)        - Configuration for device event managing daemon
udevadm (8)          - udev management tool

やっぱマニュアルだな。

wnoguchi@serial:~$ man 7 udev

だんだん眠たくなってきて寝たら昨日の今

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="mlx4_ib3"

ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="tty.usbserial-$attr{serial}"

/dev/tty.usbserial-AI038TTH

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:6b:eb:75", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

シンボリックリンクできたっぽい

wnoguchi@serial:~$ ls -l /dev/tty.us*
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-A103NTFZ -> ttyUSB1
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-A504AOKI -> ttyUSB6
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-A504APRK -> ttyUSB0
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-A504AQ7R -> ttyUSB7
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-A504CU6I -> ttyUSB4
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-A504CVAJ -> ttyUSB3
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-AI0388SG -> ttyUSB9
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-AI038TTH -> ttyUSB2
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-AI038TTZ -> ttyUSB8
lrwxrwxrwx 1 root root 7 Dec 10 07:56 /dev/tty.usbserial-AL00LMJ1 -> ttyUSB5

デーモンを再起動せずともファイル書き込んで再起動すれば反映される。

Ubuntuでminicom起動すると/dev/ttyUSB0のパーミッションがないと言われる - kinneko@転職先募集中の日記

なんかもうこれでいいかなという気持ちになってきた。
シンボリックリンクでイイヨー

/etc/udev/rules.d/99-usb-serial.rules
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666"
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="tty.usbserial-$attr{serial}"
wnoguchi@serial:~$ ls -l /dev/tty.us* /dev/ttyUSB*
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A103NTFZ -> ttyUSB1
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504AOKI -> ttyUSB6
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504APRK -> ttyUSB0
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504AQ7R -> ttyUSB7
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504CU6I -> ttyUSB4
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504CVAJ -> ttyUSB3
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AI0388SG -> ttyUSB9
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AI038TTH -> ttyUSB2
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AI038TTZ -> ttyUSB8
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AL00LMJ1 -> ttyUSB5
crw-rw-rw- 1 root users 188, 0 Dec 10 12:49 /dev/ttyUSB0
crw-rw-rw- 1 root users 188, 1 Dec 10 12:49 /dev/ttyUSB1
crw-rw-rw- 1 root users 188, 2 Dec 10 12:49 /dev/ttyUSB2
crw-rw-rw- 1 root users 188, 3 Dec 10 12:49 /dev/ttyUSB3
crw-rw-rw- 1 root users 188, 4 Dec 10 12:49 /dev/ttyUSB4
crw-rw-rw- 1 root users 188, 5 Dec 10 12:49 /dev/ttyUSB5
crw-rw-rw- 1 root users 188, 6 Dec 10 12:49 /dev/ttyUSB6
crw-rw-rw- 1 root users 188, 7 Dec 10 12:49 /dev/ttyUSB7
crw-rw-rw- 1 root users 188, 8 Dec 10 12:49 /dev/ttyUSB8
crw-rw-rw- 1 root users 188, 9 Dec 10 12:49 /dev/ttyUSB9
wnoguchi@serial:~$ udevadm info --name=/dev/tty.usbserial-AI038TTZ --attribute-walk | less
wnoguchi@serial:~$ screen /dev/tty.usbserial-AI038TTZ
wnoguchi@serial:~$ cu --line /dev/tty.usbserial-AI038TTZ --speed 9600
Connected.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Conclusion

udev のルールに以下書けば OK 。

/etc/udev/rules.d/99-usb-serial.rules
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666"
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="tty.usbserial-$attr{serial}"

作成されたスペシャルデバイスファイルへのシンボリックリンクも貼られる。

wnoguchi@serial:~$ ls -l /dev/tty.us* /dev/ttyUSB*
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A103NTFZ -> ttyUSB1
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504AOKI -> ttyUSB6
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504APRK -> ttyUSB0
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504AQ7R -> ttyUSB7
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504CU6I -> ttyUSB4
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-A504CVAJ -> ttyUSB3
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AI0388SG -> ttyUSB9
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AI038TTH -> ttyUSB2
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AI038TTZ -> ttyUSB8
lrwxrwxrwx 1 root root       7 Dec 10 12:49 /dev/tty.usbserial-AL00LMJ1 -> ttyUSB5
crw-rw-rw- 1 root users 188, 0 Dec 10 12:49 /dev/ttyUSB0
crw-rw-rw- 1 root users 188, 1 Dec 10 12:49 /dev/ttyUSB1
crw-rw-rw- 1 root users 188, 2 Dec 10 12:49 /dev/ttyUSB2
crw-rw-rw- 1 root users 188, 3 Dec 10 12:49 /dev/ttyUSB3
crw-rw-rw- 1 root users 188, 4 Dec 10 12:49 /dev/ttyUSB4
crw-rw-rw- 1 root users 188, 5 Dec 10 12:49 /dev/ttyUSB5
crw-rw-rw- 1 root users 188, 6 Dec 10 12:49 /dev/ttyUSB6
crw-rw-rw- 1 root users 188, 7 Dec 10 12:49 /dev/ttyUSB7
crw-rw-rw- 1 root users 188, 8 Dec 10 12:49 /dev/ttyUSB8
crw-rw-rw- 1 root users 188, 9 Dec 10 12:49 /dev/ttyUSB9

あとはシェルスクリプトなりエイリアスなりでラップして

alias R2='screen /dev/tty.usbserial-AI038TTH'

とかすれば幸せになれるんじゃないかな。

最近私が使っているのはこんな感じのスクリプトです。

serial console screen wrapper script.

/usr/local/bin/con
#!/bin/bash

session_name=$1
case $1 in
  "SW1")
    devname=/dev/tty.usbserial-AL00LMJ1
      ;;
  "SW2")
    devname=/dev/tty.usbserial-A504CVAJ
      ;;
  "SW3")
    devname=/dev/tty.usbserial-A504APRK
      ;;
  "SW4")
    devname=/dev/tty.usbserial-A504CU6I
      ;;
  "SW5")
    devname=/dev/tty.usbserial-A504AQ7R
      ;;
  "SW6")
    devname=/dev/tty.usbserial-FTGNW2EB
      ;;
  "SW7")
    devname=/dev/tty.usbserial-FTZ2DHIG
      ;;
  "SW8")
    devname=/dev/tty.usbserial-FTZ2DFBL
      ;;
  "ASW101")
    devname=/dev/tty.usbserial-FTK1ROUP
      ;;
  "ASW1")
    devname=/dev/tty.usbserial-AI038TTZ
      ;;
  "ASW2")
    devname=/dev/tty.usbserial-A504AOKI
      ;;
  "R1")
    # R1
    devname=/dev/tty.usbserial-AI038TTH
      ;;
  "R2")
    # R2
    devname=/dev/tty.usbserial-A103NTFZ
      ;;
  "R3")
    # R3
    devname=/dev/tty.usbserial-AI0388SG
      ;;
  *)
    echo "No such device."
    exit 404
      ;;
esac

#screen /dev/${devname}
screen  -xRS ${session_name} ${devname}

ハッピー Shaving!

Home Cheap Serial Console Server [PG1X]

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした