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/).
- Référence complète : toutes les commandes AT →
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 LOCI — LOCI 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.
- Reflash sans BOOTSEL — ouvrir le port série à 1200 bauds (
stty -F /dev/ttyACM0 1200) redémarre le Pico directement en BOOTSEL, sans débrancher.
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) :
- jsalin/esp8266_modem — modem virtuel ESP8266 original de Jussi Salin.
- mecparts/RetroWiFiModem → mecparts/PicoWiFiModem — lignée Paul Rickards / mecparts, portée sur le Pico.
- sodiumlb/PicoWiFiModemUSB — parent direct : variante USB-CDC native pour le Pico W, conçue pour s'apparier avec LOCI.
- benedictemarty/PicoWiFiModemUSB — ce 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.