Tachibana

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/)。

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 は再起動し、シリアルポートとして認識されます。

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. 系譜とライセンス

直接の系譜(このフォークが末端):

  1. jsalin/esp8266_modem — Jussi Salin によるオリジナルの ESP8266 仮想モデム。
  2. mecparts/RetroWiFiModemmecparts/PicoWiFiModem — Paul Rickards / mecparts の系譜で、Pico に移植されたもの。
  3. sodiumlb/PicoWiFiModemUSB直接の親:Pico W 向けのネイティブ USB-CDC 版で、LOCI と組み合わせるよう設計されています。
  4. benedictemarty/PicoWiFiModemUSBこのフォーク:TLS/SSL 終端(mbedTLS)と ATGET httpsAT$CAAT$CV コマンドを追加。

ライセンスは GNU GPL v3.0 — 上記プロジェクトの派生物であり、同じ条件で配布されます。

← PicoWiFiModemUSB に戻る · 技術ドキュメント →