I want to buy my first drone, I have no prior experience. I'm interesting in getting a cheap drone with a camera that can be controlled from a smartphone app. Something like the Tello Ryze would be at the higher end of my price range. I have experience programming (including smartphone apps). I noticed the Tello Ryze specifically has an SDK. Would it be possible to use this SDK from an Android app I wrote? And is it usually possible to program drones that are controllable from a smartphone yourself (I am finding it difficult to Google good information about this)?

To clarify, what I would like to access in my program:

  • Video stream from the drone to my smartphone app
  • Send commands from my smartphone app to the drone to control it

This certainly seems doable. The SDK documentation is not very clear but basically it's a simple string command over UDP. So it looks like the drone creates a WiFi access point which you connect to with your phone and you have a dedicated IP address/port number to send commands to the drone.

There is a simple python application linked in their SDK document that shows the basics. And there is a github repository that also has a python program that shows how to get the video feed from the drone over the command API described in the SDK.

Given the SDK and the example projects in the github repository I think it would be a feasible project by someone with some Android development skills.

  • $\begingroup$ Having looked at the SDK documentation a bit more, I think this is probably a good first step for me into the world of drones (and controlling them through my own programs). $\endgroup$ – Jeff 2.0 May 8 '20 at 20:39

Programming an app for the DJI Tello seems possible with the given API. Actually, the Tello is meant for such kind of projects.

I don't want to repeat Paul's answer here however - I understand your question so that your end goal is to completely program a whole system, from start to finish, to control your drone, get a video feed and telemetry and so on. And without depending on DJI.

And while it is definitely possible, the effort you'll have to put in is quite large. Especially creating a video transmission system can be a hassle. Bear in mind, it has to be reliable, fast and - most importantly - robust: it has to recover from errors, it has to deal with bad and slow connections; you get the point. Having one side already sorted out (as in the case of the DJI Tello) is a huge plus for programming your own app because you have something to build upon.

But don't let me frighten you. If you feel confident in your cross-platform programming skills, you can definitely do it. Standards like WebRTC might help you.

  • $\begingroup$ I have some experience with stuff like WebRTC. For the Tello Ryze, is it possible to load/run my own program directly on the drone? I take it that's what you mean by programming the whole system including parts like the video streaming. $\endgroup$ – Jeff 2.0 May 8 '20 at 20:07
  • $\begingroup$ Oh, maybe I misunderstood your question a little (that's why I mentioned WebRTC because I thought you would also want to build your own drone). The DJI tello doesn't use WebRTC however.But as far as I understand the SDK, your program only runs on the phone and you control it via UDP messages to and the tello will return UDP messages with whatever data you requested to your phones port 8890. The video stream is sent to your phone on port 11111. Maybe these two threads help you decode the video stream: 1 2. $\endgroup$ – Bastian Springer May 8 '20 at 23:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.