Documentation
Onboarding
Getting Started
Power & Battery
Hardware & Components
Build & Assembly
Radio & RF Design
Frequencies & Regulations
Firmware & Software
USB & Connectivity
GPS & Navigation
Morse & Communication
Modes & Operation
Field Operations & Rescue
Building Effectively
Build Variants
Project & Reference

Version history of Aegis-Beacon firmware and hardware, aligned with the repository DATASHEET

Changelog

All notable changes across firmware, hardware and documentation, mirroring the authoritative DATASHEET at the repository root.

Version 6.0 (Current)

  • Boot-safe pin rework (ESP32 DevKit V1): the GPIO map was audited against the strapping and reserved pins. Radio DIO1 moves from GPIO 2 to GPIO 39 (input-only, boot-safe), the battery divider moves from GPIO 34 to GPIO 36 (resolving the double-booking with the SW_DN button), LCD D7 moves from GPIO 12 to GPIO 2 (the HD44780 input is high-impedance, so the strap sample is undisturbed) and the GPS TX line is released entirely (PIN_GPS_TX = -1, the firmware never transmits to the GPS), leaving the MTDI strap pin GPIO 12 unconnected. The I2C display probe now runs on the shared 13/15 bus instead of the default 21/22 pins (GPIO 21 is the radio BUSY line, GPIO 22 the GPS RX input) and releases the bus with Wire.end() when nothing answers.
  • I2C LCD backpack support: new DISPLAY_TYPE 5 (16x2) and 6 (20x4) drive an HD44780 over a PCF8574 I2C backpack through LiquidCrystal_I2C on SDA=GPIO13/SCL=GPIO15 (the OLED bus pins), with an address probe (0x27/0x3F) at boot, backlight tied to sleep, and no GPIO 12 conflict with GPS TX. See HD44780 LCD Displays.
  • Benchmark demo mode: a compile-time BENCHMARK_DEMO flag runs the full UI and Morse timing on a bench board with no radio, battery divider or GPS attached: radio init and keying become stubs, RSSI reads a virtual -120 dBm floor, the battery ADC and GPS UART are never touched and deep sleep is replaced by an idle loop. See Benchmark Demo Mode.
  • ST7735 wake fix: waking the TFT from power-down re-initialises the panel (initR + rotation + clear) instead of relying on the unreliable soft-SPI power-up register sequence; the type 2 display now always comes back after a sleep.
  • LISTEN mode: the beacon can now receive and decode live Morse CW. The radio stays on the first configured frequency, samples RSSI every 5 ms, measures mark and gap durations with the PARIS timing model, accumulates symbols and streams every decoded character to the OLED and over serial as AEGIS:CW:<char>. Full ITU table (A-Z, 0-9, punctuation); entered with MODE LISTEN.
  • Battery monitor: live pack voltage through a 2:1 divider on GPIO 36 (ADC1). readBatteryMv() / battPct() map 3300-4200 mV to 0-100%; a battery glyph with three level cells appears on BEACON, SEARCH and LISTEN; below 3550 mV the glyph flashes, the red LED blinks and AEGIS:BATT:low is emitted once. New BATT serial command.
  • Board temperature: the ESP32 internal silicon sensor is reported as temp= in the extended AEGIS:STATE line and in the STATUS debug block.
  • RSSI history strip-chart: a 120-sample ring buffer (RSSI_HIST_LEN) powers an oscilloscope-style trace on the SEARCH RSSI band and a dedicated trace frame on the LISTEN screen, replacing the plain fill bar.
  • OLED engine rework: pulsing antenna glyphs (splash, BEACON, SEARCH, LISTEN headers), satellite glyph and 4-cell lock meter on GPS WAIT, segmented TX progress bar with blinking caret, sweep caret on the SEARCH bar, distress corner brackets and blinking TX light on EMERGENCY, WiFi glyph and checklist on CONFIG, centered double-frame message dialogs.
  • Serial protocol: new AEGIS:BATT:, AEGIS:BATT:low, AEGIS:CW: lines; AEGIS:STATE extended with batt, temp, up; AEGIS:HELLO version bumped to 6.0; HELP lists BATT and LISTEN.
  • Migration: the NVS schema is unchanged; flashing v6.0 over v5.5 preserves all settings.

