はじめに
Linuxの起動する小さなボード(以降、Linuxボード)の多くが、USBOTG機能を使って、RNDISのイーサーネットアダプタとしてふるまう機能があります。
よく知られているのが、Raspberry pi zeroシリーズ等をヘッドレスで使う例です。
USBケーブルでの接続は開発時には便利なのですが、開発機から離して利用する場合は、有線LANやWifiのネットワークに接続したくなります。
RNDISのイーサネットアダプタとして振舞うUSBコネクタに、Raspberry pi pico wを接続すると、Wifiにブリッジしてくれる機能がGithubで紹介されていたので、実際に使用してみました。
本稿の内容は、2024年4月27日に実施された「LILO&東海道らぐオフラインミーティング 2024-04-27」の発表内容を含みます。
PicoPiFi
PicoPiFiは2023年8月にGithubで公開されたプロジェクトです。2024年12月現在、Ver. 3.2.0のPicoPiFi.uf2が公開されています。
通常、Raspberry pi picoのUSB関連の開発には、TinyUSBが使用されるのですが、PicoPiFiではCerryUSBが利用されています。
Pico wと対象となるマシンとの間では、12 MbpsのRNDIS接続がされており、Pico wは54 Mbpsで2.4 GHzのアクセスポイントにつながります。
PicoPiFiの使い方
githubの「README.md」に図解入りで説明されているので、その説明の日本語版としてみていただければと思います。ここで、pico wはRaspberry pi pico wを、母艦は、pico wを接続して環境設定を行うマシンを意味します。
1.Releasesから「PicoPiFi.uf2」と「index.html」を母艦にダウンロードする
2.Raspberry pi pico wの「BOOTSEL」ボタンを押しながら、pico wに接続されているUSBケーブルを母艦につなぐ
3.Pico wは母艦にUSBドライブとして認識されるので、そこに、ダウンロードした「PicoPiFi.uf2」を保存する
4.ダウンロードした「index.html」をブラウザで開くと設定画面が表示される
5.「Connect to the first CDC Port」をクリックすると、母艦がwindowsマシンの場合、以下の図のように、シリアルポートの設定画面が表示される。
6.「PicoPiFi Control Panel」をクリックし、「接続」ボタンをクリックする。上記は、設定済みなので、「接続」ボタンの表示が薄い
7.Pico wが検出したwifiルーターが表示されるので、接続したいルーターの「Connect」ボタンをクリックする
8.ルーターのパスワードを入力する
Linuxボードとの接続
LinuxボードにはUSB-OTGホストケーブルを接続します。今回は、百均のUSB-CオスをUSB-Aメスに変換するコネクタを使用しています。
Pico wのマイクロUSBのメスとLinuxボードのUSB-Aのメスは、電源供給用のUSB-Aオス端子のついたY字のUSBケーブルを使用します。これは、USB-AとマイクロUSBケーブルで接続すると、別途、電源用のケーブルをLinuxボードに接続する必要があるからです。
以下に、Pico wとLinuxボードのMilk-v Duoとの接続例を示します。図下の黄色のついた端子をUSB電源に接続します。
Milk-v Duoの場合、固定IPアドレスで使用していますので、ルーターのネットワークに接続可能なIPアドレスを固定IPアドレスとします。
おわりに
USBケーブルで母艦につなぐと、RNDISアダプタとして振舞うLinuxボードをRaspberry pi pico wと電源供給用ケーブルのついたY字USBケーブル、USB-OTGケーブルを使って、Wifiに接続することができました。