Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Raspberry PiのUSB OTGを試す

5,163 views

Published on

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

Published in: Technology
  • Be the first to comment

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

×