DJI Inspire 1 hacks - How to remove NFZ, Height Limits, modify flight parameters and increase maximum speeds


#1

This how-to guide will allow you to unleash the raw power of the DJI Inspire 1 drone and fly it as it was intended - without restriction :grimacing:

If you follow this guide to the letter, you will be able to:

  • Fly faster forwards / backwards, in both GPS and ATTI modes
  • Ascend and descend faster
  • Remove forced landings due to low battery and/or high altitude
  • Remove the 500m height limit
  • Remove all No Fly Zone (NFZ) restrictions

Don’t forget people, fly sensibly (and don’t be a dick) :+1:


PART ONE - EXTRACTING THE FLIGHT CONTROLLER MODULE

Prerequisites?

You’ll need both Java and Python available from your command line.

To test for Java, open a command prompt and type:

java --version

You should get a response like this:

java

Similarly, to test for Python:

python --version

python

Environment good to go?

Now you need to download a ZIP file containing all the tools put together by our good friend Steve, aka digdat0.

You can download the tool set from Github:

Click on the Download ZIP button to get what you need:

Once downloaded, you can then extract the zip file in to a folder.

In this example, I’ve extracted it to F:\deejayeye\

With the zip extracted, you can now lauch a command prompt and navigate to your extracted folder.

Once in the folder, launch the tool set by simply typing tool.bat

At this point, all being well, you’ll see a menu appear.

Choose the appropriate option for your drone.

In my case it’s the Inspire 1 v1 so I’m chosing 6 and hitting Enter:

You’ll now see a list of firmwares available for the drone model you selected.

I’m currently running v1.09.01.30 so I’m going to type 29 on this screen and hit Enter:

The tool will then go and download a nice clean unmodified version of your firmware for you:

The above downloading step took around two minutes on my computer. Your download time will depend on the firmware version you have and the speed of your internet connection.

The menu will change when the download is complete to give you some new options:

Before progressing, it’s wise to just check the download was successful by looking in the \tools\ folder, where you’ll see a .bin file.

Do NOT touch this file.

Go back to the command window where your new set of menu options are waiting for you.

Your firmware has been downloaded so it’s now time to Extract it.

Choose option 1 and hit Enter:

A couple of extra Python tools may be required, so you may briefly see this displayed:

Once the firmware has been extracted you’ll be returned to the main menu again.

You can check the extraction manually by looking in the newly-created \tools\fw\ folder where you’ll see many (many) smaller-sized files :

All looking OK? Then go back to the command window again.

Now that the firmware has been extracted, the next step is to extract the Flight Controller Module (from our extracted firmware), as this module is the only one we need to modify :+1:

Choose option 2 from the menu and hit Enter:

You’ll see all manner of weird and wonderful text whizzing past your eyes. You can safely ignore it.

When complete, you’ll be returned to the now-familiar menu screen.

Check the Flight Controller Module extraction was successful by looking in the \tools\fw\ folder once more.

You’re looking for a specific file this time, it’ll be called flyc_param_infos (with no file extension).

Go back to the command window again.

Now it’s time to get our hands dirty :grimacing:

Choose option 3 to edit the flight controller module parameters and hit Enter:

The moment you hit the enter key Notepad will open and you’ll be presented with a text file containing around 8,800 lines of JSON (developers will be familiar with this format).

That’s it for part one!

Read on below :+1:


#2

PART TWO - MODIFYING THE FLIGHT CONTROLLER PARAMETERS

Ok, still with me?

Time to really pay attention now :slight_smile:

You need to be VERY careful what you edit in this text file.

Very careful…

One false move, even something as simple as a comma being deleted accidentally will spell disaster for you (well, for your drone anyway).

Your task now is to search within Notepad for certain parameters. Once found, carefully edit the values to the recommended values below.

I’ll provide one example of a parameter change here, then I’ll list the common parameters and values below, so you can change the rest to suit your own customisation desires :+1:

Ok, for my example here then, let’s say we’re only interested in removing the height limit.

To do this, there are two parameters we need to change.

Press CTRL+F in Notepad to bring up a search box, enter:

g_config.advanced_function.height_limit_enabled_0

Then click on “Find Next”.

You’ll see it’ll jump you to that section of the code:

The default values will look similar to this:

    {
        "index" : 211,
        "typeID" : 0,
        "size" : 1,
        "attribute" : 11,
        "minValue" : 1,
        "maxValue" : 2,
        "defaultValue" : 1,
        "name" : "g_config.advanced_function.height_limit_enabled_0",
        "modify" : true
    },

