« PicoとTWELITEを電池駆動 | トップページ | TKinter afterメソッド:再帰的コールによる自動更新 »

2021年2月21日 (日)

Raspberry Pi でのUSB CDC ACM

rshellでPicoをUSBで接続するにあたって/dev/ttyACM0を指定した。

そもそもACMってなんだろうってことで調べたので備忘録。

USB CDC ACM、Universal Serial Bus Communication Device Class Abstruct Control Modelの頭文字だということらしい。

このデバイスはLinux上では /dev/ttyACM* として認識されるとのこと。つまり、PicoはCDC ACMデバイスとして認識されたということだ。そこでlsusbを実行してみた。

pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 2e8a:0005
Bus 001 Device 003: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

この中にPicoらしきものがない。とりあえず2e8a:0005をメモ。現在Raspberry PiのUSBにはデバイスが2つ(LogitechのUSBアダプターとPico)が接続されている。

Img04713

そこでdmesgでカーネル出力メッセージをみてみた。

pi@raspberrypi:~ $ dmesg
....
[ 1.813769] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[ 1.996373] usb 1-1: New USB device found, idVendor=2109, idProduct=3431, bcdDevice= 4.21
[ 1.996394] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 1.996412] usb 1-1: Product: USB2.0 Hub
[ 1.998223] hub 1-1:1.0: USB hub found
[ 1.998538] hub 1-1:1.0: 4 ports detected
[ 2.323746] usb 1-1.1: new full-speed USB device number 3 using xhci_hcd
[ 2.463994] usb 1-1.1: New USB device found, idVendor=046d, idProduct=c534, bcdDevice=29.01
[ 2.464014] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.464032] usb 1-1.1: Product: USB Receiver
[ 2.464048] usb 1-1.1: Manufacturer: Logitech
[ 2.476766] input: Logitech USB Receiver as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/0003:046D:C534.0001/input/input0

....

[ 2.723762] usb 1-1.3: new full-speed USB device number 4 using xhci_hcd
[ 2.861186] usb 1-1.3: New USB device found, idVendor=2e8a, idProduct=0005, bcdDevice= 1.00
[ 2.861207] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.861225] usb 1-1.3: Product: Board in FS mode
[ 2.861242] usb 1-1.3: Manufacturer: MicroPython
[ 2.861258] usb 1-1.3: SerialNumber: 000000000000

[ 6.833920] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device

USB Bus 1-1.1にLogtech、1-1.3にPicoが検出された記録が残っている。そして1-1.3はUSB ACM Deviceと認識されてttyACM0でマウントされている。LogtechはMouseとKeyboardがその先に繋がっていて、ACM Deviceとしては認識されていない(実際コミュニケーションデバイスではないし)。

lsusbの出力でメモした2e8a:0005はUSB deviceとしてのpicoのVendor IDとProduct IDだったようだ。なのでBus 001 Device 005はpicoと判明した。

1-1.1とか1-1.3とかはUSBのソケット番号に対応するらしい。実際、LogtechのUSBアダプタを直下のソケットに移したらdmesgに以下が記録された。

[ 3602.399066] usb 1-1.2: new full-speed USB device number 6 using xhci_hcd
[ 3602.539296] usb 1-1.2: New USB device found, idVendor=046d, idProduct=c534, bcdDevice=29.01
[ 3602.539317] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3602.539335] usb 1-1.2: Product: USB Receiver
[ 3602.539353] usb 1-1.2: Manufacturer: Logitech

いろいろと奥が深い。

« PicoとTWELITEを電池駆動 | トップページ | TKinter afterメソッド:再帰的コールによる自動更新 »

ツールの使い方」カテゴリの記事

ラズパイ日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« PicoとTWELITEを電池駆動 | トップページ | TKinter afterメソッド:再帰的コールによる自動更新 »