Skip to content

Releases: pyMC-dev/pymc_modem

v0.8.0 — HTTP management surface + JSON API

20 May 19:02

Choose a tag to compare

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 under http_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.
  • /stats page — 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 upload

nRF52 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 115200

Default 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 default admin/password won'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

12 May 19:54

Choose a tag to compare

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 gating
  • CMD_SET_DISPLAY_NAME (0x48) — sector name banner on the T114 TFT
  • CMD_SET_AUTO_CAD (0x4A) — auto-CAD before every TX, persisted in NVS on T114
  • CMD_ENTER_BOOTLOADER (0x74) — drop nRF52 into Adafruit DFU mode
  • CMD_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 from t114)
  • ESP32-P4-Nano: v0.7.0-esp32_p4 (renamed from esp32p4)

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 upload

Heltec 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 115200

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