Skip to content

v1.4.5

Choose a tag to compare

@doesthings doesthings released this 14 Jul 01:05

FreeFCC v1.4.5

Changes

  • Restored 21-frame FCC profile — matches the verified universal frame set. Removed unverified altitude/distance/NFZ parameter writes that the DJI Fly app overrides at runtime anyway (C0 class flag). Only the FCC radio region switch is a verified effect.
  • Protocol rename: DUMPL → DUML — corrected to the official name (DJI Universal Markup Language) per the dji-firmware-tools wiki. All code, comments, docs, class names, and filenames updated. Zero dumpl mentions in source or APK.
  • README accuracy — dropped unverified altitude/distance/NFZ claims from the tagline and features. Clarified the app targets DJI smart controllers with a screen (RC2, RC Pro 2, RC Plus).

Merged PRs

  • #11 (ther3ptil31987-prog): Fix keepalive service bypassing the hardware write lock — extracted the lock into a process-wide HardwareLock singleton so keepalive frames can't overlap manual operations on the TCP port. Includes a concurrency test.
  • #12 (ther3ptil31987-prog): Fix signed-release CI job to check the keystore secret — the guard was missing SIGNING_KEYSTORE_B64, causing an opaque build failure when that one secret was absent. Applied directly (gh token lacks workflow scope).

FCC Mode

  • Switches radio from CE to FCC mode (higher power, more channels)
  • 21-frame profile, 2 rounds, 150ms between frames
  • Confirmed working on RC2 + RC Pro 2

Compatibility

  • DJI RC2: Mini 5 Pro, Mini 4 Pro, Air 3S, Neo 1, Neo 2, Avata 360
  • DJI RC Pro 2: Mavic 4 Pro (direct install, no launcher needed for FCC)
  • DJI RC Plus: Use freefcc-launcher for 4G

Keepalive + Auto-FCC + 4G + LED + Device Info

  • Foreground service re-applies FCC every 2s to prevent CE reset
  • Auto-FCC toggle: auto-connect, apply, start keepalive, launch DJI Fly
  • 4G activation frames (Unix domain socket, experimental)
  • LED control (port 40007)
  • Device info query

Note on Altitude

The 120m CE altitude limit is enforced by the DJI Fly app via a C0 class runtime flag. DUML parameter writes set the flight controller values, but the DJI Fly app overrides them. There is no known way to bypass this without modifying the DJI Fly app or flashing patched firmware.