Prolific PL2303 の USB-Serial 変換ケーブルだと思って Linux マシンに接続しても /dev/ttyUSB0
に紐付けられない、なんていうことを今年に入って経験しました。具体的には UGREEN 社の USB 2.0 to RS232 DB9 Serial Flat Cable なのですが、lsusb
コマンドで見てみますとね。
% lsusb
Bus 002 Device 003: ID 067b:23c3 Prolific Technology, Inc.
あら〜。2303 でなく 23C3 ですのね〜、という。ちゃんと Prolific 社のサイトにも PL23C3 の製品ページ がある。こんなときどのようにすれば OS にこの製品を USB-Serical Controller として認識していただけるか、ということについて述べていきましょう。
まずは usbserial
モジュールを読み込みます。OS インストール後のデフォルト設定では usbserial は読み込むように設定されていないでしょう。
% sudo modprobe usbserial
usbserial
モジュールが読み込まれた状態で /sys/bus/usb-serial/drivers/generic/new_id
にベンダ ID とプロダクト ID をスペースを間に入れて組み合わせて記載すると generic
ドライバで接続された機器を利用することができるようになります。/sys/bus/usb-serial/drivers/pl2303/new_id
の方がいいのかしらね。要確認です。
% sudo sh -c 'echo "067b 23c3" > /sys/bus/usb-serial/drivers/generic/new_id'
こうするだけで (既に接続されているならば) カーネルのリングバッファには以下のように出力されます。
usb 2-1.2: New USB device found, idVendor=067b, idProduct=23c3, bcdDevice= 3.05
usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1.2: Product: USB-Serial Controller
usb 2-1.2: Manufacturer: Prolific Technology Inc.
usb 2-1.2: SerialNumber: DIBXf103Y23
usbserial_generic 2-1.2:1.0: The "generic" usb-serial driver is only for testing and one-off prototypes.
usbserial_generic 2-1.2:1.0: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
usbserial_generic 2-1.2:1.0: generic converter detected
さて、認識されてもパーミッションとグループの設定が適切に行われていないと cu
コマンドなどで接続するときに Permission Denied
と怒られてしまうので、/etc/udev/rules.d/
以下にルールファイルを作成します。ファイル名は末尾が .rules
で終わりさえすればあとは適当な名前で構いません。
% sudo sh -c 'echo "KERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"067b\", ATTRS{idProduct}==\"23c3\", GROUP=\"uucp\", MODE=\"0666\"" > /etc/udev/rules.d/60-usb-serial-devices.rules'
% cat /etc/udev/rules.d/60-usb-serial-devices.rules
KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="23c3", GROUP="uucp", MODE="0666"
無理に 1 コマンドで実現しようとするとこういうエスケープだらけの美しくないコマンドになってしまいますが気にしない (気にしろ) 。cu
コマンドは Ubuntu であれば名前の通りの cu
パッケージに含まれているので、cu
コマンドがまだインストールされていなければ sudo apt install cu
で。インストールしたら、以下のコマンドを実行してみましょう。
% cu --parity=none --nostop --line /dev/ttyUSB0 --speed 9600 dir
Connected.
catalyst> enable
Password:
catalyst# exit
あら素敵。cu
コマンドで接続した対話から抜けるときは ~.
と入力します。see man cu (1) です。