This is an old revision of the document!
orig content here: https://github.com/o-gs/DJI_FC_Patcher credit to the og's and all contributors
This guide explains how to use the FC patcher tool for Windows. The tool / process allows you to modify flight controller parameters on the the LATEST DJI firmware for the DJI Mavic Pro and Platinum, Phantom 4/Pro/Adv, Inspire 2 and Spark. This does NOT work on the Mavic 2.
Insert disclaimer here ..
Make sure to review this GitHub with more info: https://github.com/o-gs/dji-firmware-tools
Put ALL of the files and the firmware bin file in same folder, such as C:\fcpatcher. This how to will refer to c:\fcpatcher folder. Also Unzip the zipped files and put their respective folder under C:\fcpatcher
Install any/all apps you may be missing. This includes python 2 and 3, Android SDK, Github (or other app), winrar and pcrypto. Make sure to SET PATH for Python. If you don't know what this means, google it.
Get the tool set noted above all setup, downloaded and installed. Without, this doc is worthless.
cd\fcpatcher <Enter> image.py wm220.cfg.sig move wm220.cfg_0000.bin wm220.cfg.ori
Now we will unsig the 306 file, which contains the flight controller parameters. You will need to power on your aircraft and connect to PC via USB. Once you have ..
adb shell mount -o remount,rw /vendor mkdir /vendor/bin exit
adb push wm220_0306_v03.02.44.07_20171116.pro.fw.sig /vendor/bin/ ^^^ (replace the filename if different ac)
* Now lets go back to a shell, type
adb shell cd /vendor/bin/ /sbin/dji_verify -n 0306 -o 0306.unsig wm220_0306_v03.02.44.07_20171116.pro.fw.sig ^^^ (replace the filename if different ac) exit
adb pull /vendor/bin/0306.unsig
adb shell cd /vendor/bin/ rm 0306.unsig rm *.fw.sig cd / sync mount -o remount,ro /vendor exit
You can now power off your aircraft.
dji_mvfc_fwpak.py dec -i 0306.unsig move 0306.decrypted.bin wm220_0306_v03.02.44.07_20171116.pro.fw_0306.decrypted.bin ^^ (replace the filename if different ac)
dji_flyc_param_ed.py -vv -x -b 0x420000 -m wm220_0306_v03.02.44.07_20171116.pro.fw_0306.decrypted.bin ^ (replace the filename if different ac)
This will generate a flyc_param_infos file with all the flight parameters that you are able to modify.
first draft of parameter list
Parameter Name | Value |
---|---|
g_config.airport_limit_cfg.cfg_disable_airport_fly_limit | 1 |
g_config.airport_limit_cfg.cfg_limit_data | 20250910 |
g_config.flying_limit.driver_license_limit_enable | 0 |
g_config.flying_limit.viechle_license_limit_enable | 0 |
g_config.flying_limit.height_limit_enabled | 2 |
g_config.airport_limit_cfg.cfg_search_radius | 1 |
g_config.airport_limit_cfg.cfg_enable[FLY_LIMIT_TYPE_AIRPORT] | 0 |
g_config.airport_limit_cfg.cfg_enable[FLY_LIMIT_TYPE_SPECIAL] | 0 |
g_config.flying_limit.limit_height_rel | 10000 |
g_config.flying_limit.limit_height_abs | 10000 |
g_config.flying_limit.limit_height_abs_without_gps | 10000 |
g_config.mode_normal_cfg.tilt_atti_range | 33 |
g_config.mode_normal_cfg.vert_vel_up | 7 |
g_config.mode_normal_cfg.vert_vel_down | -6 |
g_config.mode_normal_cfg.vert_acc_up | 7 |
g_config.mode_normal_cfg.vert_acc_down | -6 |
g_config.mode_sport_cfg.tilt_atti_range | 50 |
g_config.mode_sport_cfg.vert_vel_up | 8 |
g_config.mode_sport_cfg.vert_vel_down | -8 |
g_config.mode_sport_cfg.vert_acc_up | 8 |
g_config.mode_sport_cfg.vert_acc_down | -8 |
g_config.fw_cfg.max_speed | 20 |
g_config.avoid_cfg.avoid_atti_range | 23 |
g_config.control.avoid_atti_range | 50 |
bat_level_2_action | 0 |
bat_cap_v2_prot_type | 0 |
g_config.bat_config.level2_smart_battert_land | 0 |
set PATH_TO_TOOLS=C:\fcpatcher
sh FC_patch_sequence_for_dummy_verify.sh Mavic 03.02.44.08
Note: This step requires some tool to enable running sh scripts on windows. I installed Github with bash and it had the SH included to allow running the script.
The aa.bb.cc.dd string after Spark or Mavic arg is the version of the FC module you are building. It should be different from the one that is currently installed on the bird, so basically increase the number each time you build a new version…
This should produce a few (uncleaned) tmp files, and a .bin file which is the one you will be able to flash the aircraft using dumldore
adb shell mount -o remount,rw /vendor exit adb push dummy_verify.sh /vendor/bin/ adb shell cd /vendor/bin/ chown root:root dummy_verify.sh chmod 755 dummy_verify.sh cp /system/bin/dji_verify /vendor/bin/original_dji_verify_copy sync cd / mount -o remount,ro /vendor
adb shell mount -o bind /vendor/bin/dummy_verify.sh /system/bin/dji_verify
Open dumldore v3, load firmware and flash
The displayed percentage are fucked and it will go over 100% at some point, this is not an issue. You can monitor it from adb at the same time with : busybox tail -f /data/dji/log/upgrade00.log After a few seconds (10 ? 20 ?) you should hear the ESC beeping while the FC is being flashed (on Spark only) Then the bird will reboot (disconnecting you from adb if you were monitoring) 30-60 s after reboot you are good to turn the bird off, even if DUMLDore does not acknowledge a finished flash sequence (especially on Spark) The whole sequence is pretty short (less than 5 minutes)
Thats it your done.
For steps to get Galileo working see github