OpenHD - HD video, UAV telemetry, audio, and RC control
github.com
github.com
It's a pretty clever hack, using Wifi without associating, but still using FEC (Forward Error Correction) and mirroring that to allow bi-directional communications for control/telemetry. Also allows RF diversity reception with multiple wifi adapters.
I was experimenting with it for semi-local telepresence robotics for art/experiences. These projects are amazing in how much cheaper/more approachable/hackable they make all this vs. analog or proprietary digital video transmission.
I'm not sure if OpenHD is directly related to WifiBroadcast/ I haven't had a chance to play with it yet (been meaning to for 6 months+), but it's at least using similar approaches with wifi (mis)use.
There have also been some attempts to use the same approach with esp32 (etc) in a compatible way, though the link eludes me currently.
(1)https://befinitiv.wordpress.com/wifibroadcast-analog-like-tr...
A zoom or webRTC video call's latency ought to be 110 ms glass-to-glass.
The fact it isn't highlights design deficiencies at every level of our current OS stacks.
Common 4G link latencies are 15-30 ms. With fast cameras and displays we can get sub-50-ms glass-to-glass over 4G.
For sure something like this should easily get lower than 110 ms, if care is taken to use fast cameras and displays.
The cameras, displays, and interfaces used are certainly a factor in the overall glass to glass latency. There are also issues of codecs and hardware accelerated decoding/encoding of video.
Where “just use 4G” misses the point though is that this system is connectionless and the FEC that comes with that introduces some latency as well. This could probably be optimized somewhat as well.
The trade off with this type of system though is that you don’t 100% lose video for a considerable amount of time if the link is broken. When a two-way radio link is broken there is considerable latency waiting for the connection to be reestablished.
This is a very very rare example of someone not assuming the now-classic role of connectivity being an access point plus clients, and it's for such good, such a basic advancement.
Both AirDrop and Nearby Share have captured the market on another form of local connectivity, but both rely upon deep deep integration with centralized identity service, both are locked to a very limited set of OS'es. Yet both are built around semi-standard specifications that few others have tapped or tried to use. That used to be wifi-p2p or the proprietary-itized Wifi Alliance wifi-direct spec, but now there's also Neighbor Aware Networking (wifi-nan), which is yet another amazing capability basically untapped except by a couple remote few.
We just need more torchbearers. wifi-p2p has been semi usable by anyone, but never gotten far. neighbor aware networking alas has been a proprietary thing, only accessible to the paid up expensive Wifi Alliance members, what a waste. but trying to re-assess, trying to advance connectivity, beyond the narrow spectrums, beyond the deliberate, small bounds we have wifi connectivity now: it seems like such an obvious moral imperative. and, as shown here, there are some sincere technical advantages to exploring the alternatives. not relaying all traffic through a central access point can be a good boon. yet that's where we've been morally stuck. i think we need to stop relying on products & software, need to do like these chiefs, & advance ourselves.
beyond the latency advantage, i would love so much to have some means to hail & open ports to those nearby & about me.
Two questions I have - what is the video latency for this system versus a DJI FPV system? And how many devices can be supported concurrently from a single access point?
It would be exciting if this tech could evolve to support “crowded fields” for FPV races.
Open.HD latency testing thread: https://www.rcgroups.com/forums/showthread.php?3154184-Open-...
If a codec can tolerate just a few percents of arbitrary bit errors without completely garbling the image, you can slash the bandwidth many times even with a youtube level HD quality.
With a real-time feed used for command and control of something like a fast moving aircraft in close proximity to objects, you have the opposite situation - you want maximum reliability, clear and predictable degradation, and fastest recovery, even if it comes at the cost of clarity or bandwidth.
They’re literally working to opposite goals.
And here is a 4.5mbit vs 2.5mbit comparison: https://youtu.be/WrMAHqCEGqY
Would this be able to broadcast a video which multiple clients could playback in sync? In the 90s, when you were watching TV, if you had a TV in the kitchen and a TV in the living room, if both were tuned to the same channel, they'd play back exactly in sync. Would this project enable something similar?
Basically this is because all modern displays have a digital path from their (primarily digital) inputs which always (even if it’s “disabled”) includes signal processing to convert the incoming signal (of varying resolutions, refresh rates, color spaces, etc.) to signal(s) which can be sent to the LCD (either through the TCON embedded in the side of the LCD or through some custom ASIC that directly generates the analogue waveforms to drive the matrix of Liquid Crystals), backlight driver(s) (because artificially-measured contrast ratio numbers can be seriously enhanced for marketing), audio outputs, etc.
That’s on top of the extra image processing features that many TV’s advertise (“smooth motion”, “200hz”, etc.) which generally require the video DSP to buffer one or more frames to perform the processing (and maybe generate intermediate frames). These additional features can often be disabled by enabling a “gaming mode” which is (usually) designed to reduce perceptible input latency but this is not always implemented correctly by the manufacture and most reviewers don’t perform end-to-end latency measurements so there’s not much incentive for manufacturers to do much better than “ok”.
Analogue-only CRT TVs didn’t have nearly the same complexity (or features) in their signal processing and could reliably be trusted to display a given input with a minimal delay, mostly due to the fact that they didn’t have any (significant) form of memory to buffer signals for processing.
If I recall correctly, there was an era in analogue broadcast where the signal that was generated in the studio broadcast camera became the synchronisation signal for every TV that was tuned to that channel which essentially means that a TV tuned into that broadcast would actually scan the electron beam across the CRT at exactly the same rate and time as all the other TVs on the same channel. This required careful signal design to ensure that a “cheap” TV with poor timekeeping could still synchronise its operation with the incoming signal but it was far more practical/affordable than trying to buffer an entire frame given the technology at the time.
To answer your question directly, it might allow you to have synchronised broadcast to multiple TV’s but it may require playing with the output resolution/refresh rates of your OpenHD receiver and with the settings on the TV (try looking for a “gaming” picture preset).
I also considered using a USB LTE adapter and just push the video with RTMP which would make the entire setup much less complex (although with some data charges) but coverage is a bit of a problem in rural areas where I normally fly.
Edit SOmeone reported it's not a dedicated openhd room. But anyway, lotsa peoples working on DIY HD FPV system there. Come join the brainstorming and the fun :)
Typical latency doesn't seem to be listed. Although the connection latency is probably low enough, I'm curious about the video encoder / decoder latency.
https://www.quadcopters.co.uk/dji-hd-digital-fpv/iflight-suc...
The silver box and the camera are the relevant parts, the connection to the other PCB is just to receive telemetry from the flight controller.
Edit: better link to the actual unit itself:
https://www.buildyourowndrone.co.uk/caddx-fpv-air-unit-micro...
Also check out INAV if you want to build a more DJI-style drone, this would be the Flight Control software: https://github.com/iNavFlight/inav
Other FC software include ArduPilot for more of a groundstation approach, while Betaflight, EmuFlight, and similar FC software are what FPV race, freestyle, and cinematic pilots prefer.
Also, Ardupilot blows INAV completely out of the water for reliability, at least for fixed wing craft. I've switched all my planes to it from INAV.
The biggest issue is that this usually happens during automatic modes, which are things like "return to home", which you usually use when you've lost control or video and you really want RTH to work reliably. I can't risk a plane falling onto a car or person, so I use ArduPilot, whose auto modes are impressively accurate.