Tachibana

PicoWiFiModemUSB — fonctionnalités détaillées

Modem WiFi USB CDC pour Raspberry Pi Pico W · commandes Hayes AT · terminaison TLS · licence GPL-3.0

Cette page recense l'intégralité des fonctionnalités. Le dépôt GitHub reste la référence à jour ; la référence des commandes AT et le guide TLS / HTTPS détaillent l'usage.

Sommaire

1. Interface USB CDC

Série native sur USB

Interface série USB CDC — aucun matériel RS-232 requis. Un simple Pico W suffit. Le Pico énumère comme port série (/dev/ttyACM* sous Linux, un port COM sous Windows). Se connecte avec n'importe quel terminal série (picocom -b 115200 /dev/ttyACM0, minicom, PuTTY). L'USB CDC ignore le débit réel, mais le débit AT (AT$SB) doit correspondre au terminal pour les montages de type UART.

2. Commandes Hayes AT

Jeu de commandes complet

Jeu de commandes Hayes AT : numérotation (ATDT), réponse (ATA), numéros abrégés (AT&Z/ATDS), Telnet, statut (ATI), horloge NIST (ATRD/ATRT), contrôle de flux (AT&K), gestion DTR (AT&D). Plusieurs commandes par ligne, codes de résultat mots/nombres (ATV) et verbosité (ATX), mode escape en ligne (+++), répétition (A/).

3. WiFi 2,4 GHz

Mode station

Mode station WiFi 2,4 GHz, identifiants (AT$SSID=/AT$PASS=) stockés en flash. Scan des réseaux à portée (AT$SCAN : un point d'accès par ligne, indexé, dédoublonné par SSID) — pensé pour piloter un menu numéroté (cf. le configurateur Oric wificonf.bas). Reconnexion automatique au démarrage, nom mDNS (AT$MDNS=), serveur TCP entrant (AT$SP=), mot de passe pour connexions entrantes.

4. TLS / HTTPS dans le dongle

Terminaison TLS 1.2 (mbedTLS)

L'apport majeur de ce fork. Le Pico W agit comme modem et comme point terminal TLS : l'ordinateur hôte ne voit jamais de trafic chiffré. ATGET https://… effectue la poignée de main TLS 1.2 puis diffuse la réponse déchiffrée sur la liaison série — même une machine 8 bits atteint des services HTTPS. La commande ATPOST permet les requêtes POST HTTP/HTTPS.

Vérification de certificat

Par défaut la vérification est désactivée (AT$CV0, non sûr). Pour vérifier le certificat serveur contre une racine de confiance : charger une CA au format PEM (AT$CA=), activer (AT$CV1 — renvoie ERROR s'il n'y a pas de CA, donc jamais « fail-open »), persister (AT&W). Une connexion dont le certificat ne remonte pas à cette CA est refusée. Pas d'horloge embarquée : les dates d'expiration ne sont pas vérifiées ; la confiance repose sur la chaîne CA et le nom (SNI). Détails : guide TLS / HTTPS.

5. Stockage flash (LittleFS)

Réglages & CA en flash

Stockage flash embarqué via LittleFS (réglages + certificat CA), dans la zone non utilisée par le firmware. Sauvegarde en NVRAM (AT&W), restauration des défauts (AT&F), affichage des réglages courants/stockés (AT&V).

6. Architecture

Le Pico W est à la fois le modem et le point terminal TLS ; l'hôte ne voit que du texte clair.

   Oric 8 bits           LOCI              Modem Pico W              Internet
 ┌────────────┐  bus   ┌────────┐ USB CDC ┌────────────────┐  WiFi  ┌──────────┐
 │  hôte /    │◀──────▶│  LOCI  │◀───────▶│ PicoWiFiModemUSB│◀──────▶│  serveur │
 │  logiciel  │        │        │  série  │   + mbedTLS     │  TLS   │ (HTTPS…) │
 └────────────┘        └────────┘         └────────────────┘        └──────────┘
                       └─ série en clair ─┘ └──── TLS terminé ici ────┘

Rôle de LOCILOCI est l'interface hôte USB des Oric 8 bits ; il transporte le flux série AT/données en clair sur USB. Il est transparent vis-à-vis du TLS : il ne manipule que des octets déjà déchiffrés, donc ajouter HTTPS n'a demandé aucune modification côté LOCI — toute la cryptographie vit dans le firmware. (Tout hôte USB-CDC fonctionne de même ; LOCI est simplement celui orienté Oric.)

7. Installation & flash

Flasher le firmware

Un firmware pré-compilé est joint à chaque release. Débrancher le Pico W puis le rebrancher en maintenant BOOTSEL (il apparaît comme lecteur RPI-RP2), copier wifi_modem-vX.Y.Z.uf2 dessus ; le Pico redémarre et énumère comme port série.

8. Premier réglage

Configuration série par défaut : 9600 bps, 8N1.

AT$SSID=nom_du_reseau      réseau à rejoindre au démarrage
AT$PASS=mot_de_passe       mot de passe (sensible à la casse)
ATC1                       connecter maintenant
AT&W                       sauver en NVRAM

Après AT&W, le modem se connecte automatiquement au démarrage et peut composer (ATDT) ou charger des pages (ATGET). Options : débit série (AT$SB=), format (AT$SU=), Telnet (ATNET), contrôle de flux (AT&K).

9. Telnet (réel vs faux)

Deux modes Telnet

Avec le Telnet réel, un CR émis par le modem est suivi d'un NUL ; certains BBS ne suppriment pas ce NUL (utiliser le faux Telnet pour ceux-là). En entrée, le Telnet réel supprime un NUL après un CR ; le faux le laisse passer. Réglage : ATNET0 (off), ATNET1 (réel), ATNET2 (faux), ou un préfixe +/=/- sur ATDT pour l'appel.

10. Compilation

cmake -S src -B src/build
cmake --build src/build -j
# firmware produit : src/build/wifi_modem.uf2
# variante Wokwi (console UART) : -DWOKWI=1

Le SDK Pico et les dépendances sont embarqués sous src/ ; il faut la chaîne ARM installée.

11. Lignée & licence

Lignée directe (ce fork est en bas) :

  1. jsalin/esp8266_modem — modem virtuel ESP8266 original de Jussi Salin.
  2. mecparts/RetroWiFiModemmecparts/PicoWiFiModem — lignée Paul Rickards / mecparts, portée sur le Pico.
  3. sodiumlb/PicoWiFiModemUSBparent direct : variante USB-CDC native pour le Pico W, conçue pour s'apparier avec LOCI.
  4. benedictemarty/PicoWiFiModemUSBce fork : ajoute la terminaison TLS/SSL (mbedTLS) et les commandes ATGET https, AT$CA, AT$CV.

Licence GNU GPL v3.0 — œuvre dérivée des projets ci-dessus, distribuée sous les mêmes termes.

← Retour à PicoWiFiModemUSB · Documentation technique →