I did something similar but opposite, reverse engineered the serial protocol of my phantom joystick so I could use it to play drone simulators on my laptop and practice. Ten years ago now, so hopefully not needed anymore, but was a fun project:
https://github.com/Matsemann/mDjiController
Those first generation consumer drones were so wack. Hard to fly, and very brittle software. I lost it when it randomly decided to "fly home" when I took off from a new location without storing a new gps location. I just had to watch it go straight north and out of view.
For context, this drone was reversed back in 2018 as part of my bachelor thesis. At the time, the SDK hadn’t been released yet I believe, so reversing was the only available option. Recently, I revisited this work and decided to include it on my new hardware hacking wiki - HardBreak.
Hmm. Parrot has had SDKs for their drones years (at least 5) before 2018. Maybe it happened during the few months between the moment they shipped the Anafi and the moment they shipped the corresponding SDK, then.
But anyway, for educational purposes it's interesting to reverse engineer anything you want!
That was my thought, at least one of those packets in their snooping (src. port 14551 / dest port 14550) is the standard Mavlink port to send to the GCS.
I wonder if the proprietary packet they decoded here is actually just a MAV_CMD_DO_SET_MODE setting the drone into a takeoff flight mode.
I’m not very familiar with drones but apparently this company makes some models in the US, which is great for those of us concerned about privacy / security with Chinese companies like DJI:
https://www.parrot.com/us/drones/anafi-usa
But I can’t seem to buy these directly from them? So only through third party resellers? Or is it discontinued?
Like most drone companies (Skydio etc.), they haven’t been able to keep up with DJI and have moved out of the consumer space and into the regulatory captured space with Blue UAS/NDAA compliant drones and high end enterprise offerings for organizations who can’t buy DJI. Their products are available only through dealers/resellers and only their expensive enterprise options are still in production.
Parrot were quite cool; they had one of the only fixed wing consumer drones (Disco) and always offered some of the most open APIs and best SDKs for their drones. Unfortunately their products don’t really hold a candle to modern DJI in terms of flight characteristics and especially wireless link.
Skydio are the ones leaning on Stefanovik and others to push the DJI ban, stoking xenophobic fears just so they can corner the market with an inferior product.
My first drone was a Parrot purchased at a Verizon store ~10 years ago. They definitely have been around for a while but not sure about the current state of the company.
DJI drones can already do all the stuff that's not tailored to hunting down people, and they can't compete on quality with DJI, so they're trying what little niche remains.
well there are many enterprise farming use cases, or security use cases that can be useful for them. I think the fact that parrot's been working with the army too much they dont know really how to sell to enterprises so thats all the marketing they have.
Just build one yourself... It's quite simple and a lot cheaper. All the components you need are open source. Open hardware and software. When something inevitably breaks you know what exactly to replace.
If you don't mind paying a little more and want a ready to fly / kit versions: pick any of these. I remember the Holybro x500 kit used to be very popular (review: https://m.youtube.com/watch?v=cTVtFYONHiY )
Lots of no-name or DIY drones use flight controller running a BetaFlight [1] firmware, which is open source and quite hackable. If you want low-level real-time programmatic control (like manipulating servos, lights or camera), that is most likely the easiest way. There is also ArduPilot [2] firmware, which is focused more on the high-level control (like managing GPS waypoints and autonomous takeoff/landing).
In both cases you can piggyback your control signals using standard radio or use serial port via dedicated wireless bridge.
Parrot had very good SDKs but they stopped making consumer drones. You could get one used but beware that the batteries are mostly aging out.
DJI have a Mobile SDK, although it has a quite confusing support matrix and is artificially hamstrung on consumer drones. I think the latest mobile SDK for Android still supports the Mini 3 Pro, so that might be a good starting point (but not the newer 4 Pro). They also have a Payload SDK for their enterprise drones.
Autel also have a mobile SDK although I would describe it as simply a mess.
You can always build your own drone with Ardupilot or PX4 but you’ll have to deep dive into DIY, reimplement or forego a ton of basic flight functions that commercial drones already handle, like visual odometry, and you don’t get a nice camera built in. It’s a viable option for a hobby use but you won’t get anything close to even the most basic commercial drone functionality.
Are Parrot drones insecure or deliberately built with zero security? I thought they're French made, and France tended to be more scared with technological resistance to government interventions than US or China.
The Anafi drone uses regular wifi, with ESSID and password, and that's how the security is achieved. There is no need for additional encryption on protocol level.
It's really the best way - instead of making ad-hoc security mechanisms, rely on well-researched and well-tested wifi security.
(That first sentence, "Start by connecting your PC to the Parrot Anafi’s Wi-Fi network", really carries a lot of load... As Raymond Chen likes to say, "It rather involved being on the other side of this airtight hatchway")
They used to have root shell on telnet in early consumer drones. It was a long time ago, but that can't happen by accident; they could have used dropbear with known fixed password, Wi-Fi MAC as password, etc. They also had wildly different mass than competitors - realistically DJI - at same price/performance ranges.
So I assumed ever since that they have their unique opinions about security and architecture of a flying machine control software. Is that odd?
Those first generation consumer drones were so wack. Hard to fly, and very brittle software. I lost it when it randomly decided to "fly home" when I took off from a new location without storing a new gps location. I just had to watch it go straight north and out of view.
Why reverse it?
But anyway, for educational purposes it's interesting to reverse engineer anything you want!
I wonder if the proprietary packet they decoded here is actually just a MAV_CMD_DO_SET_MODE setting the drone into a takeoff flight mode.
Deleted Comment
But I can’t seem to buy these directly from them? So only through third party resellers? Or is it discontinued?
Parrot were quite cool; they had one of the only fixed wing consumer drones (Disco) and always offered some of the most open APIs and best SDKs for their drones. Unfortunately their products don’t really hold a candle to modern DJI in terms of flight characteristics and especially wireless link.
Would love to write some script to make my drones do predefined things depending on API calls - any clues?
If you don't mind paying a little more and want a ready to fly / kit versions: pick any of these. I remember the Holybro x500 kit used to be very popular (review: https://m.youtube.com/watch?v=cTVtFYONHiY )
https://ardupilot.org/copter/docs/common-rtf.html
You can control them using mavlink / mavsdk etc... the python libraries are good enough.
https://mavsdk.mavlink.io/main/en/index.html
In both cases you can piggyback your control signals using standard radio or use serial port via dedicated wireless bridge.
[1] https://github.com/betaflight/betaflight
[2] https://ardupilot.org/
Parrot had very good SDKs but they stopped making consumer drones. You could get one used but beware that the batteries are mostly aging out.
DJI have a Mobile SDK, although it has a quite confusing support matrix and is artificially hamstrung on consumer drones. I think the latest mobile SDK for Android still supports the Mini 3 Pro, so that might be a good starting point (but not the newer 4 Pro). They also have a Payload SDK for their enterprise drones.
Autel also have a mobile SDK although I would describe it as simply a mess.
You can always build your own drone with Ardupilot or PX4 but you’ll have to deep dive into DIY, reimplement or forego a ton of basic flight functions that commercial drones already handle, like visual odometry, and you don’t get a nice camera built in. It’s a viable option for a hobby use but you won’t get anything close to even the most basic commercial drone functionality.
- What kind of vehicle do you want? A fixed wing? A multicopter? Something else?
- What kind of payload do you want? A stabilised camera (i.e. camera + gimbal)? Something else?
If there is a DJI drone that does what you want (i.e. a multicopter with a gimbal and a camera), then you can't beat DJI.
Dead Comment
The Anafi drone uses regular wifi, with ESSID and password, and that's how the security is achieved. There is no need for additional encryption on protocol level.
It's really the best way - instead of making ad-hoc security mechanisms, rely on well-researched and well-tested wifi security.
(That first sentence, "Start by connecting your PC to the Parrot Anafi’s Wi-Fi network", really carries a lot of load... As Raymond Chen likes to say, "It rather involved being on the other side of this airtight hatchway")
So I assumed ever since that they have their unique opinions about security and architecture of a flying machine control software. Is that odd?