Skip to content

Releases

v0.7.3

Choose a tag to compare

@benreu benreu released this 29 Oct 20:12

UART panel shows the real satellites-used count from GSA
WiFi panel Internet health

v0.7.2

Choose a tag to compare

@benreu benreu released this 29 Oct 13:28
v0.7.2

v0.7.1

Choose a tag to compare

@benreu benreu released this 29 Oct 12:59
v0.7.1

v0.7.0

Choose a tag to compare

@benreu benreu released this 29 Oct 13:07
v0.7.0

v0.6.4

Choose a tag to compare

@benreu benreu released this 29 Oct 11:01
fix restarts going through a panic from a too high task priority

config_restart() created its task at TASK_PRIORITY_MAX, 100, but
FreeRTOS only takes priorities below configMAX_PRIORITIES (25). IDF 5
asserts on that, so every OTA, config save and config reset rebooted
through a panic instead of esp_restart(). The panic overwrote the
stored core dump each time, skipped the 1 s delay, and could drop the
OTA reply, so the update page reported a connection error although the
update had worked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

v0.6.3

Choose a tag to compare

@benreu benreu released this 20 Oct 15:21

New

  • F9P receiver panel. A new card at the bottom of the web page writes one of two configs to the ZED-F9P over the UART: dual-GPS moving base, or RS-232 NMEA output. It also reads back the current mode, UART2 baud and message rates, and can check every key in RAM and flash against what a write would set.
    • In RS-232 mode you pick the GGA/VTG/RMC/GSA rates (up to 10/5/2/1 Hz) and the UART2 baud (19200 or 38400) on the panel.
    • Corrections to the receiver pause while the ESP32 talks to it: about 6–10 s for a write, 0.35 s for a read, 7 s for a check.
    • New endpoints: POST /f9p/config, GET /f9p/config, POST /f9p/check.
  • Distance to the base station and RTK accuracy. The base position is read from RTCM 1005/1006 in the correction stream. The NTRIP client card shows the 3D, horizontal and vertical distance to the base in ft/mi, plus the base ID and correction age.
    • The same data is in /status under rtk (in metres) and in a $PESP,NTRIP,CLI,BASE,... sentence sent every 5 s.
    • On a VRS mountpoint, the distance is to the virtual station, not a physical CORS.
  • Receiver status on the UART card. Fix, satellites, HDOP, VDOP (from GSA) and 1-sigma lat/lon/alt (from GST) are now shown on the UART card, and they work with the NTRIP client off.
  • Mountpoint picker. A Scan button on the NTRIP client card fetches the caster's sourcetable. Mountpoints are grouped as open or login required, show format, fee and distance, and are sorted nearest first when there is a fix. It works before you save settings.

Fixes

  • The NTRIP and socket clients now reconnect right away when the server closes the connection. Before, the read loop spun on EOF. The NTRIP client ignored the caster for 15–30 s, and the socket client never reconnected if the UART was quiet.
  • The NTRIP client now clears its caster-ready flag on disconnect, so it stops taking GGA while disconnected.
  • Sourcetable replies with HTTP/1.0 200 OK are now accepted.

Build / internal

  • dependencies.lock is now committed, pinning espressif/mdns to 1.11.3.
  • CONFIG_MDNS_ENABLE_BROWSE=y is set in sdkconfig.
  • The web server buffer goes from 2048 to 4096 bytes and the URI handler limit from 10 to 12. index.html now declares UTF-8.
  • tools/f9p/ holds the u-center dumps. tools/f9p_config_gen.py generates main/f9p_config_data.h from them, and --check reports when the header is out of date.

Upgrade notes

Important

Flash www.bin as well as the app. The page changes are in the www SPIFFS image, so an app-only OTA keeps the old page. The /status fields and the $PESP sentence still work without it.

  • The F9P panel needs UBX input turned on for UART1 on the receiver. If it's off, set CFG-UART1INPROT-UBX once in u-center. Reading and checking also need the F9P's TX wired to the ESP32's RX.
  • Sigma and VDOP only show if the receiver outputs GST and GSA on the port wired to the ESP32.

