Skip to content

v1.5.0 — Critical fix: FCC unlock broken since v1.4.8 (byte order revert)

Choose a tag to compare

@doesthings doesthings released this 17 Jul 11:59

v1.5.0 — Critical fix: FCC unlock broken since v1.4.8

The problem

v1.4.8 introduced a DUML frame byte order change that broke FCC unlock on real RC2 hardware. v1.4.7 worked perfectly.

Root cause

The DUML frame builder was modified based on an incorrect analysis of the wire format. The correct byte layout is defined by the public dji-firmware-tools project (comm_mkdupc.py, GPL-3.0), which is the authoritative reference for the DUML protocol:

[4] = sender [5] = receiver/dst [6-7] = sequence [8] = cmdType [9] = cmdSet [10] = cmdId

Verification

Confirmed against three independent sources:

  1. dji-firmware-tools (public GPL-3.0 reference) — the DJICmdV1Header struct defines [5]=receiver_info, [8]=cmd_type_data
  2. Real RC2 hardware — v1.4.7 layout works, v1.4.8+ layout breaks
  3. Empirical testing — the reverted layout restores FCC unlock

What was fixed

  • Reverted frame builder to the correct byte layout ([5]=dst, [8]=cmdType)
  • Reverted response validation to match
  • Reverted FCC profile timing to the known-working values (150ms inter-frame, 400ms inter-round, 80ms read window, 2 rounds)
  • Reverted keepalive timing (100ms inter-frame, 80ms read window)

What was NOT reverted (still improved from v1.4.7)

  • LED fix (no longer blocks FCC keepalive)
  • 4G hardening (model whitelist, dongle pre-check, serial caching, single-socket reuse)
  • Auto-update fix (rate-limit retry, install permission check, error surfacing, Check Again button)
  • Update-available banner on FCC page

Full changelog

v1.4.9...v1.5.0