PicoWiFiModemUSB — 機能一覧
Raspberry Pi Pico W 向け USB CDC WiFi モデム · Hayes AT コマンド · TLS 終端 · GPL-3.0 ライセンス
このページでは すべて の機能を列挙します。 GitHub リポジトリが正式な最新の情報源であり、AT コマンドリファレンス と TLS / HTTPS ガイド が使い方を扱います。
目次
1. USB CDC インターフェース
USB 上のネイティブシリアル
ネイティブな USB CDC シリアルインターフェース — RS-232 ハードウェアは不要です。素の Pico W だけで十分です。Pico は
シリアルポート(Linux では /dev/ttyACM*、Windows では COM ポート)として認識されます。任意のシリアル
端末(picocom -b 115200 /dev/ttyACM0、minicom、PuTTY)で接続できます。USB CDC は実際のボーレートを無視しますが、
UART 型の構成では AT レベルの速度(AT$SB)を端末に合わせる必要があります。
2. Hayes AT コマンド
完全なコマンドセット
Hayes AT コマンドセット:発信(ATDT)、応答(ATA)、短縮ダイヤル
(AT&Z/ATDS)、Telnet、ステータス(ATI)、NIST 時計(ATRD/ATRT)、
フロー制御(AT&K)、DTR 処理(AT&D)。1 行に複数コマンド、文字/数値の結果
コード(ATV)と冗長度(ATX)、オンラインエスケープ(+++)、繰り返し(A/)。
- 完全なリファレンス:すべての AT コマンド →
3. 2.4 GHz WiFi
ステーションモード
2.4 GHz の WiFi ステーションモード、認証情報(AT$SSID=/AT$PASS=)は
フラッシュに保存されます。範囲内のネットワークを スキャン(AT$SCAN:1 行に 1 アクセスポイント、インデックス付き、
SSID で重複排除)— 番号付きメニューを駆動するためのものです(Oric の設定ツール wificonf.bas を参照)。
起動時の自動再接続、mDNS 名(AT$MDNS=)、着信 TCP サーバ(AT$SP=)、
着信接続用のパスワード。
4. ドングル内の TLS / HTTPS
TLS 1.2 終端(mbedTLS)
このフォークの中心的な貢献です。Pico W はモデムであると 同時に TLS のエンドポイントとして機能します:
ホストコンピュータが暗号化されたトラフィックを目にすることはありません。ATGET https://… は TLS 1.2 ハンドシェイクを実行し、
復号したレスポンスをシリアルリンク上にストリームします — 8 ビットマシンでも HTTPS サービスに到達できます。
ATPOST コマンドは HTTP/HTTPS の POST リクエストを可能にします。
証明書検証
デフォルトでは検証は オフ(AT$CV0、安全ではありません)。信頼されたルートに対してサーバ証明書を
検証するには:PEM 形式の CA をアップロードし(AT$CA=)、有効化し(AT$CV1 — CA がない場合は
ERROR を返すため、検証を素通りさせることはありません)、保存します(AT&W)。証明書がその CA に
連鎖しない接続は拒否されます。オンボードクロックがないため、証明書の 有効期限 は
チェックされません。信頼は CA チェーンとホスト名(SNI)によって確立されます。詳細:TLS /
HTTPS ガイド。
5. フラッシュストレージ(LittleFS)
設定と CA をフラッシュに保存
ファームウェアが使用しない領域に、LittleFS 経由でオンボードフラッシュストレージ(設定 + CA 証明書)を利用します。
NVRAM への保存(AT&W)、デフォルトへのリセット(AT&F)、現在/保存済みの
設定の表示(AT&V)。
6. アーキテクチャ
Pico W はモデムであると同時に TLS のエンドポイントであり、ホストは常に平文だけを目にします。
Oric 8-bit LOCI Pico W modem Internet
┌────────────┐ bus ┌────────┐ USB CDC ┌────────────────┐ WiFi ┌──────────┐
│ host / │◀──────▶│ LOCI │◀───────▶│ PicoWiFiModemUSB│◀──────▶│ server │
│ software │ │ │ serial │ + mbedTLS │ TLS │ (HTTPS…) │
└────────────┘ └────────┘ └────────────────┘ └──────────┘
└─ cleartext serial ─┘ └──── TLS terminated here ────┘
LOCI の役割 — LOCI は Oric 8 ビットコンピュータ用の USB ホスト インターフェースで、プレーンな AT コマンド/データのシリアルストリームを USB 上で運びます。TLS に対して 透過的:常にすでに復号されたバイトだけを扱うため、HTTPS の追加に LOCI 側の 変更は不要 でした — 暗号処理はすべてファームウェア内にあります。(USB-CDC 対応のどのホストでも同じように動作します。LOCI は単に Oric 向けのものです。)
7. インストールと書き込み
ファームウェアの書き込み
各リリースにビルド済みのファームウェアが添付されています。Pico W を抜き、BOOTSEL を押しながら差し込むと
(RPI-RP2 という名前の USB ドライブとして表示されます)、wifi_modem-vX.Y.Z.uf2 を
そこにコピーします。Pico は再起動し、シリアルポートとして認識されます。
- BOOTSEL 不要の再書き込み — シリアルポートを 1200 ボー(
stty -F /dev/ttyACM0 1200)で開くと、抜き差しせずに Pico を直接 BOOTSEL で再起動できます。
8. 初回設定
デフォルトのシリアル設定:9600 bps、8N1。
AT$SSID=your WiFi network name 起動時に接続するネットワークを設定
AT$PASS=your WiFi network password パスワードを設定(大文字小文字を区別)
ATC1 今すぐ接続
AT&W 設定を NVRAM に保存
AT&W の後、モデムは起動時に自動接続し、発信(ATDT)やページの取得
(ATGET)ができます。オプション:シリアル速度(AT$SB=)、フォーマット(AT$SU=)、Telnet
(ATNET)、フロー制御(AT&K)。
9. Telnet(real と fake)
2 つの Telnet モード
real Telnet では、モデムが送信する CR の後に NUL が続きます。一部の BBS 実装はこの
NUL を除去しません(その場合は fake Telnet を使用)。着信時、real Telnet は CR に続く NUL を除去し、fake Telnet はそのまま
通します。設定:ATNET0(オフ)、ATNET1(real)、ATNET2(fake)、または
ATDT に +/=/- のプレフィックスを付けてその通話単位で指定。
10. ビルド
cmake -S src -B src/build
cmake --build src/build -j
# firmware produced at: src/build/wifi_modem.uf2
# Wokwi variant (UART console): -DWOKWI=1
Pico SDK と依存関係は src/ 以下に同梱されています。ARM ツールチェーンをインストールしておく必要があります。
11. 系譜とライセンス
直接の系譜(このフォークが末端):
- jsalin/esp8266_modem — Jussi Salin によるオリジナルの ESP8266 仮想モデム。
- mecparts/RetroWiFiModem → mecparts/PicoWiFiModem — Paul Rickards / mecparts の系譜で、Pico に移植されたもの。
- sodiumlb/PicoWiFiModemUSB — 直接の親:Pico W 向けのネイティブ USB-CDC 版で、LOCI と組み合わせるよう設計されています。
- benedictemarty/PicoWiFiModemUSB — このフォーク:TLS/SSL 終端(mbedTLS)と
ATGET https、AT$CA、AT$CVコマンドを追加。
ライセンスは GNU GPL v3.0 — 上記プロジェクトの派生物であり、同じ条件で配布されます。