Skip to content

v1.8

Choose a tag to compare

@danarrib danarrib released this 12 Apr 23:05
· 14 commits to master since this release

Bullet GCSS v1.8 Release Notes

Firmware — Reliability & Stability

Modem Watchdog and Auto-Recovery

The ESP32 firmware now recovers from a frozen cellular modem without rebooting the entire board. If the modem stops responding (for example, due to a half-open TCP connection after a cellular NAT timeout), the firmware detects the freeze and performs a targeted recovery: it kills the modem task, performs a hardware reset of the SIM7600/SIM800 module, and restarts only the networking task. Total recovery time is typically 15–30 seconds, compared to a full ESP32 reboot in previous versions.

  • Freeze detection triggers a warning after 15 seconds of modem silence, and a full recovery after 30 seconds.
  • For SIM7600 modems, AT+CTCPKA (TCP keepalive) is now enabled to detect dead connections earlier.
  • The entire TinyGSM/MQTT networking stack was moved to a dedicated FreeRTOS task (modemTask) on Core 0, isolating it from the flight controller communication task (fcTask) on Core 1.

Thread Safety Fix

Signal strength polling (AT+CSQ) was being called from the wrong FreeRTOS task, creating a data race between the two CPU cores. This has been fixed — the modem is now accessed exclusively from modemTask, with the signal strength value shared safely via a volatile variable.

Publish Failure Counter

The MQTT publish failure counter now decays on each successful publish, preventing transient WiFi or cellular hiccups from accumulating toward an unnecessary restart threshold.

Firmware Log Improvements

All firmware serial log lines now include a seconds-since-boot timestamp, making it much easier to correlate events when debugging.

MSP Box ID Discovery

Switched from MSP_BOXNAMES to MSP_BOXIDS for flight mode discovery at startup. This is more reliable and avoids issues with long box name strings overflowing the receive buffer. The MSP_BOXNAMES buffer was also increased from 512 to 1024 bytes as a safety measure.


Multi-Aircraft Monitoring

This release adds full support for monitoring multiple aircraft simultaneously from a single browser session.

  • A secondary aircraft panel appears when a second aircraft is detected on the same MQTT broker.
  • The panel shows key telemetry: GPS coordinates, altitude, speed, battery, flight mode, and flight time.
  • Flight time increments locally in real time even between telemetry updates.
  • A "Stop Tracking" button removes the secondary aircraft from the session.
  • A confirmation dialog prevents accidental removal.

UI — Security & Commands

Private Key Export and Import

Operators can now export their Ed25519 signing key as a password-protected PEM file and import it on another device. The key is encrypted with AES-256-GCM using a PBKDF2-derived key (100,000 iterations). This makes it practical to command the same aircraft from multiple devices without regenerating the key pair and re-flashing the firmware.

Command Sequence Synchronisation

The firmware now broadcasts its last accepted command sequence number (lseq) in regular telemetry messages and in all command acknowledgements. When a second UI connects (after importing the key), it automatically synchronises its local sequence counter from the firmware, preventing replay-protection rejections.

Improved Command Modal Warnings

The "Send Command" panel now shows specific, actionable warnings for each blocking condition:

  • INAV too old — Commands require INAV 9.0.0 or newer.
  • No signing key — No key pair has been configured in the Security panel.
  • Firmware has no public key — The public key hasn't been flashed into Config.h yet.
  • Key mismatch — The UI and firmware are using different keys.
  • No command channel — The downlink MQTT topic is not active.
  • MSP RC Override not active — The flight controller is not in MSP RC Override mode.

INAV Version-Gated Commands

The "Set Altitude", "Set Course", and "Jump to WP" commands require INAV 9.0.2 or newer (extended MSP command support). These rows are now hidden entirely when connected to an older firmware version, rather than shown as permanently disabled.


UI — Mission Planner

Home Point on Planner Map

If the aircraft has reported a home point, it is now shown on the Mission Planner map as well. This gives a visual reference when placing waypoints relative to the launch/home position.

Mission Download Fix

The getmission command was dropping the last waypoint when downloading a mission from the aircraft. The off-by-one error in the firmware's buffer allocation and loop bounds has been fixed.


UI — Status Icons

Icon Info Modal

Tapping any status icon in the top bar (connection, signal, battery, GPS, command channel) now opens a small modal explaining what the icon means and what its current state indicates. This is especially useful for new users unfamiliar with the icon states.


UI — General

Tap Feedback on Buttons

Buttons and navigation menu items now show a visual highlight when tapped, providing clearer touch feedback on mobile devices.

Mission Planner Layout

The mission planner stats bar and navigation row share a single line in landscape orientation, recovering vertical screen space on phones held sideways.