this is a follow up to @james_pattison great summary
There are some differences between CRSF and ELRS.
ArduPilot 4.1 supports official CRSF and as long as ELRS behaves the same as CRSF it will work.
Current ELRS stable version is 1.x.
With ELRS 1.x RC works fine with SERIAL_PROTOCOL 23 just beware of the way ELRS handles RC channels since it uses compression to save bandwidth.
Telemetry is another story, right now ELRS 1.x only supports a small subset of all CRSF telemetry frames:
- GPS
- BATTERY
- ATTITUDE
- FLIGHT_MODE
OpenTX will be able to discover them and use them as standard sensors.
For this project (passthrough over CRSF) I added custom telemetry frames to the CRSF protocol and shared the specs with TBS who agreed to include it in their firmware. ELRS 1.x does not support this custom extension and my scripts will not work with it!
Now the good news.
I’m collaborating with the ELRS devs to add official ArduPilot support to ELRS 2.x. We agreed on adding dedicated queues for our custom frames which paired with some tuning in the ArduPilot code allowed to have passthrough over ELRS 2.x even on a 50:2 link which is not bad at all considering that the bandwidth is only 125B/s. It’s not perfect, we drop a status text every once in a while and there’s some latency on the artificial horizon but IMO is plain good for a long range setup.
Right now this requires a custom ELRS branch, a custom ArduPilot branch and a custom version of my scripts.
ELRS 2.x will also support device ping frames (not yet in the ELRS 2.x custom branch) allowing ELRS auto detection and auto configuration of the ArduPilot custom ELRS code.
cheers,
Alex