This is an old revision of the document!
This guide explains how to modify Phantom 3 and Inspire 1 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 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_xv4_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_xv4_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 firmware module.
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
This will recompile the modified firmware module, which will allow it to be installed onto the aircraft. You can now update the aircraft with this firmware file.
To install on the aircraft:
1. Rename the modified file P3X_FW_V01.07.0060_m0306.bin
p3 = PMCAPPFw3.bin I1 = INMCAPPFw1.bin
2. Copy the file to your SD card. Put SD card into the aircraft. 3. Power on the aircraft. Update will start in about 30 seconds. You will hear a distinct noise during the update process, which will change when done. It should take 3-5 minutes.
If the update does not start, please turn off aircraft. Press and hold the bind button, and turn back on. Hold this button for 20-30 seconds and the update will start and will make a beeping noise, then you can let go and let the update finish. 4. When update is done, power off the aicraft. Remove the SD card from the camera and back into the computer 5. Remove/ Delete the “PMCAPPFw3.bin_updated” or “INMCAPPFw1.bin_updated” file from the SD card Note: If the file is “PMCAPPFw3.bin_damaged” or “INMCAPPFw1.bin_damaged” the update did not complete, retry it. 6. Put Sd card back in the camera All done! On your next startup, the modifications will persist on the aircraft. They will remain until you reflash the stock firmware. Note: If your firmware is version 01.04 or earlier, you may need to rename the file MCAPPFw.bin instead. ==== 4. Install the modded file on your Phantom ==== * To install the file on your Phantom, copy the PMCAPPFw3.bin file to a formatted micro-SD card * Insert SD card into aircraft, power on. If the firmware update does not start, you can force it by holding the button on the side of the VPS. * The file will be flashed and the edited parameters will be applied. * The flashing progress takes about 5-10 minutes. * After flashing is complete the file on SD card “ PMCAPPFw3.bin ” will be automatically renamed to “ PMCAPPFw3_updated.bin”. Delete this fie, then fly your aircraft * NOTE: The changes work in the simulator as well, test there first! ====== Important Parameters ====== 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. ====== Important Parameter Descriptions ====== I removed the g_config from the prefix to make the table fit better :) ^ Parameter Name ^ Description^ ^ advanced_function.height_limit_enabled_0|Removes height limit| ^ control.horiz_vel_atti_range_0|GPS Tilt angle makes faster| ^ control.atti_range_0|ATTI Max tilt angle| ^ control.atti_limit_0 | ATTI tilt angle| ^ control.vert_up_vel_0|Ascent Velocity Rate (Up)| ^ control.vert_down_vel_0|Descent Velocity Rate (Down)| ^ airport_limit_cfg.cfg_search_radius_0 | NFZ search radius, lower is less enforcement| ^ airport_limit_cfg.cfg_disable_airport_fly_limit_0|Disable NFZ| ^ airport_limit_cfg.cfg_limit_data_0 | NFZ map data value| ^ airport_limit_cfg.cfg_enable[FLY_LIMIT_TYPE_SPECIAL]_0 | NFZ Type 2 Removal (GeoZone)| ^ flying_limit.auto_landing_enabled_0|No landing at 65k feet from HP| ^ voltage.level_1_protect_type_0|Battery level 1 function (warn, led)| ^ voltage.level_2_protect_type_0|Battery level 1 function (warn, led, land)| ^ voltage2.level_1_voltage_0|Battery level 1 %| ^ voltage2.level_1_function_0|Battery level 1 function (warn, land)| ^ voltage2.level_2_voltage_0|Battery level 2 %| ^ voltage2.level_2_function_0|Battery level 1 function (warn, land)| ^ voltage2.user_set_smart_bat_0|Battery type (DJI vs non-DJI)| ^ voltage2.level2_smart_battert_land_0|SmartRTH battery landing %| ====== Parameter Values to Change ====== I removed the g_config from the prefix to make the table fit better :) Last edit: digdat0 11/06/2018. use the tilt and vert up/down as guidelines. Height Limit Removal ^ 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 | GPS Mode Speed Change ^ Parameter Name ^ Stock minValue ^ Stock MaxValue ^ Stock defaultValue ^ New MinValue ^ new Maxvalue ^ New defaultValue ^ ^ control.horiz_vel_atti_range_0 | 10 | 60 | 23 | 30 | 60 | 30 | ATTI Mode Speed Change ^ Parameter Name ^ Stock minValue ^ Stock MaxValue ^ Stock defaultValue ^ New MinValue ^ new Maxvalue ^ New defaultValue ^ ^ control.atti_limit_0 | 10 | 60 | 30 | 50 | 60 | 50 | ^ control.atti_range_0 | 10 | 60 | 30 | 50 | 60 | 50 | Vertical Ascent/Descent ^ Parameter Name ^ Stock minValue ^ Stock MaxValue ^ Stock defaultValue ^ New MinValue ^ new Maxvalue ^ New defaultValue ^ ^ control.vert_up_vel_0 | 1 | 10 | 5 | 10 | 12 | 10 | ^ control.vert_down_vel_0 | 1 | 10 | 3 | 8 | 10 | 8 | NoFlyZone Removal ^ Parameter Name ^ Stock minValue ^ Stock MaxValue ^ Stock defaultValue ^ New MinValue ^ new Maxvalue ^ New defaultValue ^ ^ 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 | 20250910 | 20250910 | 20250910 | ^ airport_limit_cfg.cfg_search_radius_0 | 65535 | 50000 | 0 | 1 | 1 | 1 | ^ airport_limit_cfg.cfg_enable[FLY_LIMIT_TYPE_SPECIAL]_0 | 0 | 1 | 0 | 1 | 1 | 1 | Disable distance limit landing ^ Parameter Name ^ Stock minValue ^ Stock MaxValue ^ Stock defaultValue ^ New MinValue ^ new Maxvalue ^ New defaultValue ^ ^ flying_limit.auto_landing_enabled_0 | 0 | 1 | 0 | 1 | 1 | 1 | Disable smart battery functions / auto landings at low battery and high altitude**
Parameter Name | Stock minValue | Stock MaxValue | Stock defaultValue | New MinValue | new Maxvalue | New defaultValue |
---|---|---|---|---|---|---|
voltage.level_1_protect_type_0 | 0 | 1 | 0 | 0 | 0 | 0 |
voltage.level_2_protect_type_0 | 0 | 2 | 2 | 0 | 0 | 0 |
voltage2.level_1_voltage_0 | 10 | 100 | 30 | 0 | 0 | 0 |
voltage2.level_1_function_0 | 0 | 10 | 0 | 0 | 0 | 0 |
voltage2.level_2_voltage_0 | 10 | 100 | 10 | 0 | 0 | 0 |
voltage2.level_2_function_0 | 0 | 10 | 1 | 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 |