Skip to content

Flashing firmware via SD card

mefistotelis edited this page Mar 9, 2021 · 26 revisions

Table of Contents

Overview
Flashing the drone
Flashing the remote controller

Overview

A commonly used way of upgrading DJI products, especially older ones, is by inserting SD-card with the new firmware. This page will explain the procedure.

Flashing the drone

While using the SD-card is the simplest way to flash a new firmware, it is usable mostly in cases where the drone works properly before update. If the drone cannot properly communicate with some of its modules, they will not be affected by the update. This means if a module stopped working after an update, further updates will not affect it in any way (it is still possible that the module works properly, just using its older firmware - in that case a downgrade of the whole drone could bring it back to life, by downgrading all other modules to the version which can communicate with the problematic module).

The flashing methods are as follows.

By official package in camera

The official way of flashing the firmware is by inserting an SD-card with firmware package file into the drone camera. The camera will extract modules from the package and distribute them to proper target components. It requires the firmware in bin form to exist in root directory of the SD-card.

Requirements checklist

In order for the firmware to be accepted:

  • it cannot be compressed on the SD-card
  • no newer firmware should exist on the card
  • the firmware must have original file name, specific to the product
  • the firmware must match the product being updated
  • the new firmware needs to be newer than current, or current needs to allow rollback to the target version
  • if a proper FW_DEBUG file (ie. P3X_FW_DEBUG for P3X) exists in the root directory of SD-card, the version checking rules above does not apply

Using FW_DEBUG file

If the SD-card contains a file named <PTF>_FW_DEBUG, where <PTF> is a short code name of the drone, then firmware package file on SD-card will be used to update the drone even if its version is lower or equal the current version. Any checks whether downgrade is allowed are skipped, and firmware modules are flashed to appropriate components.

Content of the FW_DEBUG file does not matter, only its name is relevant. Platform code names include P3C, P3S, P3X for Phantom 3 variants, and WM610, WM610_FC550, WM610_FC550R for Inspire with various cameras.

Be careful while using this file, and remember to remove it just after use.

Log file

During the update, log files will be created and stored internally. After the upgrade, two logs will be copied to the SD-card. The more verbose log will be in a MISC/LOG folder which has the hidden attribute set. It is best to check that log for a result information.

By firmware module in camera

The camera can also upgrade specific modules of the drone if properly named files are found on the SD-card. The firmware module file needs have 1st encryption level removed - the one which comes with xv4 container file. Some modules have only one encryption level and thus will be unencrypted, others have multiple levels, so the flashed data will still be encrypted.

When trying to flash an incorrectly encrypted or just invalid firmware module, different chips will react in different ways. For example STM32 uCs will typically accept the new binary, and this will cause the updated chip to crash during startup; the only way to bring it back to life will be to hook to it directly and flash it using a hardware programmer. But some more sophisticated chips (ie. Ambarella) will verify the module and refuse to flash it.

After successful upgrade, firmware file will be renamed by adding _updated at end of file name, before extension.

Old Phantom 3 and Inspire 1 firmware module names

If the current firmware in the camera is old enough, file names from the following table are used for each module.

module file name
m0100 FC300XFw.bin in P3X, FC300SFw.bin in P3S, FC300CFw.bin in P3C, FC350Fw.bin in WM610
m0101 CAMLDRFw.bin
m0102 CAMBSTFw.bin
m0104 CAMBCPUFw.bin
m0105 CAMLCPUFw.bin
m0306 MCAPPFw.bin
m0305 MCLDRFw.bin
m0400 GIMBALFw.bin
m0500 CENTERFw.bin
m0700 WIFIFw.bin
m0800 DM368Fw.bin
m0900 1765Fw.bin
m1100 BATTERYFw.bin
m1101 BATTERY2Fw.bin
m1200 ESCFw.bin
m1201 ESCFw_updated.bin
m1202 ESCFw_updated_updated.bin
m1203 ESCFw_updated_updated_updated.bin
m1500 68013Fw.bin
m1700 MVOM4Fw.bin
m1701 MVOM0Fw.bin
m1900 FPGAFw.bin
m3002 TEST3Fw.bin
m3003 TEST4Fw.bin
m3004 TEST5Fw.bin
m3005 TEST6Fw.bin
m3006 TEST7Fw.bin
m3007 TEST8Fw.bin
m3100 TEST9Fw.bin
m3101 TEST10Fw.bin
m3102 TEST11Fw.bin
m3103 TEST12Fw.bin

The following current firmware versions qualify as the old firmware:

  • P3C firmware lower than P3C_FW_V01.00.0020
  • P3S firmware lower than P3S_FW_V01.04.0010
  • P3X firmware lower than P3X_FW_V01.05.0030
  • WM610 firmware lower than WM610_FW_V01.04.00.10

Updated Phantom 3 and Inspire 1 firmware module names

If the camera firmware version is greater or equal to the versions above, the following names apply.

