USBガジェットモードでRaspberry Pi 4Bもイケる

usb_gadget_mode-titleデスクトップ環境
この記事は約6分で読めます。

Linuxが初めから備えているUSB Gadget Driver(USBガジェットドライバー)を使い、Raspberry PiをUSBケーブルでパソコン(Mac、Windows)に繋ぐだけで、単独で動作するRaspberry Piと同じように使えます。

このUSBガジェットモードが最初から有効なのはPi Zeroのみです。それ以降のRaspberry Pi シリーズでは最初は無効になっています。

以下、手順などをご紹介します。

※最新のRaspberry Pi 4Bの場合、4BからUSB-Cのケーブルになった点だけが異なりますが他のRaspberry Pi と同じに動作します。

※コマンド訂正しました。フォーラムで言及をありがとうございます。

スポンサーリンク

ガジェットモード

USBケーブルで接続する場合、ターミナルソフトのTeratermなどで接続する必要があります。これはモニターや入力機器を接続しないパターンと同じですね。

単純にTeraTermのシリアルポートを選ぶことで接続できます。しかし、その場合はRaspberry Pi自身がネットに繋がりません。

更に言えば、Raspberry Piに繋ぐUSB機器も使えません。

これでは使い勝手が限定されるので、母艦(Raspberry PiをUSBで繋ぐ先)がホストでRaspberry Piがクライアントではなく、Raspberry Piもホストとして動作させられるようにガジェットモードとして起動させます。

これはRaspberry Piをホストモードにするとも言えます。

言葉は色々と細かくあります。一般的にこういった機能はUSB OTG(On-The-Go)と言います。

パソコン等をホストとせずに、動作時にホスト機器を動的に切り替える機能を拡張したもの

引用元:https://ja.wikipedia.org/wiki/USB_On-The-Go

Windowsでデバイスマネージャというのをみたことがあると思います。ここにUSB のデバイスコントローラがあり、USB Gadget Driverを介してRaspberry Piがシリアル通信ハードとして振る舞ったり、USB機器のカメラ、ハードドライブ、イーサネット、シリアル通信など、Windows側から確認でき使用できます。

パイグリーン
パイグリーン

USB OTG、ガジェットモード、ホスト・・・。デバイスマネージャ??

パイレッド
パイレッド

しかし、難しいことはありません。

大きく2つだけの手順です。

RaspbianのイメージファイルをmicroSDカードへ書き込むまでは前提です。

  1. SSHを有効にする
  2. microSDカード内直下にあるconfig.txtとcmdline.txtに追記して有効にさせる

では、順番にみていきましょう。

スポンサーリンク

SSHを有効にする

それには先ずは、これまでと同様にSSHファイルをRaspbianを書き込んだmicroSDカードのルート直下にコピーしておきます。

SSHファイルは拡張子は無し、中身も何も記載していないテキストファイルです。

一番簡単にsshファイルを作成するのは、WindowsでもMacでも”テキストファイルを新規作成”して”ssh”というファイル名で保存します。この時、「.txt」の拡張子は付けません。テキストファイルの中身は何も記載してない空白のままです。

sshファイルのアイコン

画像はMacOSXです。このようにファイル名はsshです。

※MacOSの場合はそもそも拡張子は必須ありませんが・・・。

私はsshファイルとwpa_supplicant.confをコピーさせる用に母艦に別フォルダで保存しています。

config.txtに記述する

config.txtの最後の行に追記するだけです。

dtoverlay=dwc2

cmdline.txtに編集追記する

このcmdline.txtも同様にmicroSDカード直下にあります。名前順でconfig.txtの1つ前ですから分かり易い。

modules-load=dwc2,g_serial

追記 シリアル通信ではなくイーサネットでした。(以下、画像は合っています)

modules-load=dwc2,g_ether

挿入する場所は、rootwaitの後です。文字間は半角スペースで区切ります。

config.txtの中身
注意!

このconfig.txtは全てで1行です。改行はNGです。要素間は半角スペースです。それ以外は認められません。

厳格に規定がされているように、間違うと起動しません。慎重に編集してください。

母艦マシンから繋ぐ

これらUSBガジェットモードを施したRaspberry Piに母艦マシンから繋ぐのには、いつものssh接続でOKです。

Raspberry Piをネットに繋ぐには、Wi-Fiを有効にするいつものパターンと、母艦マシンを介してネットに繋ぐパターンがあります。

前者はこれまでラズパイダでも扱っている通り、自宅のWi-Fiに接続してください。

後者の母艦マシンを介するにはブリッジ接続する形になります。これはWindows10やMacOSと設定画面が異なります。

Windowsではcomポートとして振る舞うRNDIS/Ethernet Gadgetが認識されていないネットワークアダプタと表示されるハズです。

※もしかしたらWindowsのバージョンによってはドライバを別途にMicrosoftから入手しないとならないかも知れません。Microsoft Updateのサイトにて「USB Ethernet/RNDIS Gadget」で検索してください。

MacOSでは、インターネット共有を有効にすること、そして接続するネットワークをRNDIS/Ethernet Gadgetに変更してあげることで実現できます。

電源ケーブル1本で接続し利用

このようにRaspberry Pi 4Bであっても実はUSB-Cケーブル1本で母艦マシンから操作が可能になります。

もちろん、継続利用するようなプロジェクトには向きませんが、一時的に操作するだけであったり、テスト環境として利用するにはうってつけですね。

Raspberry Pi Zero系ならUSBバスパワーでも動作するくらい省エネですから、モバイルノートで外出先も活用できますね。

いわゆるOTG、シリアル通信のご紹介でした。

Zeroでもご紹介しています。
PCとRaspberry Pi をUSBケーブルでネットに接続(Volumio on Zero W/WH)
Raspberry Pi を外出先で使う場合、Wi-Fiが無いと困ることがあります。特にキーボードもマウスも繋いでいな...