1.5.0
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 nativeesp_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