module P3X/P3S/P3C file name WM610 file name
m0100 PFC300XFw3.bin in P3X, PFC300SFw3.bin in P3S, PFC300CFw3.bin in P3C INFC350Fw1.bin
m0101 PCAMLDRFw3.bin INCAMLDRFw1.bin
m0102 PCAMBSTFw3.bin INCAMBSTFw1.bin
m0104 PCAMBCPUFw3.bin INCAMBCPUFw1.bin
m0105 PCAMLCPUFw3.bin INCAMLCPUFw1.bin
m0306 PMCAPPFw3.bin INMCAPPFw1.bin
m0305 PMCLDRFw3.bin INMCLDRFw1.bin
m0400 PGIMBALFw3.bin INGIMBALFw1.bin
m0500 PCENTERFw3.bin INCENTERFw1.bin
m0700 PWIFIFw3.bin INWIFIFw1.bin
m0800 PDM368Fw3.bin INDM368Fw1.bin
m0900 P1765Fw3.bin IN1765Fw1.bin
m1100 PBATTERYFw3.bin INBATTERYFw1.bin
m1101 PBATTERY2Fw3.bin n/a
m1200 PESC0Fw3.bin INESC0Fw1.bin
m1201 PESC1Fw3.bin INESC1Fw1.bin
m1202 PESC2Fw3.bin INESC2Fw1.bin
m1203 PESC3Fw3.bin INESC3Fw1.bin
m1500 P68013Fw3.bin IN68013Fw.bin
m1700 PMVOM4Fw3.bin INMVOM4Fw1.bin
m1701 PMVOM0Fw3.bin INMVOMOFw1.bin
m1900 PFPGAFw3.bin INFPGAFw1.bin
m3002 PTEST3Fw3.bin INTEST3Fw1.bin
m3003 PTEST4Fw3.bin INTEST4Fw1.bin
m3004 PTEST5Fw3.bin INTEST5Fw1.bin
m3005 PTEST6Fw3.bin INTEST6Fw1.bin
m3006 PTEST7Fw3.bin INTEST7Fw1.bin
m3007 PTEST8Fw3.bin INTEST8Fw1.bin
m3100 PTEST9Fw3.bin INTEST9Fw1.bin
m3101 PTEST10Fw3.bin INTEST10Fw1.bin
m3102 PTEST11Fw3.bin INTEST11Fw1.bin
m3103 PTEST12Fw3.bin INTEST12Fw1.bin

Log file for AC single module update

During the update, log files will be created and stored internally. After the upgrade, log files will be copied to SD-card, similar to the method with package.

Flashing the remote controller

It is also possible to flash RC firmware by inserting card reader to the USB slot at back of it. The RC firmware is usually a different package, separate to the drone firmware file.

The flashing methods are as follows.

Flashing RC by official package through mobile app

The official way of flashing the firmware is by selecting upgrade (or downgrade) in the mobile app. This is outside the scope of this page though.

Flashing RC by official package on USB stick

To upgrade the firmware this way, place it into any USB Card Reader or USB Thumb Drive. Insert the drive into full sized USB port of your RC. The processor which controls USB port in your model, will extract modules from the package and distribute them to proper target components. It requires the firmware in bin form to exist in root directory of the SD-card or Thumb Drive.

This method is supported by most platforms which have full sized USB on the RC. That includes GL300a and GL658a Remote Controllers.

GL300 remote controller

For Phantom 3 and its GL300 remote controller, there are some misconceptions regarding this method, because the required firmware file changed at some point, and RCs other than GL300a don't support USB upgrade at all.

If the current version of GL300a FW is lower than V01.03.0020, then the same firmware file as used for the drone should be used to upgrade RC. The RC will search for both P3X_FW_V??.??.????.bin and P3S_FW_V??.??.????.bin in the root folder of USB drive. But if current firmware is at V01.03.0020 or higher, then a separate firmware update package - C1_FW_V??.??.????.bin - will be required to upgrade it. From that current firmware, it will also be possible to upgrade via the mobile app.

Place the firmware on an USB thumb drive and connect it to Interface Board of your GL300. The DaVinci media processor on Interface Board is the component which will control the upgrade process on that platform.

Procedure details for RC

The details are basically the same as for upgrading the drone. See Requirements checklist and following chapters in the drone upgrade section.

Using FW_DEBUG file for RC

The controllers also react on that file. In case of GL300a and firmware below V01.03.0020, the <PTF> name is P3; for newer firmwares, the name is C1.

Log file for RC

During the update, log file will be created and stored in internal filesystem of the module which controls update. At end, it will be copied to root folder of the USB Thumb Drive. It will be named <PTF>_FW_RESULT_GS.txt, <PTF>_FW_GS_LOG.txt or <PTF>_FW_LOG.txt. On Ph3, the <PTF> is either P3 or C1, as explained above.

Flashing RC by firmware module on USB stick

The DaVinci media processor can also upgrade specific modules of the RC if properly named files are found on the USB Thumb Drive. The firmware module file needs to be unencrypted - flashing an encrypted firmware this way will cause the updated device to crash during startup, and the only way to bring it back to life will be to hook to it directly and flash it using a hardware programmer.

Old GL3xx firmware module names

If the current firmware in the RC is old enough, file names from the following table are used for each module.

module file name
m1600 or m1601 gs_68013.bix
m2000, m2001, m2002 or m2003 gs_fpga.bin
m1400, m1401 gs_ofdm.bin
m1300 usbupdate.tar.gz

The following current firmware versions qualify as the old firmware:

  • C1 firmware lower than C1_FW_V01.06.0000

TODO exact version when the change happens was not checked carefully

Updated GL3xx firmware module names

If the RC firmware version is greater or equal to the versions above, the following names apply.

module file name
m1600 or m1601 gs_68013.bix
m2000, m2001, m2002 or m2003 gs_fpga.bin
m1400, m1401 gs_1765.bin
m1300 usbupdate.tar.gz

Log file for RC single module update

During the update, log files will be created and stored internally. After the upgrade, log files will be copied to USB Thumb Drive, similar to the method with package.

Clone this wiki locally