v1.4.8 — Reliability fixes: LED no longer breaks FCC, 7x faster apply, 4G hardened
v1.4.8 — Reliability Fixes
LED toggle no longer breaks FCC mode (critical fix)
Toggling LEDs after activating FCC no longer causes FCC to stop working. The LED command was holding a hardware lock that blocked the FCC keepalive for ~1.5 seconds, creating a gap where DJI Fly could reset the radio to CE. Fixed by:
- LED command no longer holds the hardware lock (uses port 40007, keepalive uses 40009 — different subsystems, no conflict)
- LED now uses a separate transport instance
- LED send pattern updated to 2 bursts × 5 writes × 100ms (10 total, matching the reference app)
- Keepalive now retries with 200ms backoff on lock-failure instead of silently skipping ticks
7x faster FCC apply
FCC unlock now completes in ~880ms instead of ~6.7s:
- Inter-frame delay: 150ms → 10ms
- Inter-round delay: 400ms → 100ms
- Read window: 80ms → 40ms
The 10ms inter-frame delay is proven safe — it's the same timing the 4G activation path has always used successfully.
4G activation hardened
- Reuses one Unix socket for all 128 frames (was opening 128 separate sockets)
- Added aircraft model whitelist — refuses 4G on Mini series (no cellular module)
- Added fast 4G dongle pre-check before sending any frames
- Serial number validated (≥6 chars) and cached across sessions
DUML frame builder corrected
- Fixed byte order to match the DJI proxy spec: byte 5 = cmdType, byte 8 = dst
- Thread-safe sequence counter with random initialization