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

Tello. Whats possible?

Hi,

hope beeing right here. I was looking for a battery charger to load more than one simultaneously, but there is no official one until now. So I want to use common lipo chargers. But I don't get about the 4 pins on the battery. I measured it in different cases and come to following data. (The battery was nearly fully loaded). I named the pins from 1 to 4 in the direction that you can read "Fullymax" correctly. It looks like it's beeing loaded on first (+) and third (-) pin. But I'dont come to any conclusion what the other pins are about. As far as I know it is a one cell Lipo battery. But maybe there are more than one in parallel connection. Could this explain my data? Did sombody of you already opended up a battery? I'd like to know what is this all about but hesitated no to destroy my battery on a sunny weekend.

Next thing is that I don't know is about the connector type to load it on a common charger. Is it specially designed by ryze or is it a common type? I couldn't find one. Is there somebody who can help me with this?

By the way thanks for trying to get the video feed. I'm constantly checking your posts an try to reproduce your data.Battery.jpg

Greets from Germany
 
Hi,

hope beeing right here. I was looking for a battery charger to load more than one simultaneously, but there is no official one until now. So I want to use common lipo chargers. But I don't get about the 4 pins on the battery. I measured it in different cases and come to following data. (The battery was nearly fully loaded). I named the pins from 1 to 4 in the direction that you can read "Fullymax" correctly. It looks like it's beeing loaded on first (+) and third (-) pin. But I'dont come to any conclusion what the other pins are about. As far as I know it is a one cell Lipo battery. But maybe there are more than one in parallel connection. Could this explain my data? Did sombody of you already opended up a battery? I'd like to know what is this all about but hesitated no to destroy my battery on a sunny weekend.

Next thing is that I don't know is about the connector type to load it on a common charger. Is it specially designed by ryze or is it a common type? I couldn't find one. Is there somebody who can help me with this?

By the way thanks for trying to get the video feed. I'm constantly checking your posts an try to reproduce your data.View attachment 183

Greets from Germany
See here:
 
I found my video problems. As far as I can tell I don't receive video packets from the Tello when it is running a machine connected to two networks. I.E the Tello network and LAN or another WIFI network. I think this has to do with multicast udp. I have tried binding the UDP port to the correct ip address which should be the solution and it doesn't make any difference. That's a serious pain in the *** for me because the only two machines I have with Wifi need to stay connected.

Has anyone got video out while also connected to the internet?
 
See here:

Thanks for that! It verifies that it's beeing loaded between 1-3. But what about the other pins? Next stept would be to test if it will fly when only first and third pin are connected to drone. When it works you can build your own batteries and not have to use the expensive ones from dji store.
 
I found my video problems. As far as I can tell I don't receive video packets from the Tello when it is running a machine connected to two networks. I.E the Tello network and LAN or another WIFI network. I think this has to do with multicast udp. I have tried binding the UDP port to the correct ip address which should be the solution and it doesn't make any difference. That's a serious pain in the *** for me because the only two machines I have with Wifi need to stay connected.

Has anyone got video out while also connected to the internet?

Do you have 2 wifi adaptors on your computer, one for Tello, and another for your normal router?
 
Hello

My experience with sniffing out protocols is super basic but I at least downloaded Wireshark and got to the conn_req: part. Then I found this thread and with (a lot of) help from the .Net code shared here I managed to get a liftoff from my own code. Thanks Krag!

My goal is to get video going, write up a little Swift lib for iOS and OS X and hopefully manage to write a small AI pilot that can follow an object around in a room.

I got some data on the video channel but I don't know what to do with it. I would be so happy if npn or bluejune would like to share how to set things up. I read up on ffmpeg, ffplay, h264, SDP, PPS and learned a lot but I have trouble connecting the dots.
 
  • Like
Reactions: deadprogram
Hello

My experience with sniffing out protocols is super basic but I at least downloaded Wireshark and got to the conn_req: part. Then I found this thread and with (a lot of) help from the .Net code shared here I managed to get a liftoff from my own code. Thanks Krag!

My goal is to get video going, write up a little Swift lib for iOS and OS X and hopefully manage to write a small AI pilot that can follow an object around in a room.

I got some data on the video channel but I don't know what to do with it. I would be so happy if npn or bluejune would like to share how to set things up. I read up on ffmpeg, ffplay, h264, SDP, PPS and learned a lot but I have trouble connecting the dots.

