Skip to content

Releases: OpenShock/Firmware

1.6.0-rc.1

1.6.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@openshock-release-bot openshock-release-bot released this 07 Jul 11:03
9c7d347

Added

  • Full setup wizard, REST API migration, and WiFi CRUD overhaul (#426)
    • Migrate all LocalToHub WebSocket commands to HTTP REST endpoints
    • Add guided setup wizard with multi-step stepper and advanced settings mode with vertical section navigation
    • Portal close is now a soft signal that stays open until the device is fully online
    • Add 5-minute auto-close timer when no WebSocket clients are connected
  • Add a keepalive ping timeout that forces a reconnect on backend connection loss (#469)
  • Integrate remote WellturnT330 shocker support

Changed

  • Report specific account linking failure reasons instead of a generic internal error (#484)
    Account linking now reports the specific reason it failed (request failed, timed out, server error, invalid response, or failed to save the token) in both the captive portal and the device logs, instead of a generic "Internal error".
  • Rewrite frontend to Svelte 5 + Vite (#427)
    • Replace SvelteKit with plain Svelte 5 + Vite for the captive portal frontend
    • Migrate to Svelte 5 runes ($state, $derived, $effect)
    • Single-file HTML output via vite-plugin-singlefile for LittleFS
  • Replace LED managers with LEDC-driven drivers (#435)
    • Rename PinPatternManager/RGBPatternManager to MonoLedDriver/RgbLedDriver
    • Replace raw GPIO toggling with ESP32 LEDC hardware PWM for smooth 8-bit brightness control
    • Use chip-agnostic LEDC speed mode (SOC_LEDC_SUPPORT_HS_MODE) for ESP32/S2/S3/C3 compatibility
    • Add cooperative task shutdown with chunked 50ms delays
    • Add ledtest serial command for visual verification

Fixed

  • Various bug fixes and stability improvements (#424)
    • Cooperative task shutdown with bounded timeout and force-kill fallback
    • User-friendly WiFi disconnect error messages
    • Remove erroneous "unexpected protocol: https, expected http" warning

Notices

  • INFO: The frontend was fully rewritten, but since it is served directly from the device's filesystem, no user action is required. The update is applied automatically with the firmware flash.

New Contributors

Full Changelog: 1.5.2...1.6.0-rc.1

1.5.2

Choose a tag to compare

@github-actions github-actions released this 20 Apr 20:33
1.5.2
5546c13

OpenShock Firmware 1.5.2

Feature release restoring missing WellturnT330 support that was intended for 1.5.0.

Bug Fixes

  • Added WellturnT330 Support - Added full support for WellturnT330 devices. This was originally planned for 1.5.0 but was unintentionally left out.

Full Changelog: 1.5.1 -> 1.5.2

Flashing the firmware

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

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

1.5.1

Choose a tag to compare

@github-actions github-actions released this 14 Apr 16:48
1.5.1
7478644

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

Choose a tag to compare

@github-actions github-actions released this 15 Feb 16:39
1.5.0
f45e870

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

1.5.0-rc.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Feb 01:22
1.5.0-rc.7
c8b9dc2

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

1.5.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Feb 00:56
1.5.0-rc.6
a302e7b

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

1.5.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Feb 01:52
1.5.0-rc.5
7e8ea6b

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

1.5.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Feb 01:26
1.5.0-rc.4
9ab0030

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

1.5.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Dec 02:16
1.5.0-rc.3
a966680

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

1.5.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Dec 18:10
1.5.0-rc.2
95cc42c

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