This is an old revision of the document!
This guide explains how to modify Phantom 3 Adv and Pro flight controller parameters running ANY firmware version.
NOTE: THIS IS FOR PRO USERS, YOU HAVE TO KNOW WHAT YOU ARE DOING! I'M NOT RESPONSIBLE FOR ANYTHING.
These instructions apply to any firmware version as of January 2018; the keys were found, we are good to go on all versions.
The following how to video shows the process end to end. Watch this before doing any of this!
Make sure to review this GitHub with more info: https://github.com/o-gs/dji-firmware-tools
Put the to PY files and the firmware bin file in same folder, such as C:\P3
Install Python 3, reboot if required. Make sure to SET PATH for Python. If you don't know what this means, google it.
Detailed Usage instructions for the two Python Tools, dji_xv4_fwcon and dji_flyc_param_ed
Start->Run->cmd
cd\p3 PRESS ENTER
dji_fwcon.py -vv -x -p P3X_FW_V01.07.0060.bin PRESS ENTER
ModuleNotFoundError: No module named 'Crypto'
python -m pip install pycryptodome PRESS ENTER
dji_fwcon.py -vv -x -p P3X_FW_V01.07.0060.bin PRESS ENTER
dji_flyc_param_ed.py -vv -x -m P3X_FW_V01.07.0060_m0306.bin PRESS ENTER
This will extract the firmware and the flight controller module. A new file “ flyc_param_infos ” will be created and we can edit it.
Example g_config.advanced_function.height_limit_enabled_0 Change the MinValue and MaxValue = 2
dji_flyc_param_ed.py -vv -u -m P3X_FW_V01.07.0060_m0306.bin
These are the important parameters you may want to modify to change the flight characteristics. These may change a tad from p3s to p3a to p3p to Inpsire. The proposed below are from p3a 1.7.
Parameter Name | Description |
---|---|
g_config.advanced_function.height_limit_enabled_0 | Removes height limit |
g_config.flying_limit.max_height_0 | Changes GO to higher max heght |
g_config.control.horiz_vel_atti_range_0 | Tilt angle makes faster |
g_config.control.atti_range_0 | Max tilt angle |
g_config.control.vert_up_vel_0 | Ascent Velocity Rate (Up) |
g_config.control.vert_down_vel_0 | Descent Velocity Rate (Down) |
g_config.control.vert_vel_gain_0 | Ascent Velocity (Up) GAIN |
g_config.control.vert_acc_gain_0 | Descent Velocity (Down) GAIN |
g_config.airport_limit_cfg.cfg_disable_airport_fly_limit_0 | Disable NFZ |
g_config.flying_limit.auto_landing_enabled_0 | No landing at 65k feet from HP |
g_config.voltage2.level_1_function_0 | Battery level 1 function (warn, land) |
g_config.voltage2.level_1_voltage_0 | Battery level 1 % |
g_config.voltage.level_1_protect_type_0 | Battery level 1 function (warn, led) |
g_config.voltage2.user_set_smart_bat_0 | Battery type (DJI vs non-DJI) |
g_config.voltage2.level2_smart_battert_land_0 | SmartRTH battery landing % |
g_config.voltage2.level_2_function_0 | Battery level 1 function (warn, land) |
g_config.voltage2.level_2_voltage_0 | Battery level 2 % |
g_config.voltage.level_2_protect_type_0 | Battery level 1 function (warn, led, land) |
I removed the g_config from the prefix to make the table fit better :)
Last edit: digdat0 025/05/2018. use the tilt and vert up/down as guidelines.
Parameter Name | Stock minValue | Stock MaxValue | Stock defaultValue | New MinValue | new Maxvalue | New defaultValue |
---|---|---|---|---|---|---|
advanced_function.height_limit_enabled_0 | 1 | 2 | 1 | 2 | 2 | 2 |
flying_limit.max_height_0 | 20 | 500 | 120 | 10000 | 10000 | 10000 |
control.horiz_vel_atti_range_0 | 10 | 60 | 23 | 35 | 60 | 35 |
control.atti_limit_0 | 10 | 60 | 30 | 50 | 60 | 50 |
control.atti_range_0 | 10 | 60 | 30 | 35 | 60 | 35 |
control.vert_up_vel_0 | 1 | 10 | 5 | 10 | 12 | 10 |
control.vert_down_vel_0 | 1 | 10 | 3 | 8 | 10 | 8 |
airport_limit_cfg.cfg_disable_airport_fly_limit_0 | 0 | 255 | 0 | 1 | 1 | 1 |
airport_limit_cfg.cfg_limit_data_0 | 0 | 4294967295 | 20150910 | 10 | 20250910 | 20250910 |
airport_limit_cfg.cfg_search_radius_0 | 65535 | 50000 | 0 | 1 | 1 | 1 |
g_config.airport_limit_cfg.cfg_enable[FLY_LIMIT_TYPE_SPECIAL]_0 | 0 | 1 | 0 | 1 | 1 | 1 |
flying_limit.auto_landing_enabled_0 | 0 | 1 | 0 | 1 | 1 | 1 |
voltage2.level_1_function_0 | 0 | 10 | 0 | 0 | 0 | 0 |
voltage2.level_1_voltage_0 | 10 | 100 | 30 | 0 | 0 | 0 |
voltage.level_1_protect_type_0 | 0 | 1 | 0 | 0 | 0 | 0 |
voltage2.user_set_smart_bat_0 | 0 | 10 | 2 | 0 | 0 | 0 |
voltage2.level2_smart_battert_land_0 | 0 | 100 | 10 | 0 | 0 | 0 |
voltage2.level_2_function_0 | 0 | 10 | 1 | 0 | 0 | 0 |
voltage2.level_2_voltage_0 | 10 | 100 | 10 | 0 | 0 | 0 |
voltage.level_2_protect_type_0 | 0 | 2 | 2 | 0 | 0 | 0 |
voltage2.level2_smart_battert_land_0 | 0 | 100 | 10 | 0 | 0 | 0 |