Repository navigation
Byte Blaster v1.1.21
Byte Blaster v1.1.21 Release (Safety Hotfix)
Everyone on v1.1.19 or v1.1.20 should update.
1. Fixed: Flywheels Could Speed Up After Releasing Rev
- Symptom: After letting go of rev, flywheel RPM climbed instead of coasting down, potentially reaching full speed.
- Cause: Introduced in v1.1.19 freewheel-emulating decel glide. While coasting down, glide held throttle for "measured RPM - 150 RPM". If the feed-forward (FF) table reads even slightly high (uncalibrated factory table, hot motors, or Kv variation), this produced positive feedback where held throttle accelerated the rotor, raising the subsequent command up to maximum RPM.
- Fix: The decel glide no longer depends on the FF table to remain safe:
- Glide command is strictly monotonic (can only fall) and starts from wire throttle at release.
- If the rotor climbs >100 RPM above its lowest recorded coasting speed, command is aggressively stepped down every tick in proportion to the climb until it ceases climbing.
- Coast reference enforces a minimum decel rate of 5,000 RPM/s, ensuring all glides conclude within ~6s from 31,000 RPM regardless of FF table error, while maintaining regen under 1.4 A.
- Single-motor tuning peer coast uses the same guard.
2. New: Independent RPM Runaway Protection (Safety_Monitor.h)
- Allowance Floor & Tracking: Independent supervisor monitor on each motor calculates an allowable speed ceiling (
reference + max(1500 RPM, 10%)). On spin-down / release, allowance strictly falls with actual rotor deceleration so the rotor cannot climb beyond the safety margin. - Trip Condition: Any motor exceeding its allowance ceiling for 30 ms latches a RUNAWAY lockout, immediately commanding
DSHOT_CMD_STOPon both motors and recording fault0x60(Motor 1) or0x61(Motor 2) with voltage, RPM, throttle, and target. - Comprehensive Coverage: Monitors every output path (PID loop, launch assist, decel glide, dart recovery, peer coasting, and tuning). Tuning runs abort safely with "RPM runaway - cut".
- Safe Clearance: Requires a minimum 2.0-second lockout period, both physical triggers released, and both flywheels stopped (<2,500 RPM or stale telemetry). Idle hold and Always-On spin are inhibited until an explicit user trigger pull.
- Configurator & Diagnostics: Added fault badges and explanations for
ERR_RPM_RUNAWAY_M1andERR_RPM_RUNAWAY_M2, along with live status display (RPM RUNAWAY - CUT).
3. Fixed: Stale RPM Telemetry Identification
- RPM freshness timestamps (
lastTelemetryValidMs) now require valid, plausible eRPM frames rather than non-RPM status/EDT frames or corrupted packets. Prevents stale RPM readings from masking speed changes during glide, stall, runaway, and tuning checks.
4. Verification & Automated Tests
- Updated
tests/glide_freewheel_tests.jswith FF-error sweep (+1% to +25% at 15k, 22k, 31k RPM, mid-launch release, and peer coast). - Added
tests/runaway_protection_tests.jsverifying runaway monitor tripping, wiring, clearing constraints, and eRPM frame gating. - All test suites pass 100% cleanly.
Assets
Byte_Blaster_RP2040_v1.1.21.uf2: Drag-and-drop firmware binary for RP2040 bootloader.Byte_Blaster_RP2040_v1.1.21.bin: Raw flash binary.AM32_F4A_4IN1_F421_2.21_v1.1.21.hex: Pre-built verified AM32 ESC firmware.AM32_F4A_4IN1_F421_2.21_v1.1.21.bin: Pre-built verified AM32 ESC firmware binary.manifest.json: Checksums and release asset metadata.