Drone Firmware Update Stuck or Freezing (0%, 50%, or 99% Troubleshooting)

A firmware update that halts indefinitely at specific numbers—most commonly 0%, 50%, or 99%—indicates a failure during a distinct phase of the installation lifecycle. The installation utility is waiting for a hardware handshake, download confirmation, or cryptographic response that is not returning.

Quick Fix

If the progress indicator has not moved for at least 25 minutes and there is no LED activity on the drone, do not immediately rip out the battery. Check your mobile device’s screen lock and connection status first. If entirely frozen, power-cycle the controller and drone, clean your cache, and restart.


Understanding the “Magic Numbers”

Firmware installers do not report linear progress based on raw time. Instead, specific percentages correspond directly to distinct technical milestones:

[ 0% - 15% ]  =======> Cloud Handshake, Network Download & Image Validation
[ 30% - 60% ] =======> Inter-Module Flashing (Core Board, ESC, Gimbal, Battery)
[ 75% - 90% ] =======> Peripheral Synchronization (Sensors, Vision, Transceiver)
[ 95% - 99% ] =======> Subsystem Handshakes, Validation Checksums & Auto-Reboot

Knowing exactly where the progress stopped tells you which component is causing the hang.


1. Stuck at 0% to 15% (Download & Handshake Failure)

When an update freezes before reaching 20%, code has not yet been written to the aircraft.

What is Happening

The mobile app or desktop updater cannot complete the file transfer, parse the local cache, or establish a secure handshake with the aircraft’s bootloader.

Root Causes

  • Device Storage Full: Your phone, tablet, or PC lacks the temporary scratch space needed to decompress the update.
  • Corrupt Download Cache: The installer is stuck attempting to unpack a broken file downloaded previously.
  • Wi-Fi Handshake Conflict: The mobile device is attempting to switch between mobile data (internet) and the drone’s ad-hoc Wi-Fi network, causing the data stream to stall.

Diagnostic Actions

  1. Close the control app completely (swipe it away from your device’s recent-apps switcher).
  2. Clear the application cache via the internal settings menu of the app (e.g., DJI Fly, Autel Explorer).
  3. Free up at least 5 GB of local storage on your device.
  4. If using a desktop application such as DJI Assistant, follow the recovery steps in DJI Assistant 2 Firmware Update Failed or Stuck.

2. Stuck at 45% to 60% (Hardware Flashing & ESC Stalls)

Freezes in the middle of the progress bar are the most concerning because active flashing is underway.

What is Happening

The updater has successfully delivered the image to the drone and is currently writing code to the internal hardware modules. It is sequentially flashing the flight controller, the electronic speed controllers (ESCs), the battery management system (BMS), and the gimbal processor.

A freeze here usually points to an unresponsive secondary board—most commonly an individual motor controller or battery microcontroller refusing an erase/write command.

Root Causes

  • Battery Low Voltage: The drone throttled CPU power or cut off write cycles to preserve core battery integrity.
  • Overheating Shutdown: Drones lack active propeller cooling while sitting stationary on a workbench. The processor may thermal-throttle or enter standby mid-flash.
  • ESC Communication Timeout: An ESC failed to report its write confirmation back to the main processor. If this results in an error code later, refer to DJI Error Code 30226 ESC Communication Error.

Diagnostic Actions

  1. Wait 25 Minutes: Drones often reboot their internal boards during this stage. The progress indicator may freeze at 50% or 55% while the drone appears dead, followed by the aircraft restarting with loud chimes and resuming progress.
  2. Provide Active Cooling: Point a standard household desk fan directly at the aircraft body to prevent thermal safety cutoffs while the processors are working.
  3. If You Must Abort: If the drone has remained completely silent and stationary at the exact same percentage for over 30 minutes, turn off the drone using its power button. If the button is unresponsive, remove the battery. Review DJI Firmware Update Interrupted Troubleshooting before attempting a second flash to avoid bricking your unit.

3. Stuck at 90% to 99% (Post-Install Handshake & Peripheral Sync)

A freeze at the finish line means the software has been flashed, but the updater is waiting for confirmation from all connected peripherals.

What is Happening

The main flight system has been updated, and the software is verifying that all connected devices are speaking the same version protocol.

Root Causes

  • Smart Battery Firmware Mismatch: The core aircraft is updated, but the currently inserted intelligent flight battery has older firmware that must be updated separately. If the system flags this, check Battery Firmware Mismatch: Why Your Drone Rejects One Battery but Not Others.
  • Remote Controller Desynchronization: The app cannot re-establish its control link with the aircraft after the drone performed its automatic post-update reboot.
  • Vision / Gimbal Calibration Check Failure: The newly flashed firmware runs a mandatory post-boot diagnostic on internal sensors. If an optical sensor or gimbal axis fails to initialize within a designated timeframe, the installation utility waits indefinitely for the ready state.

Diagnostic Actions

  1. Check Aircraft LEDs: If the drone’s status LEDs are pulsing green, the aircraft has finished its internal update and has successfully booted, even if the app UI is still stuck at 99%.
  2. Power-Cycle Only the Controller: If the drone is idling happily (normal green status LEDs, gimbal stabilized and level), close the mobile app and turn off the remote controller. Turn the controller back on and relaunch the app. In most cases, the app will connect and show “Firmware Up to Date.”
  3. Inspect the Gimbal: Ensure the gimbal clamp was removed prior to the update. A clamped gimbal cannot complete its boot initialization check, preventing the drone from reporting a 100% completed status to the updater.

Diagnostic Reference Chart

Use this quick-reference table to match your freeze point to the correct intervention:

Freeze RangeSuspected PhaseImmediate ActionSecondary Action
0% – 15%Network / Cache DownloadRestart App; check internet connection.Clear app cache; free phone storage space.
45% – 60%Module Write / ESC FlashingDo not touch. Wait at least 25 minutes.Aim a desk fan at the drone to prevent thermal aborts.
95% – 99%Post-Flash Verification / RebootObserve drone LEDs; check for a normal idle state.Restart the app/controller to refresh the UI handshake.

Hard Stops & Recovery Safeguards

  • Never yank a battery during an active, noisy flash (motors beeping, LEDs flickering rapidly) unless the unit has sat completely unresponsive for at least 30 minutes.
  • Never attempt an update with batteries below 50% charge. A system shutdown during a bootloader write operation will lock the memory partition and cause a total system brick.
  • If, after a forced reboot, your aircraft powers on with solid red indicators, refuses to bind, or remains stuck in an unrecoverable update loop, refer directly to Drone Bricked After Firmware Update (Not Turning On) to initiate bootloader recovery procedures.