3+km HD FPV system using commodity hardware


Over the last couple of months I have been working on a project that might be of interest to you: https://befinitiv.wordpress.com/wifibroadcast-analog-like-transmission-of-live-video-data/

Basically it is a digital transmission of video data that mimics the (advantageous) properties of an analog link. Although I use cheap WIFI dongles this is not one of the many "I took a raspberry and transmitted my video over WIFI"-projects.

The difference is that I use the cards in injection mode. This allows to send and receive arbitrary WIFI packets. What advantages does this give?

- No association: A receiver always receives data as long as he is in range

- Unidirectional data flow: Normal WIFI uses acknowledgement frames and thus requires a two-way communication channel. Using my project gives the possibility to have an asymmetrical link (->different antenna types for RX and TX)

- Error tolerant: Normal WIFI throws away erroneous frames although they could have contained usable data. My project uses every data it gets.

For FPV usage this means:

- No stalling image feeds as with the other WIFI FPV projects

- No risk of disassociation (which equals to blindness)

- Graceful degradation of camera image instead of stalling (or worse: disassociation) when you are getting out of range

The project is still beta but already usable. On the TX and RX side you can use any linux machine you like. I use on both sides Raspberrys which works just fine. I also ported the whole stack to Android. If I have bystanders I just give them my tablet for joining the FPV fun :)

Using this system I was able to archive a range of 3km without any antenna tracking stuff. At that distance there was still enough power for some more km. But my line of sight was limited to 3km...

In the end, what does it cost? Not much. You just need:

2x Raspberry A+

2x 8€ wifi dongles

1x Raspberry camera

1x Some kind of cheap display

Happy to hear your thoughts/rebuild reports :)

See you,


You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


    • awww nice, then I can get at least a battery meter on screen when I figure out how to read it into the pi from my naze32! :)

  • This will work with 5ghz.  However you'll have to perform an antenna mod for the 5ghz version of the tplink card to get decent range.  Surprisingly Alfa 5ghz to Alfa 5ghz does not work without crazy packet loss.  I'm seeing good results with 2.4ghz using diversity and expect to get similar results with 5ghz after performing the mod.  Right now I'm experiencing an average 140ms latency (measured using stopwatch).  Some people (perhaps with limited experience) say that this is not low enough for fpv racing.  However, in my experience I do not feel the lag at all.

    • Just saw Tobias' comment about the CSL 5ghz card. Is there anywhere that sells this card in the US? Also, does this work in monitor mode on Linux?
  • So, I finally got the TL-WN722N cards, and I got it to work. The problem for me initially was that the delay was huge, about 10 seconds... but I changed the script in tx, for raspivid I changed to -b 2000000, and then the delay was minimal, but I don't know how to test the exact delay amount...

    Now that I got it to work... the next thing that I want to do for it is add OSD, is that possible?

  • I just got it to work on 5Ghz


    TX: Pi2 with standard rpi camera module + http://www.amazon.co.uk/gp/product/B00PKABAI6?psc=1&redirect=tr...

    RX: Pi2 with HDMI to TFT + http://www.amazon.co.uk/gp/product/B00PKABAI6?psc=1&redirect=tr...

    I started with a clean raspbian image on both pis and then followed the instructions from befinitiv written up here: https://befinitiv.wordpress.com/wifibroadcast-analog-like-transmiss...

    To start tx and rx I used nicegraham's scripts from here: https://gist.github.com/nicegraham/b0b564173a100e206163

    I modified them to CHANNEL=$1 so I can pass the channel number as argument. E.g.: ./send.sh 36

    with sudo iw reg set GB I managed to get it to transmit and receive on channels 36 to 48. On channels 52 to 108 tx works, but rx doesn't. With reg set BO 52 to 62 tx works, rx not, on 149 to 165 tx&receive works. Channels 36 to 48 for GB setting are in the range from 5.18 to 5.24 GHz. ImmersionRC is from 5.74 to 5.86GHz. So using the legal GB channels 36 to 48 wifibroadcast should work fine even with other FPV flyers around.

    I am very happy to have it working on 5Ghz now so I can still use my Taranis and don't have to bother with openlrsng. I tested with my taranis right next to the groundpi and couldn't see any effect on the image quality. I also tried the dongle on the 2.4GHz channels. Wifibroadcast also worked but the image quality was much worse. On all the working 5GHz channels I found I had a crystal clear image. I noticed the quality was improved by having the two antennas at 90 deg to each other. I.e. one antenna -45 deg to horizontal and one +45deg. At the moment I used the rubber duckies that came with those dongles.

    befinitiv, do you think adding a second dongle on the rx would further improve things? These already have dual antennas. But maybe it would allow extra range? At <13 pounds I might try this out.

    • Hi,

      I'm stuck with the CSL, could you share the script you use to make it works over 5GHz please ?

      Thanks :)


    • Awesome, thanks for being the guinea pig Tobias :)  Do these work plugged straight into the raspberry?  There's a comment on the amazon page that says they have to plugged into a powered usb hub, which would make them difficult to use on a uav.

      Are they RP-SMA male or female connectors?  Ie do the gold connectors on the usb stick have a hole or a pin? (hoping/assuming pin, like most adaptors).

      • I already had two of these CSL dongles at home. I purchased them because they are cheap, dual band, and work out of the box on raspberry pi. That these dongles can be used for FPV is a plus. I tried them before buying the TL-WN722N adapters befinitv is using. Everything seems to work out of the box. Just plugged them into my pi and followed the guide from befinitiv here: https://befinitiv.wordpress.com/wifibroadcast-analog-like-transmiss...

        How good the CSL dongles are in terms of range remains to be seen. If I have time tonight I will mount the transmitting pi near my upstairs bedroom window and walk down the road with the receiving pi.

        I have also ordered one more dongle to see if having two of these on the receiver will help.

        I am using the new pi model 2. I have not noticed my pi crashing with wifibroadcast sending. The transmitting pi was powered from a USB cable from phone charger, the receiving pi was powered from a lipo via a 5V/5A UBEC (servo cable plugged into the GPIO pins, +5V on pin 1, GND on pin 3, like shown on the picture here: http://dev.ardupilot.com/wiki/companion-computers/raspberry-pi-via-...).

        Wifibroadcast – Analog-like transmission of live video data
        Wifibroadcast is a project aimed at the live transmission of HD video (and other) data using wifi radios. One prominent use case is to transmit camer…
      • OK sorry you can just see in one of the pictures it's female RP-SMA.  Great news, I can use all the bits I just ordered wrongly for the 722n adaptors :)

        If you could do a line of sight range test, that would be really cool.

    • Excellent work Tobias

This reply was deleted.