Tachibana

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

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 LOCILOCI 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.

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):

  1. jsalin/esp8266_modem — el módem virtual ESP8266 original de Jussi Salin.
  2. mecparts/RetroWiFiModemmecparts/PicoWiFiModem — el linaje Paul Rickards / mecparts, portado a la Pico.
  3. sodiumlb/PicoWiFiModemUSBpadre directo: la variante USB-CDC nativa para la Pico W, diseñada para emparejarse con LOCI.
  4. benedictemarty/PicoWiFiModemUSBeste 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.

← Volver a PicoWiFiModemUSB · Documentación técnica →