Parrot Mini Drones: Airborne/Cargo firmware downgrade

Preface

I have bought a Parrot Night mini drone earlier this year. It was updated immediately to 2.1.70 firmware, and it was a fun to fly with it. It worked out of box, only issue I can mention, that sometimes it is very hard to connect my smartphone-drone-flypad combo, and the drone rarely start to ascend at its own. Parrot made a new firmware for direct connection between drone and its Flypad. I immediately installed it, and I made a mistake...

Drone's flight stability software went crazy, the drone was all over the place. It was very easy to crash with it. I have written on Parrot's Official forum, and I was not alone with my problem:

Community Forum

Parrot doesn't give us an official statement, and four weeks passed without any fix. Meanwhile because of this unstable firmware, I crashed my drone very badly (survived it fortunately), so decided to try to revert its firmware, despite that it is still under warranty, and downgrade not supported by Parrot.

So let's have some fun, and hack into the Airborne Mini drone!

Parrot Airborne Night

First of all Read This!

Firmware downgrade is possible on this drone, I've just done it, and worked on my drone, no problem found. It is done with an Airborne Night Maclane. Possible works on all Airborne, and Cargo mini-drones as well (their update files content are the same).

This is not an official way for downgrade, it is do not supported by Parrot, and I'm not a Parrot employee. Revert the firmware can void your warranty, and because it means you have to manipulate the drone's storage, there is a chance you make your drone a brick (and that will mean a motherboard change to fix it)!

I recommend to wait on Parrot, to fix the current issues with the present firmware.

If you follow this downgrade process, do it absolutely at your own risk!

If Parrot SA ask me to remove this page, I will do it as soon as possible. I have no intention to harm anybody, I just wanted to fly my drone. Improper customer support made this page alive.

Results

My drone went back absolutely to a stable flight, after got back to 2.1.70. So it is certain that the instability issues are in connection with the 2.6.8 firmware. But now I see what is improved in 2.6.8:

  • direct connection with flypad - we know that
  • much-much faster boot time
  • better landing sequence
  • and a really-really bad flight stability control fw...

Prerequisites to downgrade

When I done this downgrade I have had only a Windows based computer, so I'll present the process on Windows. Of course it can be done on any Linux based computer. What you need to perform this process:

  • Basic knowledge about Linux/Linux's file system, console emulation, Telnet
  • Fully charged drone battery
  • Drone's USB cable
  • Computer
  • Some terminal emulator, for example Putty
  • Check you network: 192.168.2.X ip range must be free
  • Official 2.1.70 AirborneNight.plf file
    • MD5 dcd8091686a012b797c26417a8927f03
    • SHA1 6fb4616b56e24db076bee76e5a4897b632cc0d12
  • Drone itself of course

If you have not got a basic knowledge about Linux, please stop here. You can make your drone malfunctioning, even it can be bricked.

Downgrade process, and the way to do it

First I examined the drone's plf file, read the official ArDrone/Bebop threads. That drones has a Telnet connection availability, so their firmware can be modified. Even they can revert firmware. The methods can be found on the forum, or you can Google on it: you'll find unofficial drone forums about it. Parrot do not remove these post from its official forum, but it is clear they do not support it.

Parrot has a lot of open-source projects. So I assumed it won't cause any problem, if I start examine their code.

So I unpacked the plf file with a little help (see references at the end). There is an embedded Linux file system in it. What is important to us, that we can open a Virtual COM port and a Remote NDIS interface (RNDIS) (last is a ttyACM on Linux).

To achieve this: put a good fully charged battery in the drone, and switch it on, wait to boot, and connect it your computer's USB port. Wait until the drone's drive are present, then press the on/off button four times in a row (for one push the drone's light will be red for a moment).

Virtual COM port will be installed automatically, but unfortunately I could not do anything with it (it is on baud 115200, it is certain form the sh scripts, but other parameters not known. I tried 8N1, but didn't work, so I moved on). Let's see that RNDIS interface.

RNDIS will not install itself automatically, you have to do it manually:

  1. Go to device manager
  2. Right click on this device (it will have yellow mark on it)
  3. Update driver
  4. Browse my computer for driver software
  5. Let me pick from a list...
  6. Network adapters
  7. Select Microsoft Corporation and select Remote NDIS Compatible Device on the right side
  8. Next, and give an ok to the warnings
  9. After that, Windows will initialize it (at least my Win10 x64 done it)

From the plf file it have to be on 192.168.2.1. All right fire up Putty (maybe GNU screen will be your friend on Linux, or you can use Putty too), set it to Telnet, and write that IP address (other parameters can be default).

Configure Putty

Bingo, we are at the drone's console. And we are root ;). (Some notes: SSH port is closed, but FTP port is open too. And another debug partition will show up in Explorer, which contains some logs).

At this point you can do anything here. But be very-very cautious. You can make your drone a brick, if you do something here wrong! Be extra careful! I cannot mention it enough time.

From now on [enter] means to hit enter key, [Ctrl-D] means hit Ctrl and D keys at the same time.

Issue this command:

cat version.txt[enter]

It have to be 2.6.8. See screenshot above. So, to revert firmware we will fool the actual 2.6.8 one, to think its version is below 2.1.70. To do this issue the following commands in this order:

mount -o remount,rw /[enter]
cat > version.txt[enter]
2.1.55[enter][Ctrl-D]

What we have done? We made the file system writable, and modified the version.txt.

Now if you issue:

cat version.txt[enter]

It have to be 2.1.55 (2.1.55 is the official predecessor version of 2.1.70).

Close the connection:

exit[enter]

Now Putty will close. Push your drone's on/off button once, and wait until it shuts off (we have to quit from this debug mode). Unplug USB, and wait a little bit, and turn the drone on again, wait for boot, and connect it to your computer again.

You'll only see the drone's mass-storage this time, as you normally do: copy the official 2.1.70 AirboneNight.plf to the drone (so do a regular USB update with it. The actual firmware thinks at this point its version is 2.1.55, so it will happily update with 2.1.70).

Safely remove your drone, and it will start re-flash the old firmware. It will take a few minutes: LEDs will be flash in orange, will be steady red for multiple times (that red almost give me heart attack, but fortunately they are part of the update process... Nice one, Parrot ;)).

Wait until LEDs are steady green. Connect with you smartphone's Bluetooth, and voila, your firmware version is 2.1.70. FreeFlight Mini will want to update your drone - refuse it of course every time! FreeFlight Mini's version currently is 4.2.4 in Google Store.

Have a nice and STABLE flight!

Don't forget, that the LED's color codes changed from 2.1.70 to 2.6.8 update. After revert the old color codes will be valid. And of course you will lose the ability to direct connect the drone with Flypad (this will be missed...).

So wait on Parrot, to update the 2.X.X firmware. Save the original 2.6.8 firmware from the Parrot homepage, it might be useful. Hopefully if Parrot releases a new 2.6.8+ firmware, it will be installed without problem over this reverted state.

And I have to tell, that I am very angry, that I had had to dive into some embedded Linux, instead of fly my drone... At least Parrot could have make a statement, that they are working on the fixes etc. Its clear now, that the problems raised with the new firmware, it is not hardware related. Anyway with this 2.1.70 fw the drone is fun to drive again, hopefully it will make this adventure disappear from my memory...

References

Some useful links, that helped me in this journey:

2017-06-17