Hello Tello Pilot!
Join our DJI Tello community & remove this banner.
Sign up

Python interface


Well-known member
Mar 5, 2018
Reaction score
Twin Cities, MN
If anyone is feeling adventurous, I don't have a Tello yet - but I've been working on a Python interface.

Python interface for the Ryze Tello drone · GitHub

UPDATE: Code is now maintained at microlinux/tello

I ran it against a stupidly simple Tello "emulator" to verify it's not insane. Beyond that it's untested early code.

UPDATE: I now have a Tello. So far, it hasn't started on fire when using the module.
Last edited:
Hey microlinux, it worked fine right up until the code asked it to move:


In theory, your Tello is about to ...

1.) Take off
2.) Set speed to 2 MPH
3.) Move up 2 feet
4.) Move foward 4 feet
5.) Move left 4 feet
6.) Rotate clockwise 90 degrees
7.) Rotate counter-clockwise 270 degrees
8.) Move forward 4 feet
9.) Land

The Tello will begin flying after entering the IP address of this computer

IP address of this computer:

Intiating take-off
Tello response: OK

Waiting 10 seconds before continuing

Setting speed to 2 MPH
Tello response: OK

Waiting 2 seconds before continuing

Moving up 2 feet
Traceback (most recent call last):
File "tello.py", line 417, in <module>
print 'Tello response: %s' % tello.move_up(2)
File "tello.py", line 271, in move_up
return self.move('up', distance)
File "tello.py", line 187, in move
return self.send_command('%s %s' % (direction, distance))
File "tello.py", line 299, in send_command
raise RuntimeError('No response to command')
RuntimeError: No response to command
This I believe is an issue with the firmware. I don't get an error using Scratch or their Python3 code but it does stop responding.
This I believe is an issue with the firmware. I don't get an error using Scratch or their Python3 code but it does stop responding.

Thanks for trying it out! I will hopefully have a Tello soon to do more testing.

Did it stop responding using Scratch or the Python3 code after issuing a couple of commands, or were you able to get further with those?
btw. has anyone looked at the firmware, DAT files, raw network protocol yet? ;)
btw. has anyone looked at the firmware, DAT files, raw network protocol yet? ;)

I took a look at it from the standpoint of examining the code in the Tello app. It would seem they are using ssl certs for encoding the net traffic. That shouldn't be a problem for someone who understands encryption. But thats not me. :)
Hello microlinux, Python commands are working just fine for me using your script. Nice job !
Does anyone know if there is somewhere a full list of tello commands ?
Well I am not a specialist but Tello is broadcasting live to the phone app so this answer from Ryze does not make a lot of sense...
  • Like
Reactions: Supersonic
That was basically my answer ... but it looks like they don’t want/plan to share access with developers
  • Like
Reactions: Hugh
Thank you. I already had this doc but finally your script is a good doc in itself.
I was more looking for commands for the photo/video features of the drone... can't find this anywhere.

Thank you again.


At the moment, only the functions in the SDK docs are available.
Here is an example application I threw together that uses the tello module. It's basically a slightly fancier version of the demo script that comes with the SDK. I tested have it briefly, but not thoroughly (need more batteries!).

Tello Advanced Remote Drone Interface System (TARDIS)

[user@server tardis]$ ./tardis.py -h
usage: tardis.py [-h] [-m] [local_ip] [local_port]

Tello Advanced Remote Drone Interface System (TARDIS)

positional arguments:
local_ip Local IP to bind (
local_port Local port to bind (8887)

optional arguments:
-h, --help show this help message and exit
-m, --metric Use metric (meters/KPH) instead of imperial (feet/MPH)

I tried your "tardis" script but I had to tweak things a little bit. My guess is that you use python 2 on linux, and I use python 3 on windows. I had to modify the syntax (basically add some '(' and ')' in some functions and also install a windows version of the curses library.
As I am not a code expert I was pretty proud of myself when I first saw the screen appearing with the list of commands and the history fields. Unfortunately commands didn't work and did not append the history list.
My guess is that I have a syntax error (even without error messages) and something should be modified in the script to use with py3, maybe in the "response=drone.command(param)"
or in the wrapper command at the end of the script.
Again, my knowledge of python is limited and old...

I'll retry because it is fun.


New Posts

Members online

No members online now.

Forum statistics

Latest member

New Posts