Skip to content

TallyCCUPro V3.7

Choose a tag to compare

@fiverecords fiverecords released this 29 Jan 20:59
· 12 commits to main since this release
a4f0553

TallyCCU Pro v3.7 Release Notes

Safe Mode Recovery System

This release introduces a comprehensive Safe Mode system to automatically detect and recover from hardware-related boot failures, eliminating the frustrating boot loop scenarios that could occur with SDI Shield issues.

The Problem

Previously, if the SDI Shield encountered issues during initialization (missing 12V power, invalid SDI signal, or I2C problems), the system would enter an infinite boot loop:

  1. Arduino boots → tries to initialize SDI Shield
  2. Shield blocks on I2C communication
  3. Watchdog triggers reset after 8 seconds
  4. Loop repeats indefinitely

This made diagnosis difficult since the web interface never became available.

The Solution

The new Safe Mode system tracks boot attempts using EEPROM. After 3 consecutive boot failures, the system automatically enters Safe Mode, skipping SDI Shield initialization while keeping network services available for remote diagnosis.

New Features

Automatic Boot Loop Detection

  • System tracks consecutive boot failures in EEPROM
  • Clean boot resets the failure counter
  • After 3 failed boots, Safe Mode activates automatically

Safe Mode Operation

When in Safe Mode:

  • ✓ Web interface available (diagnostic page)
  • ✓ Network configuration accessible
  • ✓ vMix tally connection (receive only)
  • ✓ Companion TCP integration
  • ✓ Serial console
  • ✗ SDI tally output (disabled)
  • ✗ CCU camera control (disabled)

Diagnostic Web Interface

New safemode.html page provides:

  • System status (reset count, uptime, free RAM, IP)
  • Common causes and solutions
  • One-click "Restart Normal Mode" button
  • Clear indication of what works and what doesn't

New Serial Commands

  • safemode - Force safe mode on next boot (for testing)
  • normalboot - Exit safe mode and restart

New API Endpoints

  • GET /safemode-status - Returns JSON with system diagnostics
  • POST /safemode-exit - Clears safe mode flag and restarts

Technical Details

New Files

  • SafeMode.h - Header with EEPROM addresses and API
  • SafeMode.cpp - Boot failure detection and recovery logic
  • safemode.html - Diagnostic web interface (copy to SD card)

Modified Files

  • TallyCCUPro.ino - SafeMode integration, dual boot paths
  • TallyManager.cpp - Skip SDI Shield init in Safe Mode
  • WebServer.h - New handler declarations
  • WebServer.cpp - Safe Mode endpoints and redirects

EEPROM Usage

New addresses (310-314):

  • 310: Reset counter
  • 311-312: Boot flag magic (0xDEAD)
  • 313: Last reset reason
  • 314: Manual safe mode flag

Boot Sequence

Power On
    ↓
SafeMode::begin() ← Called FIRST, enables watchdog
    ↓
Check EEPROM boot flag
    ↓
┌─────────────────────┐
│ Flag present?       │─NO─→ Clean boot, counter = 0
│ (previous crash)    │
└──────────┬──────────┘
           │YES
           ↓
      Counter++
           ↓
┌─────────────────────┐
│ Counter >= 3?       │─NO─→ Try normal boot
└──────────┬──────────┘
           │YES
           ↓
      SAFE MODE
      - Skip CCUControl::begin()
      - Skip sdiTallyControl.begin()
      - Initialize network/web only
      - Serve safemode.html

Installation

  1. Upload new firmware to Arduino
  2. Copy safemode.html to SD card root
  3. System will boot normally

To test Safe Mode:

  1. Send safemode via serial
  2. Send reset or power cycle
  3. System enters Safe Mode
  4. Access web interface to see diagnostic page
  5. Click "Restart Normal Mode" to exit

Compatibility

  • Fully backward compatible with v3.6
  • No changes to Companion module required
  • No changes to existing web interfaces (index.html, tally.html, sdcard.html)