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 –


          • Hi, 

            Yes, Thats what I've been realizing. My AC adapters dont get into the monitor mode. I haven't found any sites that to ship the CSL cards to USA though. 

            Do you know of any other rx cards that work in monitor mode in 5.8ghz ? 

            • i got mine through a freight forwarding website

      • Is that the script you are running on your Mac or are you running linux? I saw you were set up on macbook pro in the photos above. 

        • Hi Mike, it's running in a linux (ubuntu) VM in parallels. Video runs just like on a native computer, parallels does a great job.  The CSL adaptors do apparently support osx so possibly it could run natively, when I get a minute I'll give it a go.

          • Hi Fnoop Dogg.

            I am trying to install this on a VM (ubuntu) in parallels but am stuck on the 'Hello_video' part. From what i can work out is that hello_video is a raspberry pi package. How did you get it on ubuntu?



            EDIT - I think i have worked it out, just dont include the last part of the code with the hello_video path in it. I cant test till i set the raspberry pi TX up but fingers crossed 

            • Hi Paul

              Good luck!  hello_video is only if you're using a raspberry on the rx side to display and even then not necessary - you can still use gstreamer with omx and the same autovideosink will probably still work.  My rx script above should work fine for you - note you can just omit references to wlan1 if you're only running a single receiver dongle.

              Do let us know how you get on.

              • Hi.

                Having a bit of a bad time setting this up.

                So i have a fresh install of Ubuntu running on my mac through parallels. Im using your scripts, firstly i run the RX script and it sits there waiting at -

                setting pipeline to paused...

                pipeline is prerolling...

                DLT_IEEE802_11_radio encap

                Then as soon as i run the TX script the TX terminal gives me information about data packets sent, but the RX machine splits out...

                /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, width=(int)1296, height=(int)730, parsed=(boolean)true, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640028ffe1000f27640028ac2b402882efc900f1226a01000528ee025cb0
                /GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:sink: caps = video/x-h264, width=(int)1296, height=(int)730, parsed=(boolean)true, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640028ffe1000f27640028ac2b402882efc900f1226a01000528ee025cb0
                /GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:src: caps = video/x-raw, format=(string)I420, width=(int)1296, height=(int)730, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, framerate=(fraction)25/1
                ERROR: from element /GstPipeline:pipeline0/GstFdSrc:fdsrc0: Internal data flow error.
                Additional debug info:
                gstbasesrc.c(2865): gst_base_src_loop (): /GstPipeline:pipeline0/GstFdSrc:fdsrc0:
                streaming task paused, reason not-negotiated (-4)
                ERROR: pipeline doesn't want to preroll.
                Setting pipeline to NULL ...
                /GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:src: caps = NULL
                /GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:sink: caps = NULL
                /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = NULL
                Freeing pipeline ...

                Any idea?

    • Great results!!!  I've gotta get my hands on those CSL adaptors!!  Please post some videos if you can. :)

      • I think it's the alfa dongle that's the important bit - the tx side needs to be powerful and there don't seem to be many (any) alternatives for 5.8ghz.  The rx adaptors can probably be anything that supports monitor mode and the right frequencies.  The CSL adaptors are cheap and cheerful - I guess they're probably rebranded cheap shenzhen units - but oddly the usb connector is quite slippery and slides out of the laptop easily.  They're not very powerful even at 30dbm and don't run reliably at this level anyway, they keep resetting.  Given a choice I'd take a better made dongle with a single rp-sma.  On the rx side the most important bit is the antennas.  I sure hope amazon will return some of the many boxes of dongles, adaptors and antennas I've accumulated in the past week :)

    • Very useful and timesaving to see the details of your setup. Are you managing to feed your GoPro into this or using a Picam?

This reply was deleted.


Santiago Perez liked Santiago Perez's profile
17 hours ago