Tachibana

PicoWiFiModemUSB — vollständige Funktionsliste

USB-CDC-WiFi-Modem für den Raspberry Pi Pico W · Hayes-AT-Befehle · TLS-Terminierung · GPL-3.0-Lizenz

Diese Seite listet jede Funktion auf. Das GitHub-Repository ist die maßgebliche, aktuelle Quelle; die AT-Befehlsreferenz und der TLS-/HTTPS-Leitfaden behandeln die Verwendung.

Inhalt

1. USB-CDC-Schnittstelle

Native serielle Verbindung über USB

Native serielle USB-CDC-Schnittstelle — keine RS-232-Hardware nötig. Ein nackter Pico W genügt. Der Pico meldet sich als serieller Port an (/dev/ttyACM* unter Linux, ein COM-Port unter Windows). Verbinden mit einem beliebigen seriellen Terminal (picocom -b 115200 /dev/ttyACM0, minicom, PuTTY). USB CDC ignoriert die tatsächliche Baudrate, aber die AT-Geschwindigkeit (AT$SB) muss für UART-artige Aufbauten mit Ihrem Terminal übereinstimmen.

2. Hayes-AT-Befehle

Vollständiger Befehlssatz

Hayes-AT-Befehlssatz: wählen (ATDT), annehmen (ATA), Kurzwahl (AT&Z/ATDS), Telnet, Status (ATI), NIST-Uhr (ATRD/ATRT), Flusssteuerung (AT&K), DTR-Behandlung (AT&D). Mehrere Befehle pro Zeile, Rückmeldecodes als Wort/Zahl (ATV) und Ausführlichkeit (ATX), Online-Escape (+++), Wiederholung (A/).

3. 2,4-GHz-WiFi

Stationsmodus

2,4-GHz-WiFi-Stationsmodus, Zugangsdaten (AT$SSID=/AT$PASS=) im Flash gespeichert. Suche nach Netzwerken in Reichweite (AT$SCAN: ein Zugangspunkt pro Zeile, indiziert, nach SSID entdoppelt) — gedacht, um ein nummeriertes Menü anzusteuern (siehe den Oric-Konfigurator wificonf.bas). Automatische Wiederverbindung beim Einschalten, mDNS-Name (AT$MDNS=), eingehender TCP-Server (AT$SP=), Passwort für eingehende Verbindungen.

4. TLS / HTTPS im Dongle

TLS-1.2-Terminierung (mbedTLS)

Der wesentliche Beitrag dieses Forks. Der Pico W fungiert als Modem und als TLS-Endpunkt: der Host-Computer sieht niemals verschlüsselten Datenverkehr. ATGET https://… führt den TLS-1.2-Handshake durch und streamt dann die entschlüsselte Antwort über die serielle Verbindung — selbst eine 8-Bit-Maschine kann HTTPS-Dienste erreichen. Der Befehl ATPOST ermöglicht HTTP-/HTTPS-POST-Anfragen.

Zertifikatsprüfung

Standardmäßig ist die Prüfung aus (AT$CV0, unsicher). Um das Serverzertifikat gegen eine vertrauenswürdige Wurzel zu prüfen: eine CA im PEM-Format hochladen (AT$CA=), aktivieren (AT$CV1 — gibt ERROR zurück, wenn keine CA vorhanden ist, sodass es niemals unsicher offen ist), persistieren (AT&W). Eine Verbindung, deren Zertifikat nicht auf diese CA zurückführt, wird abgelehnt. Es gibt keine bordeigene Uhr: die Ablaufdaten von Zertifikaten werden nicht geprüft; das Vertrauen wird über die CA-Kette und den Hostnamen (SNI) hergestellt. Details: TLS-/HTTPS-Leitfaden.

5. Flash-Speicher (LittleFS)

Einstellungen & CA im Flash

Bordeigener Flash-Speicher über LittleFS (Einstellungen + CA-Zertifikat), im nicht von der Firmware genutzten Bereich. Im NVRAM speichern (AT&W), auf Standardwerte zurücksetzen (AT&F), aktuelle/gespeicherte Einstellungen anzeigen (AT&V).

6. Architektur

Der Pico W ist zugleich Modem und TLS-Endpunkt; der Host sieht ausschließlich Klartext.

   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 ────┘

Rolle von LOCILOCI ist die USB-Host-Schnittstelle für 8-Bit-Oric-Computer; sie überträgt den einfachen seriellen Strom aus AT-Befehlen / Daten über USB. Sie ist transparent gegenüber TLS: sie verarbeitet stets nur bereits entschlüsselte Bytes, sodass das Hinzufügen von HTTPS keine Änderung auf der LOCI-Seite erforderte — die gesamte Kryptografie liegt in der Firmware. (Jeder USB-CDC-fähige Host funktioniert auf dieselbe Weise; LOCI ist einfach der Oric-orientierte.)

7. Installation & Flashen

Die Firmware flashen

Jedem Release liegt eine vorgefertigte Firmware bei. Den Pico W abstecken, dann wieder einstecken, während BOOTSEL gedrückt wird (er erscheint als USB-Laufwerk namens RPI-RP2), die wifi_modem-vX.Y.Z.uf2 darauf kopieren; der Pico startet neu und meldet sich als serieller Port an.

8. Erstkonfiguration

Standard-Serienkonfiguration: 9600 bps, 8N1.

AT$SSID=dein_netzwerk      Netzwerk, dem beim Start beigetreten wird
AT$PASS=dein_passwort      Passwort setzen (Groß-/Kleinschreibung)
ATC1                       jetzt verbinden
AT&W                       im NVRAM speichern

Nach AT&W verbindet sich das Modem beim Einschalten automatisch und kann wählen (ATDT) oder Seiten abrufen (ATGET). Optionen: serielle Geschwindigkeit (AT$SB=), Format (AT$SU=), Telnet (ATNET), Flusssteuerung (AT&K).

9. Telnet (echt vs. unecht)

Zwei Telnet-Modi

Bei echtem Telnet folgt auf ein vom Modem gesendetes CR ein NUL; manche BBS-Implementierungen entfernen dieses NUL nicht (für diese unechtes Telnet verwenden). Eingehend entfernt echtes Telnet ein NUL nach einem CR; unechtes Telnet reicht es durch. Einstellung: ATNET0 (aus), ATNET1 (echt), ATNET2 (unecht), oder ein +/=/--Präfix bei ATDT für den jeweiligen Anruf.

10. Bauen

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

Das Pico SDK und die Abhängigkeiten liegen unter src/; die ARM-Toolchain muss installiert sein.

11. Abstammung & Lizenz

Direkte Abstammung (dieser Fork steht am unteren Ende):

  1. jsalin/esp8266_modem — Jussi Salins ursprüngliches virtuelles ESP8266-Modem.
  2. mecparts/RetroWiFiModemmecparts/PicoWiFiModem — die Abstammungslinie Paul Rickards / mecparts, portiert auf den Pico.
  3. sodiumlb/PicoWiFiModemUSBdirektes Elternprojekt: die native USB-CDC-Variante für den Pico W, entworfen für die Kombination mit LOCI.
  4. benedictemarty/PicoWiFiModemUSBdieser Fork: fügt TLS/SSL-Terminierung (mbedTLS) sowie die Befehle ATGET https, AT$CA, AT$CV hinzu.

Lizenz GNU GPL v3.0 — ein abgeleitetes Werk der obigen Projekte, unter denselben Bedingungen verbreitet.

← Zurück zu PicoWiFiModemUSB · Technische Dokumentation →