Skip to content

Releases: OpenShock/Firmware

1.5.1

14 Apr 16:48
1.5.1
7478644

Choose a tag to compare

OpenShock Firmware 1.5.1

Hotfix release addressing a safety-critical E-Stop bypass.

Bug Fixes

  • E-Stop - Fixed shocker commands being transmitted while E-Stop was active. Commands are now rejected at the entry point (CommandHandler::HandleCommand) and discarded in the RF transmit task's receive loop when E-Stop is engaged.

Full Changelog: 1.5.0 -> 1.5.1

Flashing the firmware

Download OpenShock_[board]_[version].bin and flash it to your microcontroller:

esptool write_flash 0x0 OpenShock_[board]_[version].bin

1.5.0

15 Feb 16:39
1.5.0
f45e870

Choose a tag to compare

OpenShock Firmware 1.5.0

This release is a major firmware update bringing a fully reworked RF transmitter pipeline for more reliable shocker communication, a new T330 shocker protocol, an RFC 8908-compliant captive portal, a rebuilt frontend (Svelte 5 + shadcn), and significant improvements to E-Stop handling and rate limiting.

Warning: Petrainer users will need to re-pair their shockers once they update their hub due to protocol changes.

Highlights

  • Added T330 shocker protocol support
  • Completely reworked RF behaviour for more reliable shocker control
  • WAY more and responsive stable captive portal (It's a night and day difference)
  • Rebuilt Captive Portal UI to match frontend style.
  • E-Stop button is now significantly more reliable with a re-arm grace period
  • Wi-Fi RSSI telemetry reported by the hub for connection health display in frontend

Major Improvements

  • RMT / Radio Transmitter

    • Added T330 shocker protocol support
    • Fixed timing issues for CaiXianlin and improved PET998DR handling
    • Lots of minor optimizations, refactors and guardrails to improve radio reliability
  • E-Stop

    • More reliable E-Stop state transitions with change detection, eliminating event spamming
    • Re-arm grace period after clearing prevents re-triggering from switch bounce or noise
  • HTTP

    • Rate limiter now tracks requests more efficiently with corrected cleanup timing and more predictable blocking
  • Captive Portal

    • Captive portal is now refactored to operate more like RFC 8908 spec with improved responsiveness
    • Migrated from Svelte 4 + Skeleton UI to Svelte 5 + shadcn-svelte with Tailwind CSS v4
    • UI palette synced with OpenShock website; reduced bundle size
    • Added unit testing and Svelte check steps; migrated from npm to pnpm
    • Removed mDNS server from captive portal
    • Removed the "AbsolutelySureButton" UI element, meant as a joke but it got old and obnoxious
  • AssignLCG & Gateway

    • AssignLCG uses the new backend endpoint and reports firmware version; legacy LCG override removed
    • Improved HTTP error/status consistency and 401 token recovery

Minor Updates / Optimizations

  • Wi-Fi RSSI telemetry now reported by the hub so the OpenShock.app frontend can display connection health
  • Replaced all ESP.restart() calls with ESP-IDF native esp_restart()
  • Improved OTA update flow and crash-loop resilience
  • Safer integer formatting, reduced unnecessary string copying, and cleaner command/serial logic
  • CA certificate bundle updated to December 2025 Mozilla extract, this bundle is not used yet but will be once we drop Arduino for ESP-IDF
  • CDN migrated from Cloudflare R2 (rclone) to Bunny CDN (SFTP) with cache purge support
  • CI/CD updated: Actions bumped (checkout v6, codeql v4, download-artifact v7), timeout limits on all jobs, pnpm adopted, Node.js updated
  • Expanded and cleaned up compiler warnings; PlatformIO, espressif32, FlatBuffers, and other dependency updates

Bug Fixes

  • Addressed variable initialization and type casting correctness issues
  • Fixed timing issues in CaiXianlin and PET998DR shocker protocols

Full Changelog: 1.4.0 -> 1.5.0

Flashing the firmware

Download OpenShock_[board]_[version].bin and flash it to your microcontroller:

esptool write_flash 0x0 OpenShock_[board]_[version].bin

1.5.0-rc.7

13 Feb 01:22
1.5.0-rc.7
c8b9dc2

Choose a tag to compare

1.5.0-rc.7 Pre-release
Pre-release

OpenShock Firmware 1.5.0-rc.7

Fix stable Semver parsing error, make beta builds more verbose, increase OTA task stack size, implement more guards in OTA code.

Full Changelog: 1.5.0-rc.6 -> 1.5.0-rc.7

Flashing the firmware

Download OpenShock_[board]_[version].bin and flash it to your microcontroller:

esptool write_flash 0x0 OpenShock_[board]_[version].bin

1.5.0-rc.6

11 Feb 00:56
1.5.0-rc.6
a302e7b

Choose a tag to compare

1.5.0-rc.6 Pre-release
Pre-release

OpenShock Firmware 1.5.0-rc.6

Improved Captive-Portal responsiveness, removed mDNS server from Captive-Portal, some code cleanup.

Flashing the firmware

Download OpenShock_[board]_[version].bin and flash it to your microcontroller:

esptool write_flash 0x0 OpenShock_[board]_[version].bin

1.5.0-rc.5

10 Feb 01:52
1.5.0-rc.5
7e8ea6b

Choose a tag to compare

1.5.0-rc.5 Pre-release
Pre-release

OpenShock Firmware 1.5.0-rc.5

Fixed a bug where password was not being supplied to websocket serialization function, causing WiFi network to try to authenticate with no password.

Flashing the firmware

Download OpenShock_[board]_[version].bin and flash it to your microcontroller:

esptool write_flash 0x0 OpenShock_[board]_[version].bin

1.5.0-rc.4

10 Feb 01:26
1.5.0-rc.4
9ab0030

Choose a tag to compare

1.5.0-rc.4 Pre-release
Pre-release

OpenShock Firmware 1.5.0-rc.4

Fixed a bug where using Captive Portal to connect to a WiFi network would pair the password entered with another the network than selected, removed obnoxious "AbsolutelySureButton"

Flashing the firmware

Download OpenShock_[board]_[version].bin and flash it to your microcontroller:

esptool write_flash 0x0 OpenShock_[board]_[version].bin

1.5.0-rc.3

21 Dec 02:16
1.5.0-rc.3
a966680

Choose a tag to compare

1.5.0-rc.3 Pre-release
Pre-release

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].bin

1.5.0-rc.2

15 Dec 18:10
1.5.0-rc.2
95cc42c

Choose a tag to compare

1.5.0-rc.2 Pre-release
Pre-release

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].bin

1.5.0-rc.1

27 Nov 19:46
1.5.0-rc.1
d4f68f6

Choose a tag to compare

1.5.0-rc.1 Pre-release
Pre-release

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 native esp_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].bin

1.4.0

25 Oct 11:29

Choose a tag to compare

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].bin