====== Phantom 3 and Inspire 1 Modification Overview ====== 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. ====== How to videos ====== The following how to video shows the process end to end. Watch this before doing any of this! {{youtube>e00mOOcSi18}} ====== Toolset ====== Make sure to review this GitHub with more info: https://github.com/o-gs/dji-firmware-tools - Download [[https://github.com/o-gs/dji-firmware-tools/raw/master/dji_xv4_fwcon.py|dji_xv4_fwcon.py]] - Download [[https://github.com/o-gs/dji-firmware-tools/raw/master/dji_flyc_param_ed.py|dji_flyc_param_ed.py]] - Download [[https://www.python.org/downloads|Python 3]] - Download your [[http://jogjasky.com/go-download|Firmware of choice]] 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. [[howto:P3FWTOOLUSE|Detailed Usage instructions for the two Python Tools, dji_xv4_fwcon and dji_flyc_param_ed]] ====== Detailed Steps ====== ==== 1. Extract the flight controller Module ==== * Put "dji_flyc_param_ed.py", "ddji_xv4_fwcon.py" and "P3X_FW_V01.07.0060.bin" into one folder such as C:\p3 * Open a command prompt on Windows Start->Run->cmd * Navigate to this folder C:\P3 cd\p3 PRESS ENTER * Type into cmd (Note: Replace "P3X_FW_V01.07.0060.bin" below with the fw version you are using. dji_xv4_fwcon.py -vv -x -p P3X_FW_V01.07.0060.bin PRESS ENTER * If you receive the following message: ModuleNotFoundError: No module named 'Crypto' * That means there is a module missing in the Python 3.6.x installation. * If you do not get the error skip down to "The firmware will extract..." below. * To get the needed Module open a cmd prompt as administrator. - (win 10) Take the cursor to the bottom left corner and right-click to open the WinX menu. - Select "Command Prompt (Admin)" to open an elevated command prompt. - Type into cmd python -m pip install pycryptodome PRESS ENTER * Wait for the process to finish download and installing pycryptodome module * Now repeat this step * Type into cmd dji_xv4_fwcon.py -vv -x -p P3X_FW_V01.07.0060.bin PRESS ENTER * The firmware will extract and various modules will show in that folder different modules. The important module is P3X_FW_V01.07.0060_m0306.bin * Type into cmd 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. ==== 2. Edit the flight controller Module ==== * Open the flyc_param_infos file in Notepad, Notepad++ or your favorite text editor * Locate the parameter you want to find, change the value noted in the table below. Example g_config.advanced_function.height_limit_enabled_0 Change the MinValue and MaxValue = 2 * Be careful to only edit the parameters you are familliar with! * Save the file ==== 3. Recompile the 306 flight controller module ==== * Type into cmd dji_flyc_param_ed.py -vv -u -m P3X_FW_V01.07.0060_m0306.bin * After this command runs, it will compile the parameters back into the P3X_FW_V01.07.0060_m0306.bin file. * Now, you need to rename the file before loading on the aircraft. Rename it to "PMCAPPFw3.bin" for p3 and "INMCAPPFw1.bin" for inspire 1 (no quotes). ==== 4. Install the modded file on your Phantom ==== * To install the file on your aircraft, copy the PMCAPPFw3.bin or INMCAPPFw1.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 %| ^ advanced_function.driver_license_limit_enable_0|DJI Driver License Pilot| ^ advanced_function.viechle_license_limit_enable_0|DJI Driver License Aircraft| ====== Parameter Values to Change ====== I removed the g_config from the prefix to make the table fit better :) Last edit: digdat0 07/21/201. adding license param. 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 | **Disable DJI's driver license enforcement** ^ Parameter Name ^ Stock minValue ^ Stock MaxValue ^ Stock defaultValue ^ New MinValue ^ new Maxvalue ^ New defaultValue ^ ^ advanced_function.driver_license_limit_enable_0 | 1 | 1 | 1 | 2 | 2 | 2 | ^ advanced_function.viechle_license_limit_enable_0 | 1 | 1 | 1 | 2 | 2 | 2 | These parameters are intended to be informational and as guidelines. You can change certain ones like speed +/- from what is posted above. Please fly safe and within the limits of the aircraft and yourself. ====== Finish ====== Once you are done editing, you can fly. I recommend compass calibration. You ca ===== All Parameters Lists ===== * [[howto:P3C|Phantom 3 Standard - All Parameters]] * [[howto:P3S|Phantom 3 Advanced - All Parameters]] * [[howto:P3X|Phantom 3 Professional - All Parameters]] * [[howto:WM610|Inspire 1 (v1) - All Parameters]]