Version 5.5

  • Serial bridge protocol: machine-readable AEGIS:POS:, AEGIS:HELLO: and AEGIS:STATE: lines on USB serial, printed plain (never ANSI-colored) and throttled to at most one position report every 5 seconds.
  • Serial commands: FREQ <MHz> (set and persist the desired frequency), FREQ?, WPM <5-40>, MODE <BEACON|SEARCH|CONFIG|EMERGENCY>, POS, STATUS, HELP.
  • Cross-platform bridge (bridge/aegis-serial-bridge.py): auto-detects the serial port on Windows, macOS and Linux, and forwards GPS fixes to the website’s Report Position page, streaming live into an open page or opening it pre-filled.
  • Bridge live TUI: the bridge renders a live terminal dashboard (device status, latest position, page state, scrolling log) when run in a terminal, and forwards typed serial commands (FREQ, WPM, MODE, POS, STATUS, HELP) to the device; --tui / --no-tui override the auto-detection.
  • Report Position page (/report-position): auto-fills from a link, live-updates from the bridge, Google Maps and OpenStreetMap links, copy-link, a paste box for testing without hardware, and a keyless Leaflet map that draws a track as positions move.
  • Offline-first config dashboard: the WiFi captive portal now uses only default system fonts, since it is configured without connectivity.
  • Merged reference documentation: DATASHEET.md is now the single authoritative document (electrical specs, GPIO map, NVS schema, HTTP API, technology stack, global SAR frequency database, serial protocol reference, deep dives and troubleshooting), replacing the standalone FREQUENCIES.md and TECHNOLOGIES.md.
  • SEO and legal pages: canonical URLs, Open Graph, Twitter cards and JSON-LD structured data on every page, plus dedicated Disclaimer, Terms of Service and Privacy Policy pages.
  • Building Effectively wiki section: six new pages covering build strategy, quality gates, bench fixtures, rework, time planning and build logging.
  • Hardening pass: fixed a duplicate user message that appeared when retrying a chat question after a failed local-model load, and made the dashboard CSS extractor scope pseudo-elements on body/:root and grouped header selectors correctly (output-neutral for the current dashboard).

Version 5.4

  • Battery monitor: 100 kohm divider on GPIO 36, 9-point piecewise Li-ion curve, pixel-art icon in every screen header, CHG (charging) indicator, animated dashboard bar.
  • Improved OLED graphics across all screens.
  • readBattery() integrated into the main loops; battery state exposed live on every screen.

Version 5.3

  • Replaced the potentiometers with a 4-button control panel: SW_MODE / SW_SEL / SW_UP / SW_DN.
  • OLED adjustment overlay and auto-repeat on held buttons.
  • NVS save via SW_SEL long press.

Version 5.2

  • Radio upgraded from SX1276 to SX1262 (Ebyte E22-400M30S).
  • BUSY pin on GPIO 21 is now mandatory; ensureSpiStarted() helper added.
  • TCXO 1.6 V parameter for the E22 module.

Version 5.1

  • NEO-6M GPS: name + coordinates in the Morse payload (SOS DE [NAME] PSN [LAT] [LON]).
  • TinyGPS++ integration and RTC GPS cache.
  • GPS wait screen with satellite count and progress bar.

Version 5.0

  • Ported to ESP32 DevKit V1 (30-pin).
  • Display upgraded from SSD1306 0.96” I2C to SSD1309 2.42” SPI (U8g2 driver).
  • GPIO 25 native DAC1 audio output; audioDacSilence() mid-rail parking.
  • Radio moved to the VSPI bus.

Version 4.0

  • Added SSD1306 0.96” OLED (I2C, GPIO 0/1).
  • Added 3.5 mm audio jack (GPIO 18 PWM).
  • SW_CONFIG moved from GPIO 1 to GPIO 21.
  • Audio/OLED NVS keys introduced.

Version 3.0 (Initial Release)

  • Initial public release: ESP32-C3 + SX1276.
  • WiFi dashboard, deep sleep, frequency hopping, NVS config, RTC RAM state, CI/CD.

Upgrading

From v4.0 to v5.4 (Breaking Hardware Revision)

Warning

This is a full hardware revision. Do not run v5.x firmware on the original ESP32-C3 board with the RA-02 module without complete rewiring.

Featurev4.0v5.4
MicrocontrollerESP32-C3 SuperMiniESP32 DevKit V1 (30-pin)
RadioSX1276 RA-02 (OOK, +17 dBm)SX1262 E22-400M30S (CW/FSK, +22/+30 dBm)
DisplaySSD1306 0.96” I2C 128x64SSD1309 2.42” SPI 128x64 (U8g2)
GPSNoneNEO-6M UART, coords + name in Morse payload
Battery monitorNoneADC voltage divider to % + mV, live on every screen
Parameter adjustmentDashboard only4 physical buttons: SW_MODE / SEL / UP / DN
Morse payloadSOSSOS DE [NAME] PSN [LAT] [LON] (configurable)
Audio output pinGPIO 18 (PWM only)GPIO 25 (native DAC1 + LEDC)
BUSY pinN/AGPIO 21, mandatory on SX1262
Display librariesAdafruit SSD1306 + GFXU8g2 + TinyGPS++
BOM cost~$12-14 USD~$23-28 USD

Migration steps: factory reset NVS, rewire all GPIO connections per the GPIO pin map, install the new library dependencies (U8g2, TinyGPS++), then reconfigure via the dashboard.