Skip to content

1.5.0

Choose a tag to compare

@github-actions github-actions released this 15 Feb 16:39
· 47 commits to develop since this release
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