USBガジェットモードでssh -1-

 1/21に、Imagerからのインストールで、USBでネット接続できる機能が追加されたと聞いた。ヘッドレス環境では、いちいち有線LANや無線LANを接続したりしなくても、ネット接続できるのはありがたい。試してみる。

 機能的には、これがインストーラーでデフォルト有効になるだけなのだけど。

raspberrypi/rpi-usb-gadget: Turn your Raspberry Pi into a USB Ethernet gadget (CDC-ECM/RNDIS) for headless networking, Internet sharing, and remote development over a single USB cable.
https://github.com/raspberrypi/rpi-usb-gadget

 現在の環境には、Imager 2.0.3は入っているのだけど、最新版をダウンロードしておく。

Raspberry Pi software – Raspberry Pi
https://www.raspberrypi.com/software/

 https://downloads.raspberrypi.com/imager/imager_latest.dmg

 2.0.6が落ちてきた。

2系は、デフォルトでテレメトリー監視がONになっているのがイマイチね。オフにしておく。
https://github.com/raspberrypi/rpi-imager?tab=readme-ov-file#anonymous-metrics-telemetry

 ターゲットはPi3Aなので64bit Liteを選ぶ。

 設定進めていっても、カスタムの画面に「Enable USB Gadget Mode」とか出てこないな。

 なんだこれ?

 ひょっとして、まだ標準機能ではないのかな?

 公式のアナウンスを確認してみる。

USB gadget mode in Raspberry Pi OS: SSH over USB - Raspberry Pi
https://www.raspberrypi.com/news/usb-gadget-mode-in-raspberry-pi-os-ssh-over-usb/

 この機能は、デフォルトでは動作しないので、create_local_json.pyツールを使って「機能拡張マニフェスト」なるものを生成する必要があるらしい。

rpi-imager/doc/local_json at main · raspberrypi/rpi-imager
https://github.com/raspberrypi/rpi-imager/tree/main/doc/local_json

 試してみている人が少ないのは、そんなニーズないからかなと思ったけど、一手間かかるからかもしれない。

create_local_json.pyを実行すると、まず以下のファイルをダウンロードする。これはデフォルトのテンプレ設定。
https://downloads.raspberrypi.com/os_list_imagingutility_v4.json

 次に実行時に--capabilitiesや--device-capabilitiesで指定されている内容が追記される。指定できるのは以下。

 i2c:I2Cインターフェースオプションを有効にする

 onewire:1-Wireインターフェースオプションを有効にする

 rpi_connect:Raspberry Pi Connectのセットアップを有効にする

 secure_boot:セキュアブート署名を有効にする

 serial:シリアルインターフェースオプションを有効にする

 spi:SPIインターフェースオプションを有効にする

 usb_otg:USBガジェットモードオプションを有効にする

 今回指定するusb_otgがあると、OSエントリとデバイスエントリにあるcapabilitiesにusb_otgを追記する。Imagerの設定画面にUSB Gadget Modeを出すには、両方に指定がないとダメみたい。

 追記しているのはこんな感じのようだ。

 "name": "Raspberry Pi OS (64-bit)",

 "url": "https://....zip",

 + "capabilities": [

 + "usb_otg"

 + ],

 "devices": ["pi5", "pi4", ...]

 },

 {

 "name": "Raspberry Pi 5",

 "tags": ["pi5"],

 + "capabilities": [

 + "usb_otg"

 + ]

 },

 これが指定されていると、cloud-initの設定を書き換えてuser-dataにUSB Gadgetを有効化する指定が追記される。

 なるほど、めんどくさい。(試さないとは言ってないw)


オリジナル投稿:
USBガジェットモードでssh -1-|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/11283668