Here is lua script for decoding the packets with wireshark.
https://bitbucket.org/PingguSoft/pytello/raw/0ac3573e5f3f35d338776733a7ae4d2baa9a60e3/tello.lua
Paste the codes in Tools->Lua->Evaluate window and press execute.

As I mentioned earlier, the h.264 video stream containing SPS/PPS comes just after sending below packet.
0xcc, 0x58, 0x00, 0x7c, 0x60, 0x25, 0x00, 0x00, 0x00, 0x6c, 0x95
And drop 2bytes from the received video packet, (they are sequence ID) and feed them to ffmpeg decoder.
video resolution with camera mode is 960x720 while it is 1280x720 with video recording mode.

I shared simple python scripts at PingguSoft / pytello — Bitbucket
It just connects Tello and send some commands and save video file. (video is not tested with this script but is tested with Android app)
 
Here is lua script for decoding the packets with wireshark.
https://bitbucket.org/PingguSoft/pytello/raw/0ac3573e5f3f35d338776733a7ae4d2baa9a60e3/tello.lua
Paste the codes in Tools->Lua->Evaluate window and press execute.

As I mentioned earlier, the h.264 video stream containing SPS/PPS comes just after sending below packet.
0xcc, 0x58, 0x00, 0x7c, 0x60, 0x25, 0x00, 0x00, 0x00, 0x6c, 0x95
And drop 2bytes from the received video packet, (they are sequence ID) and feed them to ffmpeg decoder.
video resolution with camera mode is 960x720 while it is 1280x720 with video recording mode.

I shared simple python scripts at PingguSoft / pytello — Bitbucket
It just connects Tello and send some commands and save video file. (video is not tested with this script but is tested with Android app)
OK that is some seriously amazingly awesome work, bluejune. Your library is looking great.

One question: what is the command line you used to view the video with ffplay?
 
Hi, bluejune

What do you mean "some test codes were uploaded"?

Also, what is the ffplay command you are using? I tried just dumping the bytes after skipping the first 2, but that file does not play for me with ffplay. I get the error:

$ ffplay /tmp/tello.h264
ffplay version 2.8.14-0ubuntu0.16.04.1 Copyright (c) 2003-2018 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/u
sr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable
-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enab
le-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enabl
e-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-lib
modplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroe
dinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --ena
ble-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvi
d --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-li
bzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
[h264 @ 0x7f1bd8009280] Format h264 detected only with low score of 1, misdetection possible!
[h264 @ 0x7f1bd8007340] non-existing PPS 0 referenced
Last message repeated 1 times
[h264 @ 0x7f1bd8007340] decode_slice_header error
[h264 @ 0x7f1bd8007340] no frame!
[h264 @ 0x7f1bd8007340] non-existing PPS 0 referenced
Last message repeated 1 times
...
[h264 @ 0x7f1bd8009280] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size
 
Just was able to write a video file, that I was then able to play back in ffplay, basically by requesting the PPS header info every 100 ms. That seems excessive, right?

I think the timing of the various requests might be important, I am going to dig in a bit more. Also, need to figure out how to stream the video with this setup, and not just playback a file. But certainly progress!
 
Just wanted to say that I´m very impressed with what you guys were able to decode in such a short amount of time. I own 4 Tellos and will try to reproduce the code from Krag hopefully tomorrow.
 
Here is the link to my WIP Golang code to capture video from Tello:

hybridgroup/gobot

Once I have the saved video file, I can view it by running:

ffplay /path/to/tello.h264

There are many errors while paying back the resulting file, but it does function.
 
I haven't had any time to work on it last few days. On the video errors; Using the seq numbers can you tell if packets are getting lost or coming in out of order? Or maybe there is extra data in the stream?

If you are setting 10 iframe a second it might just be building the video from those and the rest are just noise.

Edit: I just looked at your code. If I am reading right you are saving out the 0x00,00,00,01 part of the packet. Is that right? If so strip that out before you save to h264.
 
Here is lua script for decoding the packets with wireshark.
https://bitbucket.org/PingguSoft/pytello/raw/0ac3573e5f3f35d338776733a7ae4d2baa9a60e3/tello.lua
Paste the codes in Tools->Lua->Evaluate window and press execute.

As I mentioned earlier, the h.264 video stream containing SPS/PPS comes just after sending below packet.
0xcc, 0x58, 0x00, 0x7c, 0x60, 0x25, 0x00, 0x00, 0x00, 0x6c, 0x95
And drop 2bytes from the received video packet, (they are sequence ID) and feed them to ffmpeg decoder.
video resolution with camera mode is 960x720 while it is 1280x720 with video recording mode.

I shared simple python scripts at PingguSoft / pytello — Bitbucket
It just connects Tello and send some commands and save video file. (video is not tested with this script but is tested with Android app)

Very Nice! A lot of good stuff about the commands I didn't know. Looks like you have almost everything. :)
 
I haven't had any time to work on it last few days. On the video errors; Using the seq numbers can you tell if packets are getting lost or coming in out of order? Or maybe there is extra data in the stream?

If you are setting 10 iframe a second it might just be building the video from those and the rest are just noise.

Edit: I just looked at your code. If I am reading right you are saving out the 0x00,00,00,01 part of the packet. Is that right? If so strip that out before you save to h264.
Hi, Krag

Thanks for the comment. If I skip writing the [0x00, 0x00, 0x00, 0x01] part of the packet, the h264 video no longer plays back due to missing data/errors in the header. In order for it to play back using ffplay, it appears that data needs to be in the file to indicate that it is keyframe data.

The errors in the stream data appear to be "normal" missing packets from UDP, e.g.:

Bash:
[h264 @ 0x7f2970415fa0] left block unavailable for requested intra mode
[h264 @ 0x7f2970415fa0] error while decoding MB 0 35, bytestream 1749
[h264 @ 0x7f2970415fa0] concealing 649 DC, 649 AC, 649 MV errors in P frame
[h264 @ 0x7f297054ef60] concealing 1239 DC, 1239 AC, 1239 MV errors in I frame
[h264 @ 0x7f2970415fa0] left block unavailable for requested intra mode
[h264 @ 0x7f2970415fa0] error while decoding MB 0 27, bytestream 2661
[h264 @ 0x7f2970415fa0] concealing 1129 DC, 1129 AC, 1129 MV errors in P frame
[h264 @ 0x7f2970415fa0] concealing 367 DC, 367 AC, 367 MV errors in P frame
[h264 @ 0x7f29700a66c0] left block unavailable for requested intra4x4 mode -1
[h264 @ 0x7f29700a66c0] error while decoding MB 0 6, bytestream 9784
[h264 @ 0x7f29700a66c0] concealing 2389 DC, 2389 AC, 2389 MV errors in P frame
[NULL @ 0x7f29700020e0] Truncating likely oversized PPS (17444 > 4096)

I suppose I was hoping for less artifacts in the streaming video, but ?
 
  • Like
Reactions: trelo
Hi there! Thanks a lot for your efforts! I am not a dev but I can totally understand the amount of work you have put into this.

I would love an app (preferably iOS) that could:

1) Bypass the 10m height limit
2) Add some sort of face/other feature tracking

Do you think the above are possible?
Thanks a lot and sorry if I am hijacking a highly technical thread.
 
Hi, Krag

Thanks for the comment. If I skip writing the [0x00, 0x00, 0x00, 0x01] part of the packet, the h264 video no longer plays back due to missing data/errors in the header. In order for it to play back using ffplay, it appears that data needs to be in the file to indicate that it is keyframe data.

Then I guess I don't know what the problem is. I had something similar on Mavic and I was able to clean up the errors by stripping that out.

I am not going to be much help on video I am afraid. I tried again last night to get video packets on my dev machines with no luck. I have even found that windows firewall will block the packets if I try to run the .exe from a network share.
 
Hi there! Thanks a lot for your efforts! I am not a dev but I can totally understand the amount of work you have put into this.
I would love an app (preferably iOS) that could:
1) Bypass the 10m height limit
2) Add some sort of face/other feature tracking
Height limit is probably in the firmware so an app won't help. If you want a hack; Its based on a pressure sensor so you might be able to put the Tello in a bag and suck out some air before turning it on to fool it.

There is a good reason for that height limit. If it gets too high you can lose signal. Then it will either just hover out of reach or more likely drift away until the battery runs down.

Face tracking should be possible if we can figure out reliable video.
 

New Posts

Members online

No members online now.

Forum statistics

Threads
5,690
Messages
39,934
Members
17,023
Latest member
Repiv

New Posts