Full Changelog: v0.6.2...v0.6.3

v0.6.2

Choose a tag to compare

@benreu benreu released this 20 Oct 15:24

v0.6.2

Added

  • Reset to defaults button in the web UI, below the log button, with a
    confirmation dialog. It returns settings to their defaults but keeps the
    hotspot settings, so the device stays reachable on its own access point.
    Wi-Fi station settings are also kept unless you tick the checkbox in the
    dialog. Holding GPIO0 for 5 seconds still wipes everything, hotspot included.
  • Heartbeat on the onboard LED (GPIO 13), for boards like the Adafruit
    HUZZAH32 whose only built-in LED is on that pin.
    • Normal: alternates bright and dim at 1 Hz, never fully off.
    • Fault: blinks fully off at 5 Hz. This means a Wi-Fi station is configured
      but not connected. Running in hotspot-only mode is not a fault.

Changed

  • Status LED defaults: hotspot red, Wi-Fi station blue, NTRIP client
    green. Before this, the hotspot and NTRIP client defaulted to off and showed
    nothing. Brightness is unchanged.

Upgrade notes

  • The reset button is part of the web files image (www.bin). If you update
    only the app over OTA, the button won't appear; flash www.bin too. The
    POST /config/reset endpoint works with just the app update.
  • The new colors only apply where no color has been saved. A board that has
    saved its settings keeps its old colors. Holding GPIO0 for 5 seconds clears
    them and applies the new defaults.
  • GPIO 13 is now always used for the heartbeat LED, on every board. It can no
    longer be used for JTAG (MTCK) or anything else.

v0.6.1

Choose a tag to compare

@benreu benreu released this 18 Jul 00:01

Changelog

v0.6.1

Changes since forking from nebkat/esp32-xbee master (fork point 8fc008a).

Platform

  • Upgrade to ESP-IDF v5.4.4 — migrates deprecated APIs (netif STA list, OTA app description, mDNS includes), fixes accept() socklen_t type, updates the button submodule to an IDF5-compatible commit, regenerates sdkconfig, adds pinned CI build workflow (01cab5f)

Networking

  • WiFi AP now disables itself 5 minutes after the STA gets an IP if no AP clients are connected; fixed a bug that incorrectly marked the AP active while STA was active (9a0b1f7)
  • Assign a predictable last-octet IP (.81) once an address is obtained, for easier access on the network (c3bf9e8)
  • Switch to ntrip.local mDNS name for consistent device lookup, after discovering the fixed .81 octet broke NTRIP connectivity (16d2eda)
  • Add more detailed logging for failed NTRIP connections (dda3017)
  • Use semaphores to avoid race conditions in LED fading (fe65ec1)
  • Increase interrupt watchdog timeout to 1000ms, giving OTA writes/NVS commits more headroom before tripping ESP_INT_WDT (c6b68a7)

OTA / Firmware updates

  • Add OTA update feature: repartition scheme + OTA buttons on the webpage (45be23f)
  • Add a Linux upload script using esptool (9ce7380)

Web UI

  • Add a log viewer page, linked via a button on the main page (33c6797), later moved from the footer onto the main page using the standard panel style (bbbf14a)
  • Add a CPU load panel (per-core load from FreeRTOS idle task counters, new cpu_load field on /status); merge Uptime/Heap into the same "System" card; reflow Firmware/System/Log cards into the same row as NTRIP/Socket settings (f2b05b8)
  • Gray out the WiFi Hotspot panel when the AP times out from no clients (2248cb1)
  • Rename page titles from "ESP32 XBee ..." to "ESP32 NTRIP ..." (d5f77a2)
  • Increase webpage status poll rate from 2.5s to 1s (e2d62db)

Housekeeping

  • Point button submodule at the AOG-silrep fork, bump to the esp_timer millis() commit (0fec6fe)
  • Add debug logging for button registration (9485125)
  • Add managed_components/ to .gitignore (4dbe088)