Upload
kenichiro-matohara
View
153
Download
2
Embed Size (px)
Citation preview
Raspberry PiのUSB OTGを試す
KenichiroMATOHARA(@matoken)
http://matoken.org
鹿児島Linux勉強会2017.01(20170104)
サンエールかごしま 中研修室1
@matoken 1
自転車
@matoken 2
Raspberry PiのUSB OTGを試す
@matoken 3
Raspberry Pi英国製のちっこいコンピュータ
幾つか種類がある
今回のOTGが利用できるのはA/A+/ZeroでBシリーズでは利用できない
A/A+はUSB AAになるのでケーブルの入手性が悪い
ZeroはmicroUSB
@matoken 4
@matoken 5
Raspberry Pi ZERO
@matoken 6
USB OTGUSB OnTheGo
USB ホストとしてもデバイスとしても利用できる
AndroidをPCに繋ぐとMTPデバイスとして見えるけど,AndroidにUSBキーボードを繋ぐとUSBホストとして動作して利用できるなど
Raspberry Piでもこれが利用できる似たものでBBBや96board等動作するものは多い
利用内容にもよるけどmicroUSBケーブル1本だけ(電源兼通信)で利用出来るので便利
@matoken 7
Raspberry Piで利用できそうなプロトコル
シリアル (g_serial)
イーサネット (g_ether)
マスストレージ (g_mass_storage)
MIDI (g_midi)
オーディオ (g_audio)
キーボード,マウス,ジョイスティック (g_hid)
マスストレージ&シリアル (g_acm_ms)
イーサネット&シリアル (g_cdc)
イーサネット&マスストレージ&シリアル (g_multi)
ウェブカメラ (g_webcam)
プリンター (g_printer)
テスト用? (g_zero)@matoken 8
USB OTGを利用するためのRaspberryPi(Raspbian)での前準備
パスワードを規定値から変更 $ passwd
OSを最新にする $ sudo apt update && sudo apt upgrade y
firmwareを最新にする sudo rpiupdate
dwc2 USB driverが利用できるように /boot/config.txt を編集
$ echo "# USB OTGdtoverlay=dwc2" | sudo tee a /boot/config.txt
再起動
@matoken 9
シリアルを使ってみる(Raspberry Pi認識)Raspberry Pi側でシリアルの g_serial moduleを読み込む
$ sudo modprobe g_serial$ lsmod|grep g_serialg_serial 3753 0 libcomposite 49383 3 usb_f_acm,usb_f_rndis,g_serial$ dmesg | tail 8[ 332.804810] g_serial gadget: Gadget Serial v2.4[ 332.804840] g_serial gadget: g_serial ready[ 332.804887] dwc2 20980000.usb: dwc2_hsotg_enqueue_setup: failed queue ([ 332.807914] dwc2 20980000.usb: bound driver g_serial[ 333.013000] dwc2 20980000.usb: new device is highspeed[ 333.093343] dwc2 20980000.usb: new device is highspeed[ 333.161825] dwc2 20980000.usb: new address 26[ 335.546058] g_serial gadget: highspeed config #2: CDC ACM config
/dev/ttyGS0 が生えてくる
$ ls ltr /dev/tty*| tail 2crwrw 1 root dialout 243, 0 12月 24 18:24 /dev/ttyGS0crw 1 pi tty 204, 64 12月 24 18:33 /dev/ttyAMA0@matoken 10
シリアルを使ってみる(PC認識)PC側での認識例(/dev/ttyACM0として認識)
[137739.592791] usb 41.2: new highspeed USB device number [137739.701258] usb 41.2: New USB device found, idVendor=[137739.701264] usb 41.2: New USB device strings: Mfr=1, Product=[137739.701268] usb 41.2: Product: Gadget Serial v2.4[137739.701271] usb 41.2: Manufacturer: Linux 4.4.34+ with[137739.701419] usb 41.2: Device is not authorized for usage[137742.073829] cdc_acm 41.2:2.0: ttyACM0: USB ACM device[137742.074747] usbcore: registered new interface driver cdc_acm[137742.074748] cdc_acm: USB Abstract Control Model driver
@matoken 11
シリアルを使ってみる(叩いてみる)Raspberry Pi側で待ち受け
$ cat /dev/ttyGS0
PC側からメッセージを送ってみる
$ echo "hello pi." > /dev/ttyACM0
Raspberry Pi側にメッセージが
hello pi.
@matoken 12
シリアルモジュールのアンロード
$ sudo modprobe r g_serial$ lsmod | grep g_serial
@matoken 13
シリアルモジュールの自動読み込み設定
kernelパラメータに書く方法 /boot/cmdline.txt を開いて rootwait の後ろに modules
load=dwc2,g_serial を追記する
/etc/modulesに書く方法
$ echo "g_serial" | sudo tee a /etc/modules
どちらかの手順でOK
再起動で反映
@matoken 14
シリアルをgettyに繋いでみる
$ sudo systemctl enable serial[email protected]
これでホストから繋ぐとコンソールが利用できる
$ cu l /dev/ttyACM0 s 115200Connected.
Raspbian GNU/Linux 8 pizero ttyGS0
pizero login:
※モジュールがロードされるのが遅いのでGPIOのシリアルと違いブートメッセージを見ることは出来ない(と思う)
@matoken 15
利用例
シリアルコンソールでホストから繋いでメンテナンス(GPIOより配線が少ない)
GPSモジュールの結果を出力してUSB GPSに
bcm2708rngを利用して乱数生成器に:
@matoken 16
イーサネットを使ってみる
g_ether を読み込むと /dev/usb0 が生えてくる
あとは普通のネットワークカードとして設定すればOK
HOST PCで「他のコンピューターへ共有」と設定すると便利
@matoken 17
シリアルとイーサネットを同時に利用する
g_cdc を読み込むとシリアルとイーサネットが同時に利用できる
/dev/ttyGS0 と /dev/usb0 が生えてくる
日常使いに便利
@matoken 18
マスストレージを利用する
g_mass_storage に引数を付けて読み込むとマスストレージ(USBメモリ)として利用できる
引数にはデバイスやファイルが指定できる /dev/mmcblk0p3
/home/pi/disk.img
ファイルの前準備例
$ dd if=/dev/zero of=/home/pi/disk.img bs=1M count=1024$ /sbin/mkfs.vfat /home/pi/disk.img
同時に複数指定も出来る
$ sudo modprobe g_mass_storage file=/dev/mmcblk0p3,/home/
@matoken 19
イーサネット&マスストレージ&シリアルを同時に利用する
g_multi を読み込むと同時に利用できる
@matoken 20
キーボード,マウス,ジョイスティック
HID(g_hid)で行けると思うんだけど……
pi@pizero:~$ sudo modprobe g_hidmodprobe: ERROR: could not insert 'g_hid': No such devicepi@pizero:~$ sudo modprobe v g_hidinsmod /lib/modules/4.4.34+/kernel/drivers/usb/gadget/legacymodprobe: ERROR: could not insert 'g_hid': No such devicepi@pizero:~$ ls l /lib/modules/4.4.34+/kernel/drivers/usbrwrr 1 root root 10928 11月 26 01:35 /lib/modules/4.4.34+/
残りの他のも含め宿題に…….
@matoken 21
powered by Marp Markdown Presentation WriterLicence : CC BYNCSA 4.0
@matoken 22