-
Notifications
You must be signed in to change notification settings - Fork 428
Flashing firmware via SD card
Overview
Flashing the drone
Flashing the remote controller
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.
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.
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.
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
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.
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.
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.
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
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 |
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.
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.
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.
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.
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.
The details are basically the same as for upgrading the drone. See Requirements checklist and following chapters in the drone upgrade section.
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
.
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.
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.
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
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 |
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.
This page is created by drone enthusiasts for drone enthusiasts.
If you see a mistake, or you know more about specific subject, or you see an area for improvement for the wiki - create an issue in this project and attach your patch (or describe the change you propose).