What you need to change in here are the minValue and defaultValue values.

Edit the numbers so both the minValue and the defaultValue values are set to 2.

If done correctly, it’ll now look like this:

    {
        "index" : 211,
        "typeID" : 0,
        "size" : 1,
        "attribute" : 11,
        "minValue" : 2,
        "maxValue" : 2,
        "defaultValue" : 2,
        "name" : "g_config.advanced_function.height_limit_enabled_0",
        "modify" : true
    },

Simple, right?

The next parameter to change for the removal of the height limit is:

g_config.flying_limit.max_height_0

So go ahead and search for that in Notepad again.

Again, you’ll need to edit both the minValue and the defaultValue values.

Set them to be:

    {
        "index" : 242,
        "typeID" : 1,
        "size" : 2,
        "attribute" : 11,
        "minValue" : 20,
        "maxValue" : 10000,
        "defaultValue" : 10000,
        "name" : "g_config.flying_limit.max_height_0",
        "modify" : true
    },

That’s it, you’re all done. The height limit has now been removed.

I’ll now list the other parameters you can search for, followed by some recommended values to change.

If you’re feeling brave, try experimenting with different values and see how it affects your drone.

Remove Height Limit
g_config.advanced_function.height_limit_enabled_0
“minValue” : 2,
“maxValue” : 2,
“defaultValue” : 2,
g_config.flying_limit.max_height_0
“minValue” : 20,
“maxValue” : 10000,
“defaultValue” : 10000,

Remove NFZ
g_config.airport_limit_cfg.cfg_search_radius_0
“minValue” : 1,
“maxValue” : 1,
“defaultValue” : 1,
g_config.airport_limit_cfg.cfg_disable_airport_fly_limit_0
“minValue” : 1,
“maxValue” : 1,
“defaultValue” : 1,
g_config.airport_limit_cfg.cfg_enable[FLY_LIMIT_TYPE_SPECIAL]_0
“minValue” : 1,
“maxValue” : 1,
“defaultValue” : 1,

Remove Forced Landings
g_config.voltage2.user_set_smart_bat_0
“minValue” : 0,
“maxValue” : 0,
“defaultValue” : 0,
g_config.voltage2.level_2_function_0
“minValue” : 0,
“maxValue” : 0,
“defaultValue” : 0,
g_config.voltage2.level_2_voltage_0
“minValue” : 0,
“maxValue” : 0,
“defaultValue” : 0,
g_config.voltage2.level_1_function_0
“minValue” : 0,
“maxValue” : 0,
“defaultValue” : 0,
g_config.voltage2.level_1_voltage_0
“minValue” : 0,
“maxValue” : 0,
“defaultValue” : 0,
g_config.voltage.level_2_protect_type_0
“minValue” : 0,
“maxValue” : 0,
“defaultValue” : 0,
g_config.voltage.level_1_protect_type_0
“minValue” : 0,
“maxValue” : 0,
“defaultValue” : 0,

Faster Ascent and Descent Speeds
g_config.control.vert_up_vel_0
“minValue” : 8,
“maxValue” : 10,
“defaultValue” : 8,
g_config.control.vert_down_vel_0
“minValue” : 8,
“maxValue” : 10,
“defaultValue” : 8,

Faster Forwards and Backwards Speeds
g_config.control.horiz_vel_atti_range_0
“minValue” : 35,
“maxValue” : 60,
“defaultValue” : 35,
g_config.control.atti_range_0
“minValue” : 48,
“maxValue” : 60,
“defaultValue” : 48,

Once you’ve finished editing your parameters, click the red cross in the top right corner of Notepad and Save your changes:

You’ll now be returned to the command window again.

At this point the hard work is all done and it’s time to recompile the firmware and incorporate our changes.

Choose option 4 and hit Enter:

Once again, 101 things will go whizzing past your eyes while the firmware is recompiled.

When complete, you’ll be returned to the menu again.

You can check the firmware was recompiled successfully by looking in the \tools\Finished_Firmware_Files\ folder, where you’ll see just two files:

The file flyc_param_infos is a copy of your changed parameters and the second file, WM610_v01.09.01.30_m0306.bin is your modified firmware (your version number may of course be different).

Go back to the command window again.

Now you simply need to rename the firmware file to a service file that your drone will recognise.

Choose option 5 and hit enter:

You can check the service file was renamed correctly by looking in the \tools\Finished_Firmware_Files\ folder where you’ll see the firmware file has been renamed to INMCAPPFw1.bin like so:

Go back to the command window again.

That’s it, you’re all done!

Choose option Q to quit the tool.

All that remains now is to flash this INMCAPPFw1.bin service file on to your drone.

Read on below :+1:


#3

PART THREE - FLASHING THE FIRMWARE ON YOUR DRONE

To install the INMCAPPFw1.bin service file on your drone you must first format the MicroSD card while it’s in your drone camera (Zenmuse Z3 in my case, but the X3 camera will do fine).

Do not format the MicroSD card on your computer.

With the MicroSD card freshly formatted, copy the INMCAPPFw1.bin file on to the root (top level) of your MicroSD card. Ignore any other files or folders that may be there, leave them where they are.

Make sure the remote is switched off.

Now with the drone also powered off, insert the MicroSD card in to the camera.

This next part is important…

You MUST hold in the hidden Pairing button on the Inspire 1 - before powering on the drone.

Hold that pairing button in and while holding, then power on the drone. Keep holding that pairing button.

Only when you hear the camera bleeping this pattern:

D-D-D-D {pause} D-D-D-D

Only then can you let go of that pairing button!

You have no idea how many firmware flashing attempts failed because I didn’t know this. The pairing button is required in order to force the firmware update.

Because we’re not rolling the firmware forwards or backwards, if you don’t force the update then you’ll get an error saying that the firmware is the same version and it will abort the update.

The all important pairing button is well and truly hidden on the Inspire 1. It’s behind the nosecone, right here (thanks for the pic, Droneland!):

Leave the drone alone now to install the update.

The updating bleep will change when complete. All the time the update is being installed it’ll sound like:

D-D-D-D {pause} D-D-D-D

And when finished, that bleeping tune will change to:

DDDD-D-D {pause} DDDD-D-D

Ie. A long bleep, followed by two short bleeps, followed by a pause.

You can now safely power off the drone.

Remove the MicroSD card and plug it back in to your computer.

You’ll see the firmware service file has been renamed from INMCAPPFw1.bin to INMCAPPFw1_updated.bin

You’ll also see there is a .log text file on the card now too called WM610_FC350Z_FW_RESULT_AB.txt

If you didn’t hold in the pairing button to force the firmware update, the log file will read something like:

Take a peek inside the log file.

You’ll see a bunch of stuff that wasn’t updated, that’s is fine. You’ll also see a few Result: Success messages in there too :+1:

You must now delete the .bin file and the .txt file.

That’s it, you’re all done :+1:

Any questions? Just ask :smiley:


#5

The first two steps of this guide also apply to the DJI Phantom 3.

However, not owning a P3 I don’t know how you perform step # 3 to install the modified firmware. If anyone can shed any light on that, please do :+1:


#6

I almost want to get an Inspire, now! :wink:


#7

I’ve flashed mine fourteen times now, that’s nearly double the amount of Mavic hacks I’ve done :blush:

Just experimenting with various settings, pushing the limits, and so on.

It’s good fun! Albeit somewhat risky at the extreme end of tilt angles and stuff :blush:

I found myself winding back some of the parameters too, things got a little wild on more than one occasion :grimacing:


#8

Btw, since they went ‘end of life’, there are a few Inspire 1 bargains to be found on eBay :+1:


#9

What? Before topping the Breaking the speed limit Leader Board?


#10

Brilliant write up Rich.
Thanks for sharing.
Presumably same can be done with the Inspire 2?


#11

No, definitely not Mick.

For the Inspire 2 you need the guide which follows the same process for the Mavic Pro.

There’s one on here somewhere, I’ll find it when I get back :slight_smile:


#12

You next guide should be a guide to the guides. :wink:


#13

Hi ,really enjoyed reading that, any idea where I would find the one for Phantom 4 standard.


#14

@jimvfrmoto750 yeah I did a NFZ removal guide (and rooting) for the Phantom 4 over here: How to root your DJI Mavic Pro, Phantom 4 and Inspire using DUMLRacer and completely remove NFZ

And the Phantom 4?parameter mods are in this post - @mickydd this is the one you need for your Inspire 2 as well: How to change flight parameters on a DJI Mavic Pro, Phantom 4 and Inspire 2


#15

No, it was very much after I rocked up at number one :grin:


#16

Thanks for the feedback guys!

These guides take a good couple of hours to do the writeup and put together all the screenshots so it’s good to know people find them useful and interesting :+1:


#17

Thanks for pointing me in the right direction Rich