Tachibana

A Tachibana project · WiFi modem

PicoWiFiModemUSB

Pico W · USB CDC ⇄ WiFi · Hayes AT

A USB WiFi modem for the Raspberry Pi Pico W — Hayes AT commands — with TLS/SSL termination inside the dongle.

The host (e.g. an Oric 8-bit computer via LOCI) talks plain serial over USB; the Pico W handles the network — including the full HTTPS handshake, decryption and optional certificate verification. No extra hardware: a bare Pico W is enough. A fork on top of sodiumlb. GPL-3.0 license.

Features

What PicoWiFiModemUSB does

USB CDC interface

Native serial over USB (no RS-232 hardware needed). The Pico W enumerates as a serial port (/dev/ttyACM* / a COM port). Connect with any serial terminal (picocom, minicom, PuTTY).

Hayes AT commands

Full AT command set: dial, answer, speed dial, Telnet, status. Multiple commands per line, configurable result codes, online escape (+++).

2.4 GHz WiFi

WiFi station mode (2.4 GHz), credentials stored in flash. Network scan (AT$SCAN), auto-reconnect at power-up, mDNS, inbound TCP server.

HTTPS terminated in the dongle

This fork's headline feature: ATGET https://… performs the TLS 1.2 handshake (mbedTLS) and returns the decrypted page. Optional certificate verification against a user-provided CA — never fails open.

Flash storage (LittleFS)

Settings and CA certificate in flash via LittleFS, in the area not used by the firmware. NVRAM save/restore (AT&W), reflash without BOOTSEL (1200-baud touch).

Free (GPL-3.0)

Free firmware on GitHub. Pairs with LOCI for Oric 8-bit computers; it is the modem driven by OricTel and emulated by Phosphoric.

See the full feature list → · Technical documentation →

Lineage & role

Where this firmware comes from

This firmware stands on a long line of retro WiFi modems. This fork (at the bottom of the chain) adds TLS/SSL termination (mbedTLS) and the ATGET https, AT$CA, AT$CV commands.

jsalin · mecparts

Jussi Salin's ESP8266 virtual modem → mecparts (Paul Rickards) RetroWiFiModem / PicoWiFiModem.

Ancestors

sodiumlb

Direct parent: the native USB-CDC variant for the Pico W, designed to pair with LOCI.

Parent

This fork

Adds TLS/SSL termination (mbedTLS) and certificate verification, so an 8-bit machine can reach HTTPS services.

TLS / HTTPS

Role of LOCI

LOCI is the Oric's USB host interface; it carries the plain AT serial stream. Transparent with respect to TLS: all the crypto lives in the dongle, no change on the LOCI side.

Oric host

Download & install

Flash the Pico W

Pre-built firmware

A firmware is attached to each release. Unplug then replug the Pico W while holding BOOTSEL (drive RPI-RP2), copy the .uf2 onto it.

Latest release

First-time setup

9600 bps, 8N1 by default:

AT$SSID=your_network
AT$PASS=your_password
ATC1 # connect
AT&W # save to NVRAM

Build from source

The Pico SDK & dependencies are vendored under src/, with the ARM toolchain:

cmake -S src -B src/build
cmake --build src/build -j

Status

Where this fork stands

Active fork (v0.3.3) on top of sodiumlb/PicoWiFiModemUSB. The up-to-date reference documentation lives in the GitHub repository.

AT modem + WiFi

USB CDC, full Hayes AT command set, WiFi station, Telnet, speed dials, mDNS.

Done

TLS / HTTPS

TLS 1.2 termination (mbedTLS), ATGET https / ATPOST, CA management and certificate verification.

Done

Oric / LOCI integration

LOCI pairing, Oric-side WiFi configurator, fixed USB descriptor (Windows).

Done

SSH R&D

Exploring an SSH termination inside the dongle (design document).

In progress