As part of a modding/tuning excercise I disassembled the radio. I used this opportunity to measure this radio’s latency properly, using test equipment.
Tl;dr: the best-case latency observed was 13 ms, the worst-case was slightly over 43 ms. The typical was between 25-35 ms. Not great, not terrible.
Receiver’s PWM frequency
First off, the R7FG receiver’s PWM cycle time is 17 ms, or slightly below 59 Hz. This is kinda expected – the receiver has to work with everything out there, not just the latest digital servos. On the other hand, this already sets some expectations regarding the system’s latency.
Latency measurement
To measure the latency, I disconnected the throttle’s potentiometer on the transmitter, and connected a signal generator in place, toggling between 1.5 V and 2.2 V with a repetition of 1 Hz. The radio parsed this as “neutral” and “breaking”. The same 1.5-2.2 V signal was fed to CH2 of an oscilloscope (purple trace), and a trigger was set on the falling edge of it. CH1 was connected to the receiver’s appropriate output.
SIG GEN --*--> RC6GS throttle pot ~~(radio link)~~> G7FG receiver
| SCOPE CH1 (yellow) <-----------------/
\--> SCOPE CH2 (purple)
Best case, 13 ms:
Worst-case, slightly over 40 ms:
Latency periodicity
While staring at the oscilloscope screen I noticed some periodicity in the latency, wandering between the low- and high end. A possible explanation is if the transmitter’s transmit period is slightly higher than the receiver’s PWM frequency.
The transmitter itself has no SMA/IPEX/similar antenna connector, the coax cable is soldered directly onto the unshielded circuit board. The easiest way to verify the transmit period is by an sdr dongle:
I don’t know what Radiolink means under FHSS, but here you go. The transmitter transmits with a period of 20 ms.
Sidenote: this is obviously a bad implementation, the PWM should lock on to the 50 Hz of transmitter. It seems the transmit takes ~10ms, reading the transmitter pot + parsing the received frame takes ~3ms (hence the 13 ms minimum observed delay). Having a digital PLL locked to the transmitter’s 50Hz, the latency can be controlled to be in the 13..33 ms range (instead of the 13..40+ ms), and the average in the middle (23 ms) instead of current average around 30 ms.
Conclusion
When playing with a video game at 60 fps, you’ll see the current frame, meanwhile rendering the next frame, reacting to all your actions on the previous frame. All your actions have an at least one frame of delay (and average of 1.5 frames). So the average latency at 60 fps is 25 ms while the worst-case is 33 ms.
The typical 30 ms latency shown by this test is not a deal-breaker. It’s like playing Counter Strike at 50 fps. The variance of this latency is a tiny bit more worrying, but nothing too shabby at my current skill level. Based purely on the measurement data, this radio is a keeper.
On the racetrack though I noticed some odd (infrequent) glitches. It can be radio-related (lost frames, interference, etc) or something completely else (me being a novice). For now I don’t want to blame the radio for sure.