Skip to content

TallyCCU Pro v3.7.1

Latest

Choose a tag to compare

@fiverecords fiverecords released this 27 Feb 06:27
· 2 commits to main since this release

TallyCCU Pro v3.7.1 — Bug Fixes & Stability Improvements

This release focuses on reliability, touch device support, and fixing edge cases discovered during thorough code review of the entire codebase (~12,400 lines across 25 files).


🔴 Critical Fixes

  • vMix reconnection loop — Previous versions hammered the vMix server with rapid reconnection attempts when it was unreachable, flooding the network and serial log. Now uses progressive backoff (20s → up to 2 min) and resets on success.
  • Tally lights stuck ON — When vMix disconnected, the last tally state remained active on cameras indefinitely. Tally data is now cleared on disconnect.
  • CCU Broadcast truncation — TCP message buffer was 64 bytes, too small for long parameter names with values. Increased to 128 bytes to prevent silent truncation to Companion.
  • Tally mappings not loading — The tally configuration page always showed default 1:1 mappings on load, even when custom mappings were saved in EEPROM. Added getTallyMap endpoint and automatic loading on page open.

🟡 Medium Fixes

  • SD card deadlock in presetsapplyPreset() could lock the SD bus without releasing it on certain error paths.
  • Virgin EEPROM network config — First boot on new hardware could load 255.255.255.255 as IP address. Now detects both 0x00 and 0xFF as uninitialized and applies safe defaults.
  • MAC address generationrandom() range was off-by-one, byte value 0xFF was unreachable.
  • Touch controls broken — Knobs, color wheels, and PTZ joystick only had mouse events. Now fully functional on tablets and touch screens with proper touchstart/touchmove/touchend handlers.
  • Safe mode page deletablesafemode.html was missing from the protected files list in the SD card manager. Could be accidentally deleted, breaking recovery.
  • Filenames with apostrophes — Files like Mike's preset.txt broke action buttons in the SD card manager. Single quotes are now escaped in onclick handlers.
  • Uninitialized EEPROM tally values — Loading mappings from virgin EEPROM showed 255 in all fields. Now validates range and falls back to defaults.

🟢 Minor Fixes

  • Reboot endpoint — Added watchdog reset before the infinite loop to prevent premature reset before the HTTP response is sent.
  • handleParam heap fragmentation — Replaced dynamic String allocation with static buffer for URL-decoded parameter values.
  • Silent fetch failures — Network errors from the web interface to Arduino were silently swallowed. Added .catch() handlers and a global unhandled rejection handler.
  • Color wheel performance — Drag events now throttled to ~30fps to reduce lag on slower hardware.
  • Unnecessary String objects — Removed 3 String() wrapper calls in serial commands that created temporary heap allocations.
  • JSON filename escapinglistFiles endpoint now uses printJsonSafe() for filenames, preventing broken JSON if a file contains quotes.

📋 Version Bump

All 22 source files updated to version 3.7.1, including FIRMWARE_VERSION define and serial boot banner.


Upgrade Instructions

  1. Flash the Arduino sketch from the Arduino/ folder
  2. Copy the 4 HTML files from sdcard/ to your SD card (replace existing)
  3. Power cycle the device

The firmware version will show as 3.7.1 in the serial monitor and web interface.


Full Changelog: v3.7...v3.7.1