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 と同じに動作します。
※コマンド訂正しました。フォーラムで言及をありがとうございます。
ラズパイとLibreELECで再生できますよ!
詳しくは「Raspberry Pi とLibreELEC9.0で作るAmazonプライム・ビデオプレイヤー」へ
ガジェットモード
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カードへ書き込むまでは前提です。
- SSHを有効にする
- microSDカード内直下にあるconfig.txtとcmdline.txtに追記して有効にさせる
では、順番にみていきましょう。
SSHを有効にする
それには先ずは、これまでと同様にSSHファイルをRaspbianを書き込んだmicroSDカードのルート直下にコピーしておきます。
SSHファイルは拡張子は無し、中身も何も記載していないテキストファイルです。
一番簡単にsshファイルを作成するのは、WindowsでもMacでも”テキストファイルを新規作成”して”ssh”というファイル名で保存します。この時、「.txt」の拡張子は付けません。テキストファイルの中身は何も記載してない空白のままです。

画像はMacOSXです。このようにファイル名はsshです。※MacOSの場合はそもそも拡張子は必須ありませんが・・・。
このsshファイルは一度作成したら、どこかに保存しておくと良いでしょう。同じ環境で使い回せます。
Raspberry Pi のWi-Fi設定を事前に用意しておこう!
私はsshファイルとwpa_supplicant.confの2つを、microSDカードへコピーさせる用として母艦で保存しています。
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は全てで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系でもご紹介しています。

コメント ご感想をお願いします。