Raspberry PiのUSB OTGを試す

94 views

Published on

"鹿児島Linux勉強会 2017.01 - connpass" https://kagolug.connpass.com/event/47774/

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
94
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Raspberry PiのUSB OTGを試す

  1. 1. Raspberry PiのUSB OTGを試す KenichiroMATOHARA(@matoken) http://matoken.org 鹿児島Linux勉強会2017.01(2017­01­04) サンエールかごしま 中研修室1 @matoken 1
  2. 2. 自転車 @matoken 2
  3. 3. Raspberry PiのUSB OTGを試す @matoken 3
  4. 4. Raspberry Pi 英国製のちっこいコンピュータ 幾つか種類がある 今回のOTGが利用できるのはA/A+/ZeroでBシリーズでは利用でき ない A/A+はUSB A­Aになるのでケーブルの入手性が悪い ZeroはmicroUSB @matoken 4
  5. 5. @matoken 5
  6. 6. Raspberry Pi ZERO @matoken 6
  7. 7. USB OTG USB On­The­Go USB ホストとしてもデバイスとしても利用できる AndroidをPCに繋ぐとMTPデバイスとして見えるけど,Androidに USBキーボードを繋ぐとUSBホストとして動作して利用できるなど Raspberry Piでもこれが利用できる 似たものでBBBや96board等動作するものは多い 利用内容にもよるけどmicroUSBケーブル1本だけ(電源兼通信)で 利用出来るので便利 @matoken 7
  8. 8. 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
  9. 9. USB OTGを利用するためのRaspberry Pi(Raspbian)での前準備 パスワードを規定値から変更  $ passwd  OSを最新にする  $ sudo apt update && sudo apt upgrade ­y  firmwareを最新にする  sudo rpi­update  dwc2 USB driverが利用できるように /boot/config.txt を編集 $ echo "# USB OTG dtoverlay=dwc2" | sudo tee ­a /boot/config.txt 再起動 @matoken 9
  10. 10. シリアルを使ってみる(Raspberry Pi認識) Raspberry Pi側でシリアルの g_serial  moduleを読み込む $ sudo modprobe g_serial $ lsmod|grep g_serial g_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: fa [  332.807914] dwc2 20980000.usb: bound driver g_serial [  333.013000] dwc2 20980000.usb: new device is high­speed [  333.093343] dwc2 20980000.usb: new device is high­speed [  333.161825] dwc2 20980000.usb: new address 26 [  335.546058] g_serial gadget: high­speed config #2: CDC ACM   /dev/ttyGS0 が生えてくる $ ls ­ltr /dev/tty*| tail ­2 crw­rw­­­­ 1 root dialout 243,  0 12月 24 18:24 /dev/ttyGS0 crw­­­­­­­ 1 pi   tty     204, 64 12月 24 18:33 /dev/ttyAMA0@matoken 10
  11. 11. シリアルを使ってみる(PC認識) PC側での認識例(/dev/ttyACM0として認識) [137739.592791] usb 4­1.2: new high­speed USB device number  [137739.701258] usb 4­1.2: New USB device found, idVendor= [137739.701264] usb 4­1.2: New USB device strings: Mfr=1, Prod [137739.701268] usb 4­1.2: Product: Gadget Serial v2.4 [137739.701271] usb 4­1.2: Manufacturer: Linux 4.4.34+ with [137739.701419] usb 4­1.2: Device is not authorized for usage [137742.073829] cdc_acm 4­1.2:2.0: ttyACM0: USB ACM device [137742.074747] usbcore: registered new interface driver cdc_a [137742.074748] cdc_acm: USB Abstract Control Model driver  @matoken 11
  12. 12. シリアルを使ってみる(叩いてみる) Raspberry Pi側で待ち受け $ cat /dev/ttyGS0 PC側からメッセージを送ってみる $ echo "hello pi." > /dev/ttyACM0 Raspberry Pi側にメッセージが hello pi. @matoken 12
  13. 13. シリアルモジュールのアンロード $ sudo modprobe ­r g_serial $ lsmod | grep g_serial @matoken 13
  14. 14. シリアルモジュールの自動読み込み設定 kernelパラメータに書く方法  /boot/cmdline.txt を開いて rootwait の後ろに modules­ load=dwc2,g_serial を追記する /etc/modulesに書く方法 $ echo "g_serial" | sudo tee ­a /etc/modules どちらかの手順でOK 再起動で反映 @matoken 14
  15. 15. シリアルをgettyに繋いでみる $ sudo systemctl enable serial­getty@ttyGS0.service これでホストから繋ぐとコンソールが利用できる $ cu ­l /dev/ttyACM0 ­s 115200 Connected. Raspbian GNU/Linux 8 pizero ttyGS0 pizero login:  ※モジュールがロードされるのが遅いのでGPIOのシリアルと違いブート メッセージを見ることは出来ない(と思う) @matoken 15
  16. 16. 利用例 シリアルコンソールでホストから繋いでメンテナンス(GPIOより配線 が少ない) GPSモジュールの結果を出力してUSB GPSに bcm2708­rngを利用して乱数生成器に : @matoken 16
  17. 17. イーサネットを使ってみる  g_ether を読み込むと /dev/usb0 が生えてくる あとは普通のネットワークカードとして設定すればOK HOST PCで「他のコンピューターへ共有」と設定すると便利 @matoken 17
  18. 18. シリアルとイーサネットを同時に利用する  g_cdc を読み込むとシリアルとイーサネットが同時に利用できる  /dev/ttyGS0 と /dev/usb0 が生えてくる 日常使いに便利 @matoken 18
  19. 19. マスストレージを利用する  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
  20. 20. イーサネット&マスストレージ&シリアルを同時 に利用する  g_multi を読み込むと同時に利用できる @matoken 20
  21. 21. キーボード,マウス,ジョイスティック HID(g_hid)で行けると思うんだけど…… pi@pizero:~$ sudo modprobe g_hid modprobe: ERROR: could not insert 'g_hid': No such device pi@pizero:~$ sudo modprobe ­v g_hid insmod /lib/modules/4.4.34+/kernel/drivers/usb/gadget/legacy modprobe: ERROR: could not insert 'g_hid': No such device pi@pizero:~$ ls ­l /lib/modules/4.4.34+/kernel/drivers/usb ­rw­r­­r­­ 1 root root 10928 11月 26 01:35 /lib/modules/4.4.34+ 残りの他のも含め宿題に……. @matoken 21
  22. 22. powered by Marp ­ Markdown Presentation Writer Licence : CC BY­NC­SA 4.0 @matoken 22

×