- Joined
- Nov 1, 2022
- Messages
- 7
- Reaction score
- 8
- Location
- Denver, CO (USA)
- Website
- marcusboydresearch.wordpress.com
Hi ParrotPilots Community! This is a longer post & 1 of 3 part series, but I hope the content is valuable.
TL;DR - see below for a list of API endpoints for the Parrot drone & SkyController3.
The Parrot Drone & SkyController3 run as webservers when the devices are in operation. This means you can "log on" to both the drone & controller to get valuable information while the devices are running. To checkout the drone's webserver you must:
Third, I started Wireshark while on the drone's Wifi network. Wireshark is a hacking/snooping tool perfect for monitoring unsecured traffic over a network. As Wireshark was running I clicked around the drone's webserver on my internet browser. I clicked all buttons I could find including downloading & deleting media. I also played with every stick/button on the controller. I also took a few pics & recorded video with the controller which will be useful later. Performing these actions generated a lot of data within Wireshark as it logged all the traffic between the controller & drone and computer & drone. It took several minutes to click around all tabs/pages. Next I did the same thing on the controller with the IP address provided by Angry IP Scanner.
Fourth, I read through all the data generated by Wireshark to uncover many API endpoints that I haven't seen mentioned on any forums or elsewhere on the internet. Note that APIs can be used to GET (read) information which is the focus of this post. APIs can also be push to POST/PUT (write) & DELETE information, but I don't explore those functions here. For the Anafi drone, I identified the following API endpoints:
For the SkyController3, I identified the following:
Fifth, I used Postman to organize & handle all the API calls. In this case Postman provides convenience but is not necessary. If you open a command prompt on a windows machine you can export the results of any API endpoint to a file on your local machine with a command like this:
Finally, go check it out for yourself! If you'd like to see some examples of the type of data provided by the APIs above, check out my second post on this topic. If you find additional API endpoints please share!
Last, I need to give credit to a few posts that were an inspiration to this post:
TL;DR - see below for a list of API endpoints for the Parrot drone & SkyController3.
Intro/Background
I've been searching for a way to create double-grid flight plans so I can create 3D models of cemetery sites for the purpose of historic preservation. Pix4DCapture is a great app but has the 1 limitation that doesn't allow for flying below 10 meters. I've been exploring other methods highlighted on the forum and wanted to share some interesting findings along the way that I haven't seen covered in this forum.The Parrot Drone & SkyController3 run as webservers when the devices are in operation. This means you can "log on" to both the drone & controller to get valuable information while the devices are running. To checkout the drone's webserver you must:
- Turn on the drone
- Connect to the drone's wifi network - probably something like "ANAFI-0123456"
- Put this into your web browser:
192.168.42.1
- this is the IP address of the drone's webserver. - (Optional) Plug phone that's running FF6 into SkyController as if you were going to fly the drone. Note this is required for seeing the controller's webserver.
Getting Started
First, my the tools for the job:My Hardware:s
- Parrot Drone: firmware version 1.8.2
- SkyController3: firmware version 1.8.1
- Android phone running FF6 App v6.7.6
- Windows 10 laptop running the software below.
Software tools used
- Angry IP Scanner - Angry IP Scanner - the original IP scanner for Windows, Mac and Linux - latest version as of 11-Nov 2022
- Wireshark - Wireshark · Download - version 4.0.1
- Postman - Download Postman | Get Started for Free - latest version as of 11-Nov 2022
The process
Second, I wanted to identify any devices running on the Anafi's network. Angry IP Scanner searches on a range of IP addresses so I started searching from 192.168.42.1 to 192.168.42.255 while connected to the drone's wifi network. Doing this allowed me to identify the IP address of the controller. In my case it was192.168.42.47
but your results may vary & I've seen other IP addresses for the SkyController3 on this forum. Third, I started Wireshark while on the drone's Wifi network. Wireshark is a hacking/snooping tool perfect for monitoring unsecured traffic over a network. As Wireshark was running I clicked around the drone's webserver on my internet browser. I clicked all buttons I could find including downloading & deleting media. I also played with every stick/button on the controller. I also took a few pics & recorded video with the controller which will be useful later. Performing these actions generated a lot of data within Wireshark as it logged all the traffic between the controller & drone and computer & drone. It took several minutes to click around all tabs/pages. Next I did the same thing on the controller with the IP address provided by Angry IP Scanner.
Fourth, I read through all the data generated by Wireshark to uncover many API endpoints that I haven't seen mentioned on any forums or elsewhere on the internet. Note that APIs can be used to GET (read) information which is the focus of this post. APIs can also be push to POST/PUT (write) & DELETE information, but I don't explore those functions here. For the Anafi drone, I identified the following API endpoints:
Anafi Drone Webserver API Endpoints
http://192.168.42.1/api/v1/fdr/lite_records
http://192.168.42.1/api/v1/fdr/records
http://192.168.42.1/api/v1/info/properties
http://192.168.42.1/api/v1/media/medias
http://192.168.42.1/api/v1/pud/puds
http://192.168.42.1/api/v1/report/reports
http://192.168.42.1/api/v1/sdk/description
http://192.168.42.1/api/v1/update/version
http://192.168.42.1/api/v1/upload/flightplans
http://192.168.42.1/api/v1/web/model
http://192.168.42.1/api/v1/web/modules
http://192.168.42.1/data/media/<specific_image_filename>.JPG
http://192.168.42.1/data/fdr/<specific_fdr_log_filename>.bin
For the SkyController3, I identified the following:
Anafi SkyController3 Webserver API Endpoints
http://192.168.42.47/api/v1/drones/list
http://192.168.42.47/api/v1/fdr/records
http://192.168.42.47/data/fdr/<specific_fdr_log_filename>.bin
http://192.168.42.47/api/v1/info/properties
Fifth, I used Postman to organize & handle all the API calls. In this case Postman provides convenience but is not necessary. If you open a command prompt on a windows machine you can export the results of any API endpoint to a file on your local machine with a command like this:
curl http://192.168.42.1/api/v1/info/properties > info_properties.json
Finally, go check it out for yourself! If you'd like to see some examples of the type of data provided by the APIs above, check out my second post on this topic. If you find additional API endpoints please share!
Last, I need to give credit to a few posts that were an inspiration to this post: