Long-distance video streaming

I’ve done a fork (but it is more like complete rewrite) of wifibroadcast which is compatible with qgroundcontrol video format and provides much less latency due to direct RTP encapsulation to IEEE80211 frames. It supports RX diversity with any number of RX cards. Also you can stream (one-way) mavlink packets to ground station. GitHub - svpcom/wifibroadcast: Transmitter and receiver of UDP packets using raw WiFi radio

2 Likes

This is awesome! Can we make the Mavlink connection unidirectional?

Yes, you can use wifibroadcast as unidirection transport for udp-encapsulated mavlink messages

Excellent.

Would you be able to make a PR to PX4 Devguide on how to set up a reference implementation? Let me know in case you need an help.

I’ve found WiFi broadcast to be very nice, and your fork seems to have made it much easier to integrate.

@mhkabir i’ve created a pull request. https://github.com/PX4/Devguide/pull/84

Thanks, good stuff. Did this 10 years ago :slight_smile:
You should also look at using multiple slices and investigating Fragmentation-Unit A (FU-A) mode in RFC3984. Another optimization is to get your slices to fit in one MSDU

Definitely will check this out, and thank you for the great work.

Hey @jfd, did you ever experiment with this?

I’d love to hear more about the optimizations that you referred to.

1 Like

@mhkabir @jfd I’ve wrote a new major release with support of video streaming and bidirectional mavlink telemetry with RX and TX diversity. I.e. you can use array of directed antennas on ground station and WFB will automatically select TX antenna according to RX RSSI. Setup HOWTO. Feedback are welcome :slight_smile:

Hi Vasily, thank you very much! I’ve been following the thread (watching on github). I’m working on a new Wi-Fi Bridge replacement for ESP8266 using Broadcom Wi-FI and will take a look at this next. Have you looked at a 2x2 radio like BCM4356 with an ePA (1Watt output power)?

If it use 80211 softmac and supports packet injection (via radiotap) it should work. But need to test because packet injection can be disabled in firmware.

That’s great, I will be picking this up in the new year. Have you see the Yuneec E90 Gimball? This gimbal has 20MP camera, uses an Ambarella H2 Module, and it does use standard RTP/RTSP for streaming … I’d like to adapt this as a source device but we’ll have to make the Wi-Fi work in monitor mode. On the downstream side, I have BCM4356 2x2 with ePA (1W) which would be great for range with a Pagoda antenna.

I didn’t find any API specs on their site. It seems that is only compatible with Yuneec copters.

That’s true. The default firmware supports a MAVLINK over serial with camera control. The H2 module has Ethernet and Wi-Fi and brings up a 5Ghz softap for TX to the ground. Take a look at this, about all I have for now

https://developer.yuneec.com/documentation/introduction/custom-payload

It would be good if there was an embedded Linux SDK and then we could just make our own kernel image.

@hamishwillee Hi, could you review and apply https://github.com/PX4/Devguide/pull/723 ?

@svpcom
Thank you for your great contributions.
I am interested to have long range multiple video streams (multiple drones) to the same QGC, but I am not sure what is required in terms of hardware and software to do that. Any hints would be appreciated.

Thank you.

For long distance video streams with multiple drones you need to use separate frequency channels for each drone or you got a lot of collisions. If you plan to use stock wifi hardware you need separate card(s) for each drone and separate antennas or connect each card with frequency filter to common antenna(s). If you plan to use it in urban environment the most preferable (cheap) way may be to use LTE(4G) modems for communications.

@svpcom Thank you so much for the feedback. What cards and antennas would you recommend?

@Mzahana
It depends how long is distance and how many drones will you have. For long distance lower frequency is preferred (according to Friis equation). For many drones - 5.8GHz due to available many independent frequency channels. In my setup (one drone and ~1km range) I use rtl8812au based cards in 5.8GHz mode with circular polarized antennas. Pagoda on drone and pagoda + triple feed patches on ground station. Ground station have six patch antennas each for 60 degrees sector of horizontal space + two omnidirectional pagodas for near communications.