PicoWiFiModemUSB — lista completa de funciones
Módem WiFi USB CDC para la Raspberry Pi Pico W · comandos Hayes AT · terminación TLS · licencia GPL-3.0
Esta página recoge todas las funciones. El repositorio GitHub es la fuente de referencia actualizada; la referencia de comandos AT y la guía TLS / HTTPS detallan el uso.
Índice
1. Interfaz USB CDC
Serie nativo por USB
Interfaz serie USB CDC — sin hardware RS-232. Basta una Pico W. La Pico
se enumera como puerto serie (/dev/ttyACM* en Linux, un puerto COM en Windows). Se conecta con
cualquier terminal serie (picocom -b 115200 /dev/ttyACM0, minicom, PuTTY). El USB CDC ignora el
baudrate real, pero la velocidad AT (AT$SB) debe coincidir con el terminal en montajes tipo UART.
2. Comandos Hayes AT
Juego de comandos completo
Juego de comandos Hayes AT: marcación (ATDT), respuesta (ATA),
marcación rápida (AT&Z/ATDS), Telnet, estado (ATI), reloj NIST
(ATRD/ATRT), control de flujo (AT&K), gestión de DTR (AT&D).
Varios comandos por línea, códigos de resultado en palabras/números (ATV) y verbosidad (ATX),
escape en línea (+++), repetición (A/).
- Referencia completa: todos los comandos AT →
3. WiFi 2,4 GHz
Modo estación
Modo estación WiFi 2,4 GHz, credenciales (AT$SSID=/AT$PASS=) guardadas en
flash. Escaneo de redes al alcance (AT$SCAN: un punto de acceso por línea, indexado,
deduplicado por SSID) — pensado para pilotar un menú numerado (véase el configurador Oric wificonf.bas).
Reconexión automática al arrancar, nombre mDNS (AT$MDNS=), servidor TCP entrante
(AT$SP=), contraseña para conexiones entrantes.
4. TLS / HTTPS en el dongle
Terminación TLS 1.2 (mbedTLS)
La aportación mayor de este fork. La Pico W actúa como módem y como punto terminal TLS:
el ordenador host nunca ve tráfico cifrado. ATGET https://… realiza la negociación TLS 1.2 y luego
transmite la respuesta descifrada por la línea serie — incluso una máquina de 8 bits alcanza servicios
HTTPS. El comando ATPOST permite las peticiones POST HTTP/HTTPS.
Verificación de certificado
Por defecto la verificación está desactivada (AT$CV0, no seguro). Para verificar el
certificado del servidor contra una raíz de confianza: cargar una CA en formato PEM (AT$CA=), activar
(AT$CV1 — devuelve ERROR si no hay CA, así que nunca «fail-open»), persistir
(AT&W). Una conexión cuyo certificado no encadena hasta esa CA se rechaza. No hay reloj
embarcado: las fechas de expiración no se verifican; la confianza se apoya en la cadena CA y el
nombre (SNI). Detalles: guía TLS / HTTPS.
5. Almacenamiento flash (LittleFS)
Ajustes y CA en flash
Almacenamiento flash embarcado vía LittleFS (ajustes + certificado CA), en la zona no usada por
el firmware. Guardado en NVRAM (AT&W), restauración de valores por defecto (AT&F),
visualización de los ajustes actuales/almacenados (AT&V).
6. Arquitectura
La Pico W es a la vez el módem y el punto terminal TLS; el host solo ve texto en claro.
Oric 8 bits LOCI Módem Pico W Internet
┌────────────┐ bus ┌────────┐ USB CDC ┌────────────────┐ WiFi ┌──────────┐
│ host / │◀──────▶│ LOCI │◀───────▶│ PicoWiFiModemUSB│◀──────▶│ servidor│
│ software │ │ │ serie │ + mbedTLS │ TLS │ (HTTPS…) │
└────────────┘ └────────┘ └────────────────┘ └──────────┘
└─ serie en claro ─┘ └──── TLS terminado aquí ────┘
Papel de LOCI — LOCI es la interfaz host USB de los Oric de 8 bits; transporta el flujo serie AT/datos en claro por USB. Es transparente respecto al TLS: solo manipula bytes ya descifrados, por lo que añadir HTTPS no requirió ninguna modificación del lado LOCI — toda la criptografía vive en el firmware. (Cualquier host con USB-CDC funciona igual; LOCI es simplemente el orientado al Oric.)
7. Instalación y flasheo
Flashear el firmware
Se adjunta un firmware precompilado a cada release. Desconecta la Pico W y vuelve a conectarla manteniendo
BOOTSEL (aparece como unidad RPI-RP2), copia wifi_modem-vX.Y.Z.uf2
en ella; la Pico se reinicia y se enumera como puerto serie.
- Reflash sin BOOTSEL — abrir el puerto serie a 1200 baudios (
stty -F /dev/ttyACM0 1200) reinicia la Pico directamente en BOOTSEL, sin desconectar.
8. Primer ajuste
Configuración serie por defecto: 9600 bps, 8N1.
AT$SSID=nombre_de_tu_red red a la que unirse al arrancar
AT$PASS=contraseña_de_tu_red contraseña (sensible a mayúsculas)
ATC1 conectar ahora
AT&W guardar ajustes en NVRAM
Tras AT&W, el módem se conecta automáticamente al arrancar y puede marcar
(ATDT) o cargar páginas (ATGET). Opciones: velocidad serie (AT$SB=), formato
(AT$SU=), Telnet (ATNET), control de flujo (AT&K).
9. Telnet (real vs falso)
Dos modos Telnet
Con el Telnet real, un CR emitido por el módem va seguido de un NUL; algunas implementaciones de BBS no
eliminan ese NUL (usa el Telnet falso para ellas). En entrada, el Telnet real elimina un NUL tras un CR; el
falso lo deja pasar. Ajuste: ATNET0 (off), ATNET1 (real), ATNET2 (falso),
o un prefijo +/=/- sobre ATDT para la llamada.
10. Compilación
cmake -S src -B src/build
cmake --build src/build -j
# firmware producido en: src/build/wifi_modem.uf2
# variante Wokwi (consola UART): -DWOKWI=1
El SDK de Pico y las dependencias están incluidos bajo src/; hace falta la toolchain ARM instalada.
11. Linaje y licencia
Ascendencia directa (este fork está al final):
- jsalin/esp8266_modem — el módem virtual ESP8266 original de Jussi Salin.
- mecparts/RetroWiFiModem → mecparts/PicoWiFiModem — el linaje Paul Rickards / mecparts, portado a la Pico.
- sodiumlb/PicoWiFiModemUSB — padre directo: la variante USB-CDC nativa para la Pico W, diseñada para emparejarse con LOCI.
- benedictemarty/PicoWiFiModemUSB — este fork: añade la terminación TLS/SSL (mbedTLS) y los comandos
ATGET https,AT$CA,AT$CV.
Licencia GNU GPL v3.0 — obra derivada de los proyectos anteriores, distribuida bajo los mismos términos.