Looking for a first project in a relatively new language that’ll stretch your abilities? [Ron] was, so he hacked a commercially available drone and opened up a lot of its functionality, while writing the client software in Go.
The drone is a DJI Tello, which has some impressive hardware like a 14-core Intel processor and excellent video processing abilities. There’s also a vibrant community and a lot of support, making it the ideal platform for a project like this. It communicates to a base station via WiFi, and using some tools like the Wireshark [Rob] was able to decipher a lot of the communications and create a whole new driver for the drone. While the drone can be controlled in the traditional way, users can also write programs to control the drone as well.
The project is both an impressive feat in reverse engineering an inexpensive drone, and a fun example of programming in the Go language. Because of the fun and excitement of drones, they have become a popular platform on which to hack, from increasing their range to becoming a platform for developing AI.
What is the CPU model used in the DJI Tello?
I haven’t found the answer but places keep referring to the Intel Movidus Myriad VPU. That product is advertised as having 12 programmable accelerator cores and 2 general purpose CPU cores. Here’s the link: https://www.movidius.com/myriad2
Interestingly a SPARC core.
https://github.com/MAVProxyUser/RyzeTelloFirmware
Apparently it’s a leon a family of CPUs which was originally made by ESA and used in several space probes it’s well supported by many RTOSes.
is it available to us hobbyist plebs? unlikely as its intel, but worth a go
Is there a drone with the size of DJI Tello but with brushless motors that can be controlled via Wifi using a programming interface?
Ryze Tello uses Movidius VPU to control the PWM lines that subsequently drive the motors. Firmware images, and detail can be found here: https://github.com/MAVProxyUser/RyzeTelloFirmware
What about Go? Why Go? Is there some feature in it that makes it better for this application? I feel like this article is missing its ‘after the break’
Cause it’s easier than writing in assembly.
It’s a project from a blog called GoBot, clearly this was just an excuse to use their favorite hammer.
Those interested in controlling cheapo wifi quadcopters from JJRC, I did a very similar project: https://hackaday.io/project/19680-controlling-a-jjrc-h37-elfie-quad-from-a-pc
I felt a bit sad when I realised they didn’t mention this in the article :’-(
Sorry if reposting the comment. I just wanted to mention a very similar project I have worked on, which enables to control a JJRC Elfie quadcopter from a computer. Basically, I found out how the small control UDP packets are formatted and how to read the video stream.
https://hackaday.io/project/19680-controlling-a-jjrc-h37-elfie-quad-from-a-pc
This one uses TCP for the video, I imagine that undermines the latency of the video among other things.
Neat project, glad you posted. Seems articles tend to reference other articles and not projects as much unless featured as the article. I’ll try to read into more.
I was recently wondering how to control and view the the GoPro Hero Session 4 without the specific remote control or Android/Istuff systems and if anyone already sniffed the streams out. At least these systems aren’t cloud or web based which is usually more a pain and time consuming to work around. Found the KonradIT github resource and still need to try out and see what potential there is as reads like there still is potential for improvements if not only converting to a faster running language: https://github.com/KonradIT/goprowifihack/blob/master/HERO4/README.md
I wrote my python version. See https://github.com/hanyazou/TelloPy
Anyone have some links to this “vibrant community” of tello hackers?