Releases: OpenShock/Firmware
1.5.0-rc.3
OpenShock Firmware 1.5.0-rc.3
Fixed a critical bug where the firmware could never connect to LCG, and addressed code correctness issues (variable initialization and type casting) along with compiler warning cleanups.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.5.0-rc.2
OpenShock Firmware 1.5.0-rc.2
This release candidate focuses on E-Stop reliability, rate limiting behavior, and general internal cleanup and correctness improvements.
Highlights
-
Improved E-Stop handling
- More reliable state transitions.
- Removed event spamming by introducing change detection.
- Added a short re-arm grace period after clearing to prevent immediate re-triggering due to switch bounce or noise.
- Cleaner handling of external E-Stop triggers.
-
Rate limiter improvements
- More efficient internal tracking of recent requests.
- Corrected cleanup and timing behavior under sustained load.
- More predictable blocking behavior when limits are exceeded.
Stability & Internal Cleanup
- Safer handling of integer formatting and digit counting (avoids edge-case overflows).
- Reduced unnecessary string copying by tightening ownership where appropriate.
- Command handling and serial logic cleaned up for clearer control flow.
- General warning cleanups, minor API refinements, and consistency improvements across the codebase.
Build & Tooling
- Minor CI and dependency updates.
- Expanded compiler warnings where possible to catch issues earlier during development.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.5.0-rc.1
OpenShock Firmware 1.5.0-rc.1
This release candidate focuses on radio reliability, firmware behavior improvements, and a refreshed frontend.
Highlights (User-Visible Firmware Changes)
- Major RF/RMT transmitter rework for improved timing accuracy and more reliable shocker communication.
- Updated AssignLCG integration using the new backend endpoint (removes the old LCG override setting).
- Hub now reports its Wi-Fi signal strength (RSSI), this will be used to show connection health in UI's.
- Serial output now uses CRLF line endings for improved compatibility with Windows terminals.
- Added T330 shocker protocol support.
Radio & Timing
- Reworked RF pipeline with more consistent timing and fewer internal allocations.
- Fixed timing issues for CaiXianlin and improved PET998DR handling.
- Additional guardrails added to the RF subsystem to prevent stalls/crash loops.
Firmware Behavior / System
- Introduced internal execution time limits to prevent firmware from getting stuck in long-running operations.
- Replaced all
ESP.restart()usage with ESP-IDF nativeesp_restart()calls - Improved OTA, Wi-Fi initialization, and crash-loop resilience.
HTTP & Gateway
- Clearer/more consistent HTTP error and status behavior.
- Improved 401 handling and token recovery.
- AssignLCG now reports firmware version and uses the updated endpoint.
Frontend & UX
- Migrated to Svelte 5 + shadcn.
- Updated to Tailwind CSS v4 and reduced frontend bundle size.
- UI palette synced with website.
Misc / Internal Changes
- PlatformIO, espressif32, FlatBuffers, Node, pnpm, and other dependency updates.
- Build reproducibility improvements and CI cleanup.
- Various memory fixes, warning cleanups, and improved parsing logic.
Breaking Changes
- LCG override removed (new AssignLCG endpoint required).
- Serial output now uses CRLF (update scripts if needed).
Notes
- RF timing changes are substantial; please report shocker-specific regressions.
- Scripts relying on legacy AssignLCG behavior may need updates.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.4.0
OpenShock Firmware 1.4.0
This release is packed with bugfixes, optimizations, code cleanup, prepwork for ESP-IDF, and some features!
Highlights
- Add support for configuring hostname of ESP via Serial.
- Add support for configuring Emergency Stop via Captive Portal and Serial.
- Report available GPIO pins to Captive Portal Frontend.
- Massively refactor serial command handler.
Optimizations
- Bump platform-espressif32 to version 6.9.
- Start using C++17 features including std::string_view.
- Clean up platformio.ini file.
- Lots of miscellanious code cleanup.
- Implement custom zero-copy type conversion methods with better error checking.
- Reduce log spam by the arduino library.
- Improve error handling of gpio pin selection.
- Attempt to make more sense out of the 998DR protocol serializer.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.4.0-rc.2
OpenShock Firmware 1.4.0-rc.2
Fixed EStop debouncing logic.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.4.0-rc.1
OpenShock Firmware 1.4.0-rc.1
This release is packed with bugfixes, optimizations, code cleanup, prepwork for ESP-IDF, and some features!
Highlights
- Add support for configuring hostname of ESP via Serial.
- Add support for configuring Emergency Stop via Captive Portal and Serial.
- Report available GPIO pins to Captive Portal Frontend.
- Massively refactor serial command handler.
Optimizations
- Bump platform-espressif32 to version 6.9.
- Start using C++17 features including std::string_view.
- Clean up platformio.ini file.
- Lots of miscellanious code cleanup.
- Implement custom zero-copy type conversion methods with better error checking.
- Reduce log spam by the arduino library.
- Improve error handling of gpio pin selection.
- Attempt to make more sense out of the 998DR protocol serializer.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.3.0
OpenShock Firmware 1.3.0
This release adds support for more boards, has more bugfixes, better error handling, and optimization/cleanup.
Highlight
- Added support for DFRobot Firebeetle, Wemos S3 Mini and WaveShare S3 Zero boards.
Minor Updates
- Re-Add PET998DR Quiet Postamble.
- Fix CaiXianlin protocol sending non-zero when doing a beep command.
- Moved schema files to seperate repository.
- Improve error handling and logging.
- Dependency updates.
- Code cleanup, optimization and refactoring.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.3.0-rc.1
OpenShock Firmware 1.3.0-rc.1
This is the first release candidate for version 1.3.0.
Highlight
- Added support for DFRobot Firebeetle, Wemos S3 Mini and WaveShare S3 Zero boards.
Minor Updates
- Re-Add PET998DR Quiet Postamble.
- Fix CaiXianlin protocol sending non-zero when doing a beep command.
- Moved schema files to seperate repository.
- Improve error handling and logging.
- Dependency updates.
- Code cleanup, optimization and refactoring.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.2.0
OpenShock Firmware 1.2.0
This release adds a new shocker protocol, more bugfixes, configurability, and performance improvements.
Highlight
- Added support for 998DR Petrainer RF protocol.
Major Updates
- Add command to get/set api domain.
- Add command to get/set/clear override for Live Control Gateway (LCG) domain.
Minor Updates
- Change transmission end command to last for 300 ms.
- Increase WDT timeout during OTA updates to prevent watchdog resets.
- Remove non thread-safe RF sequence caching.
- Update flatbuffers to 23.5.26.
- Start utilizing StringView more to reduce memory and CPU usage.
- Small code cleanup and refactoring.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin1.2.0-rc.1
OpenShock Firmware 1.2.0-rc.1
This is the first release candidate for version 1.2.0.
Highlight
- Added support for 998DR Petrainer RF protocol.
Major Updates
- Add command to get/set api domain.
- Add command to get/set/clear override for Live Control Gateway (LCG) domain.
Minor Updates
- Change transmission end command to last for 300 ms.
- Increase WDT timeout during OTA updates to prevent watchdog resets.
- Remove non thread-safe RF sequence caching.
- Update flatbuffers to 23.5.26.
- Start utilizing StringView more to reduce memory and CPU usage.
- Small code cleanup and refactoring.
Flashing the firmware
Download OpenShock_[board]_[version].bin and flash it to your microcontroller:
esptool write_flash 0x0 OpenShock_[board]_[version].bin