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 :)
What's your secret sauce, how are you getting such low latency?
Hmm, that latency is not very good. I've gotten 170 ms latency on my desk over 4G.
So I have been playing around with this solution and got it to work in many different ways and systems (Odroid, Edison, BBB) but so far I am getting only about 50m distance. I have not checked in an open field, so I am wondering what ranges are you guys getting? I am using the TP Link WN722n dongles on two Odroids, and I am using the C920 camera to get the video.
Also I tried just using regular Wifi and I seem to be getting better results, less latency 150ms vs 200ms or more with befinitiv wifibroadcast, and I get a lot more pixelation or lost packets when using the wifibroadcast method than when using just regular UDP. Anyone have similar results?
When you say two wn722n with omni2omni, do you mean the stock antennas that come in the box with the dongles? I can't get more than 50m with these, after I've done the firmware/kernel hack - I assume I don't have to do this on the rx side right? Could you please say exactly what settings you use? I'd like to replicate your 300m with these adapters first before I look at 5ghz.
I have made a little progress with the CSL 5ghz dongles - I can get about 250m before it breaks up and when it does it doesn't recover even when I bring it back well in range. I must be doing something wrong..
Yes, the 300m were with the white omnis that came with the 722s.
I'm finding the same thing, about 50m. With the 5ghz CSL dongles with rhcp spiral antennas I get about 80m. I got nearer 1km with the ubiquiti setup using the same antennas. Has anyone else managed to replicate this system with decent range yet?
I measured the latency with the recursive stopwatch approach and got around 130ms delay on my laptop (https://befinitiv.files.wordpress.com/2015/03/stopwacht.jpg ). All the measurements I made suggested that the latency is comparable to the classical wifi approach. You find a thorough analysis of latency here: https://sparkyflight.wordpress.com/ . And the results with wifibroadcast very almost identical. Maybe the c920 behaves differently...
Some hints how you might archive better latency (all tailored for the raspicam):
- Try using 48fps @ 1280x720. This should have around 130ms of latency.
- Using the low h264 profile also saves some ms.
- Assure that the wifi channel you are using is not occupied. The wifi card still uses CSMA/CA so a busy channel might increase latency.
- Apply my firmware patch (very important) and for a better range also my kernel patch for the WN722N
- Decrease the retransmission block size (-b parameter of both tx and rx)
Hope that helps!