A free, hardened, and open-source Android app that unlocks FCC mode (5.8 GHz & 2.4 GHz), sends experimental 4G activation frames, and queries device telemetry on DJI smart controllers with a screen (DJI RC, RC 2, RC Pro, RC Plus).
ℹ️ Fork & Upstream Attribution:
This repository is a custom fork derived from and combining the discoveries of doesthings/FreeFCC and danusha2345/SkylabFCCfree, deeply re-engineered for stability and performance.🔹 Foundation from
doesthings/FreeFCC:
- Core DUML framing (
0x55with CRC-8/CRC-16) and localhost TCP socket routing (40009/40007).- Event-driven Auto FCC via Android Accessibility on DJI Fly Home Point announcements.
- Auxiliary LED (
03:F8) and GPS master enable (0xC5429582) parameter controls.- Local Wi-Fi LAN diagnostic HTTP bridge.
🔹 Integration from
danusha2345/SkylabFCCfree:
- Radio region commit (
06:72) and Wi-Fi channel group mappings (07:30,07:18,07:19) required for 5.8 GHz band-switching.- Targeted 4G service mode switch frame (
0x51:0x1A) over Unix domain socket (/duss/mb/0x205).- Low-overhead 10-second send-only periodic keepalive approach.
🚀 Exclusive Hardening & Enhancements in
NobodySan97/FreeFCC-Custom:
- In-Flight Floating Overlay Widget: Draggable, always-on-top pill that floats over DJI Fly, showing real-time FCC status and enabling instant one-tap FCC re-triggers or mode switching during flight without leaving the camera feed.
- Complete CleanDesigner UI Rework: Modern Jetpack Compose interface with Glassmorphism, Material You theming, and a Side Navigation Rail designed specifically for landscape DJI controller screens (DJI RC, RC 2, RC Pro, RC Plus) with 52dp thumb/glove-friendly touch targets.
- 5.8 GHz & 2.4 GHz Dual-Band Sblocco: Complete DUML sequence with isolated country write sessions (
07:30) ensuring reliable 5.8 GHz FCC engagement.- Ultra-Low-Overhead 10s Periodic Auto FCC: Streamlined send-only keepalive eliminating continuous polling, drastically reducing CPU, network, and battery overhead during flight.
- Multi-Tier Concurrency & Thread-Safety: Atomic
HardwareLockandDumlPortSessionLockarchitecture across the UI, floating button widget, and background services, eliminating socket interleaving and CRC errors.- Optimized Quad-Core Performance: Throttled accessibility scans with native memory handle recycling (
node.recycle()) for seamless, lag-free operation alongside DJI Fly (<2% CPU load).- Hardened Dual-CRC Telemetry & Serial Parsing: Full CRC-8 and CRC-16 validation before packet extraction to eliminate false-framing sync hazards.
- 100% Telemetry-Free Architecture: Clean, zero-tracking, zero analytics, R8-optimized binaries, and automated SHA-256 release checksum generation.
This software is provided for educational and research purposes only. Modifying radio transmission parameters may violate laws and regulations in your country or region. In most places, increasing radio power beyond what is legally permitted for your area requires authorization from the relevant regulatory authority.
You are solely responsible for ensuring that your use of this software complies with all applicable local, regional, and national laws. The author of this project accepts no liability for any damage, legal consequences, or regulatory action arising from the use of this tool.
This project is not affiliated with, endorsed by, or sponsored by DJI. Using this tool may void your warranty and DJI Care Refresh coverage.
| Feature | Description |
|---|---|
| FCC Unlock | Switches the radio from CE to FCC mode for higher power and more channels (dual-band 2.4 GHz & 5.8 GHz) |
| Auto FCC (Home Point) | Event-driven mode that re-applies FCC automatically whenever DJI Fly sets a new Home Point |
| Auto FCC (10s Periodic) | Low-overhead send-only keepalive that pushes FCC frames every 10 seconds without continuous readback |
| 4G Activation | Sends targeted 4G service mode frames to the aircraft (0x51:0x1A, experimental) |
| GPS & LED Control | Direct toggle and verification of aircraft auxiliary LEDs and master GPS parameters |
| Device Info & Telemetry | Displays detected aircraft model name/code, controller code, and factory serial number |
| In-Flight Floating Overlay | Interactive, draggable on-screen pill over DJI Fly showing real-time FCC status and one-tap re-triggering |
| In-App Auto-Updater | Automatically checks for updates and installs the latest APK directly from GitHub Releases |
| LAN Diagnostic API | Optional local Wi-Fi HTTP bridge for live logs, diagnostics, and DUML inspection |
| 100% Free & Telemetry-Free | No ads, no tracking, no paid activations, and fully open-source |
Note on altitude/distance/NFZ unlock: The 120m CE altitude limit is enforced by the DJI Fly app via a C0 class runtime flag on every connection. DUML commands alone cannot bypass this limit—it requires modifying the DJI Fly app itself or flashing patched firmware.
| Download | Link |
|---|---|
| Latest Release (APK) | GitHub Releases |
| Helper Apps Archive (zip) | freefcc.pages.dev/downloads/freefcc-helpers.zip |
No PC is required—installation is done directly on the controller via a microSD card.
-
Format the microSD card in the RC2 first: Insert the card into your controller, open Android Settings
$\rightarrow$ Storage, and format it as portable storage. -
Download files: Download the latest
FreeFCC-Custom.apkandfreefcc-helpers.zip. Extract the zip and place the APK inside the helper folder on your microSD card. -
Install system helpers: In the controller file browser, install
01_PackageInstallerand02_FileManager. - Restart controller: Hold the power button to reboot.
-
Install Launcher & App: Open
03_ATVLauncher, navigate to Files, and installFreeFCC-Custom.apk. - First Launch: Open FreeFCC Custom once to allow background permissions and status notifications.
- Power on your drone and link it to the controller.
- Open FreeFCC Custom and choose your preferred mode:
- Auto FCC — Home Point (Recommended): Automatically applies FCC upon Home Point match. Enable FreeFCC Custom Home Point Test in Accessibility Settings when prompted.
- Auto FCC — every 10 sec: Pushes FCC frames periodically in background via send-only bursts.
- Floating Action Button: Enable the on-screen overlay widget to see live FCC status and trigger one-tap re-applies directly over DJI Fly.
- Send FCC Request: One-shot manual trigger.
- Tap Open DJI Fly to launch the flight app.
- Enjoy extended range and higher transmission power with the floating status pill on screen.
In the DJI Fly app, open Settings
| FCC Mode (Active) | CE Mode (Stock) |
![]() |
![]() |
| Signal line extends far past the 1km mark | Signal line cuts off around the 1km mark |
| Drone | Controller | FCC (2.4/5.8 GHz) | 4G Modem | Status |
|---|---|---|---|---|
| DJI Mini 5 Pro | RC2 | ✅ Working | N/A | Full FCC + LED |
| DJI Mini 4 Pro | RC2 | ✅ Working | N/A | Full FCC |
| DJI Air 3 / Air 3S | RC2 | ✅ Working | N/A | Full FCC |
| DJI Mavic 3 / Mavic 4 Series | RC Pro / RC Pro 2 | ✅ Working | Experimental | Full FCC |
| DJI Neo 1 / Neo 2 | RC2 | ✅ Working | N/A | Full FCC |
| DJI Avata 2 / Avata 360 | RC2 | ✅ Working | Experimental | Full FCC + LED |
| DJI M30T / Matrice 350 | RC Plus | ✅ Working | Experimental | Full FCC |
If FreeFCC Custom helped you unlock your DJI drone's full transmission potential, consider supporting ongoing development, reverse-engineering, and hardware testing:
- License: AGPL-3.0 (See LICENSE).
- Upstream Repositories: doesthings/FreeFCC & danusha2345/SkylabFCCfree.
- DUML Protocol Reference: dji-firmware-tools.

