Releases: pyMC-dev/pymc_modem
v0.8.0 — HTTP management surface + JSON API
What's new in v0.8.0
HTTP management surface + JSON API
PR #1 (yellowcooln) lands a usable web management UI on top of the
existing OTA endpoint, plus a machine-readable JSON API. Wire
protocol unchanged (still v0.7) — drivers and pymc_core/pymc_Repeater
clients work against v0.8 firmware without changes.
- HTTP Basic Auth on every web/API/OTA path. Default
admin/password, changeable from the UI, persisted in NVS underhttp_pass. - Persistent configurable hostname (blank = MAC-derived fallback).
- DHCP / static IP UI with live lease values shown next to the form.
- pyMC token management UI (replaces the older "TCP password" label).
- Reboot button from the UI.
/statspage — uptime, radio config, RX/TX/error counters, RSSI/SNR/noise floor, die temperature, network mode.- JSON API endpoints for headless integration.
See README "Default web UI / OTA / API credentials" for the credential
matrix and how to change them.
New board (8th variant)
Seeed XIAO nRF52840 + Wio-SX1262 carrier (SKU 102010710) — nRF52840
paired with Seeed's Wio-SX1262 Meshtastic carrier.
- USB-CDC transport only (no Wi-Fi/Ethernet/HTTP — same constraints as T114)
- No onboard display
- DIO2-as-RF-switch + external LNA gate on D5 (RXEN)
- TCXO 1.8 V via DIO3, max 22 dBm chip TX (no PA)
- OTA: Adafruit nRF52 DFU (UF2 disk on double-click reset) or in-app
CMD_OTA_*over USB-CDC
fw_suffix: xiao_nrf52_wio (auto-detected by pymc_sector_array's OTA scanner).
Boards (8 binaries below)
| Board | Binary | Notes |
|---|---|---|
| Heltec WiFi LoRa 32 V3 | pymc_usb-v0.8.0-heltec_v3.bin |
ESP32-S3 + SX1262 |
| Ikoka Stick | pymc_usb-v0.8.0-ikoka_stick.bin |
ESP32-S3 + SX1262 |
| Seeed XIAO Wio-SX1262 | pymc_usb-v0.8.0-xiao_wio_sx1262.bin |
ESP32-S3 |
| RAK3112 WisMesh | pymc_usb-v0.8.0-rak3112_wismesh.bin |
ESP32-S3 + BLE + Wi-Fi |
| WaveShare ESP32-P4-Nano | pymc_usb-v0.8.0-esp32_p4_nano.bin |
ESP32-P4 + E22 (SX1262); Ethernet preferred over Wi-Fi |
| Lilygo T3-S3 | pymc_usb-v0.8.0-lilygo_t3s3.bin |
ESP32-S3 + SX1262 + OLED |
| Heltec T114 | pymc_usb-v0.8.0-heltec_t114.hex + -dfu.zip |
nRF52840 + SX1262 + TFT 135×240; no Wi-Fi/TCP |
| Seeed XIAO nRF52840 + Wio-SX1262 (new) | pymc_usb-v0.8.0-xiao_nrf52_wio.hex + -dfu.zip |
nRF52840 + SX1262; no Wi-Fi/TCP, no display |
Flashing
ESP32 boards (USB CDC):
esptool.py --port /dev/ttyACM0 write_flash 0x10000 pymc_usb-v0.8.0-<board>.bin
# or, with PlatformIO source checkout:
cd firmware && pio run -e <env> -t uploadnRF52 boards (T114, XIAO nRF52840 + Wio) — Adafruit bootloader:
double-tap reset to enter DFU, then either drag the .uf2 (if you
build one from the hex) or use adafruit-nrfutil:
adafruit-nrfutil dfu serial -pkg pymc_usb-v0.8.0-<board>-dfu.zip -p /dev/ttyACM0 -b 115200Default credentials (v0.8)
| Surface | User | Default password | Where to change |
|---|---|---|---|
| Web UI / OTA / JSON API | admin |
password |
UI ▸ Admin password (persisted in NVS) |
| pyMC token (TCP transport) | n/a | empty | UI ▸ pyMC token, or CMD_SET_WIFI |
Change both before exposing the modem outside a trusted LAN.
Upgrading from v0.7
- OTA recommended for ESP32 boards: web UI ▸ Update firmware. First
set an admin password — the defaultadmin/passwordwon't gate
anything if left as-is. - No driver changes needed — wire protocol unchanged.
- First-boot HTTP credentials:
admin/password(set
intentionally to be obvious; rotate before exposing to LAN).
v0.7.0 — sector-array integration set
What's new in v0.7.0
Wire-protocol additions (sector-array integration set)
Backwards-compatible — pre-v0.7 hosts work against v0.7 firmware and vice
versa; the new commands are simply skipped if unknown.
CMD_RADIO_STANDBY(0x40) /CMD_RADIO_RESUME(0x42) — host-driven radio gatingCMD_SET_DISPLAY_NAME(0x48) — sector name banner on the T114 TFTCMD_SET_AUTO_CAD(0x4A) — auto-CAD before every TX, persisted in NVS on T114CMD_ENTER_BOOTLOADER(0x74) — drop nRF52 into Adafruit DFU modeCMD_LOG_MSG(0x80) — async log line (modem → host)- In-app OTA over the transport:
CMD_OTA_BEGIN/CHUNK/VERIFY/APPLY/ABORT(0x90 / 0x92 / 0x94 / 0x96 / 0x98) — required path for T114 since it has no Wi-Fi
fw_suffix rename (aligns with pymc_sector_array OTA scanner)
CMD_GET_VERSION / VERSION_RESP now report:
- Heltec T114:
v0.7.0-heltec_t114(renamed fromt114) - ESP32-P4-Nano:
v0.7.0-esp32_p4(renamed fromesp32p4)
This lets pymc_sector_array auto-detect the board from an uploaded .bin
during OTA — previously these two boards fell through the matcher.
Boards (7 binaries below)
| Board | Binary | Notes |
|---|---|---|
| Heltec WiFi LoRa 32 V3 | pymc_usb-v0.7.0-heltec_v3.bin |
ESP32-S3 + SX1262 |
| Ikoka Stick | pymc_usb-v0.7.0-ikoka_stick.bin |
ESP32-S3 + SX1262 |
| Seeed XIAO Wio-SX1262 | pymc_usb-v0.7.0-xiao_wio_sx1262.bin |
ESP32-S3 |
| RAK3112 WisMesh | pymc_usb-v0.7.0-rak3112_wismesh.bin |
ESP32-S3 + BLE + Wi-Fi |
| WaveShare ESP32-P4-Nano | pymc_usb-v0.7.0-esp32_p4_nano.bin |
ESP32-P4 + E22 (SX1262); Ethernet preferred over Wi-Fi |
| Lilygo T3-S3 | pymc_usb-v0.7.0-lilygo_t3s3.bin |
ESP32-S3 + SX1262 + OLED |
| Heltec T114 | pymc_usb-v0.7.0-heltec_t114.hex + -dfu.zip |
nRF52840 + SX1262 + TFT 135×240; no Wi-Fi/TCP — USB-CDC + UART only |
Flashing
ESP32 boards (USB CDC):
esptool.py --port /dev/ttyACM0 write_flash 0x10000 pymc_usb-v0.7.0-<board>.bin
# or, with PlatformIO source checkout:
cd firmware && pio run -e <env> -t uploadHeltec T114 (nRF52840 with Adafruit bootloader): double-tap reset to
enter DFU, then either drag the .uf2 (if you build one from the hex)
or use adafruit-nrfutil:
adafruit-nrfutil dfu serial -pkg pymc_usb-v0.7.0-heltec_t114-dfu.zip -p /dev/ttyACM0 -b 115200Memory footprint
| Board | Flash used | Flash partition | RAM used |
|---|---|---|---|
| heltec_v3 | 1.06 MB | 3.19 MB (33%) | 53 KB |
| ikoka_stick | 1.06 MB | 3.19 MB (33%) | 54 KB |
| xiao_wio_sx1262 | 1.06 MB | 3.19 MB (33%) | 54 KB |
| rak3112_wismesh | 1.07 MB | 3.19 MB (34%) | 53 KB |
| esp32_p4_nano | 1.02 MB | 6.25 MB (16%) | 40 KB |
| lilygo_t3s3 | 1.08 MB | 1.25 MB (86%) | 53 KB |
| heltec_t114 | 147 KB | 796 KB (19%) | 16 KB |
Lilygo T3-S3 is the tightest (86% flash used); consider partition table
adjustments before adding ~150 KB more features on that target.