Passthrough telemetry over CRSF (crossfire)

@vierfuffzig, @andyp1per and I played with DMA on the omnibusf4pro (really need to thank Andy for helping me out on this) and we can state that DMA is a requirement for CRSF to work at full speed.
The MatekF405-Wing suffers the same lack of available DMA streams, if you check

build/MatekF405-Wing/hwdef.h

after running

./waf configure --board MatekF405-Wing

you’ll see that the DMA resolver cannot find a dma stream for any UART except for UART1 (UART2 has the NODMA directive)

// Note: The following peripherals can't be resolved for DMA: ['UART4_RX', 'USART6_RX', 'USART3_RX', 'UART5_RX']

thanks @andyp1per and @yaapu for persistently tracking this down. if i understand this right it might not be easily resolvable though and limit full speed crsf support to a single uart on quite a few boards though…?

@vierfuffzig well yes, at least for F4 an F7 boards, CubeOrange (H743) on SERIAL4 (GPS2) has TX DMA disabled but I get 160Hz no problem whereas on a kakute F7 dma is required on both TX/RX to get 160Hz

hello.
could you build a version for [F35Lightning] board.

Hi, please check version 0.9 here it has an F35lightning build

Alex.

Hi all,
I updated the test builds, version 0.9 is available here

This version has better rf mode detection and it’s compatible with the crossfire lua parameters script.
On non DMA uarts telemetry works fine but the crossfire lua script is kind of slow in getting the parameters from ardupilot, not much we can do about this.

I tested it with crossfire fw 3.72 up to 4.08 on a Micro TX V2.
It requires a newer yaapu script, version 1.9.1 beta1, download from here

cheers,

Alex

1 Like

Hi Alex,

Thanks again so much for your efforts here. These enhancements really do make ArduPilot more fun to fly!

I saw that you now have a “pr” version of the pr in addition to the test one. Is that the one we should be building off of if we’re building ourselves, or would you prefer we stick with the “test” one?

Thanks again so much for everything!

Josh

PS Any word back from Remo on Tracer supporting this enhancement?

Thank you, Alex.
I’ll try it.

Hi Josh,
right now the pr version is identical to the test one, I have distinct branches so I can change the pr one without affecting testing. You can compile either one.
No feedback from Remo about the tracer. Did you ever have success with it?
You should use serial protocol 23 and hopefully get RC + telemetry, use a UART with dma enabled.

Edit: The TRacer manual says it has a single rf mode (up to 15 miles in “rural” environment), and fw versioning is distinct from the TBS legacy one. I’ll need for sure a way to detect tracer vs tbs and change the way I handle rf mode switching

No success.

Can you confirm which UART I should be using for normal CRSF on CubeOrange?

Hi Alex,
I have tested Your last version compiled from Your test branch ( ff56022 ).
I tested it with crossfire fw 3.72 on a Micro TX V2 - yaapu script, version 1.9.1 beta1.
Settings same as at the last test.
Working fine at distances over 1000m.
Just missing the “Air Speed” :smiley:
Cheers, Markus

Thanks Markus, your feedback is really welcome!

Missing “Air Speed” because you do not have the separate indicator for both groundspeed and airspeed (like when using the MavToPT firmware) correct?

Hi Josh,
Telem1 and Telem2 are fine, don’t use GPS 1 (DMA on RX is disabled), GPS 2 has DMA only on RX but in my testing CRSF works fine @160Hz, so to recap:

  • telem 1
  • telem 2
  • gps 2

Alex

1 Like

Thats correct. The "Airspeed" was only implemented at the "Plus Version" from Erics MavlinkToPassthru.

  • 0x50F2 VFR_Heads Up Display

Cheers, Markus

OK, I’ll be able to get that from scripting as soon as the frsky scripting PR gets in.
Telemetry data injected from scripting will work for both passthrough over frsky and over crossfire.

Sounds great.
Kind of side entry. Is it possible to get a FrSky Sensor like this http://www.vspeak-modell.de/de/ecu-konverter to the scripting? So far I didn’t find the possibilty to input FrSky sensors to the Ardu telemetrie.

This is already possible with user sensors on my Widgets/Scripts but only with frsky telemetry, no way to make it work for crossfire if this was question

This was the question.
So the “old” way for the turbine jets and the “new” way for the EDF jets. :smiley:.
Very nice for me.

Hi, couple posts back

Alex

Hi Alex,
today I have a issue where I need Your help.
I installed Your latest test build, version 0.9 at a pixhawk1.
Firmware from crossfire is 3.78 on TX and microRX.
Connection is ok and the RC signals are working. So far I all relevated setings on the PH should be right.
Now the RCInput should decoding the CRSF.
I get the message “CRSF:requestig RX device info”
So the system try this about 30 times, followed by the message “CRSF: RX device ping failed” and “CRSF: custom telem init done, fw 0.00”.
At another plane with a PH1 it working well.
Any idea which direction I should go?

Cheers, Markus