Many thanks to @rc89 for providing your solution! You ended my two day journey to getting Frsky passthrough (and standard) SmartPort telemetry working with my R-XSR receivers. I have a plane with a Matek F405-WING flight controller, and a quad with a Matek F405-CTR flight controller (now discontinued I believe) that I was able to get Frsky S.Port telemetry running with R-XSR receivers by bridging jumpers.
–For R-XSR with Matek F405-WING–
I contacted Matek and they advised I solder across a resistor to fix the telemetry. They said that these resistors exist for I/O protection but R-XSR recievers do not function well with them. To fix this, simply solder across the correct resistor for your UART selection (either for TX1 or TX6) according to the following picture:
When connecting the R-XSR make sure you solder to the UNINVERTED SmartPort (labeled P on the board). The uninverted S.port will connect to either TX1 or TX6 on the F405-WING.
Ardupilot settings (same as what is listed in Matek website) where “x” is either 1 or 6 depending on which port you choose:
SERIALx_BAUD 57
SERIALx_OPTIONS 7
SERIALx_PROTOCOL 4 or 10(for Yaapu)
–For R-XSR with Matek F405-CTR–
The same resistor I/O issues exists with this board, but I am not 100% sure which resistor is needed to fix the issue. To be honest I just started shorting every tiny component on my Matek F405-CTR board with a pair of tweezers until the telemetry started working. I connected the UNINVERTED SmartPort on the R-XSR to TX3 (Serial 1) on the flight controller. I wish I knew which exact resistor fixed it, but I do know it was in this general area:
And for whatever reason after the Frsky telemetry starting working once with the tweezers, it continued working even with powering off/on the flight controller. I can only imagine I fried something on the board with the tweezers… That being said, I RECOMMEND YOU REACH OUT TO MATEK IF YOU ARE WORKING WITH A MATEK F405-CTR BOARD. It is not worth frying your board without knowing which resistor it is to short. I simply got lucky. Many of the components will restart your board if you short them.
Ardupilot settings:
SERIAL1_BAUD 57
SERIAL1_OPTIONS 7
SERIAL1_PROTOCOL 4 or 10(for Yaapu)
–“Fixes” that did NOT work–
I also want to clarify a few things that will NOT help with telemetry with Frsky receivers with Matek F405 flight controllers (at least from my testing):
–Using external inverting/half-duplex hardware (homemade MAX3232 RS-232 to TTL converter cable). The issue is not related to signal inversion, at least as long as you wire up your R-XSR receiver as @rc89 and I have detailed.
–Soldering a diode between TX and RX uart pins. This did nothing to make the signal work. I think this tries to create a half duplex with the UART, but setting SERIAL1_OPTIONS 7 should do this from the software side of things already.
–Swapping around UART outputs. I tried nearly every UART on my Matek F405-WING and nothing changed between them. If it is going to work I think it will work on whatever port (even the ones Matek doesn’t suggest).
–Switching to F.Port firmware. This did not fix telemetry. My RC commands were working as expected which was interesting though. I bet shorting the correct resistor will make this work though.
–Firmware changes. I run my QX7 transmitter and all receivers (all ACCST) with the “history” firmware provided by Frsky’s website. This is the Frsky firmware before v2.0.0. These firmwares should be numbered with a date as opposed to a version number.
– If SERIALx_PROTOCOL 4 doesn’t work, I can almost guarantee SERIALx_PROTOCOL 10 won’t work either. I wasted a lot of time trying either one hoping for some sort of change. Also, don’t forget to “discover new sensors” on your Frsky transmitter.
That about sums it all up. I hope this information is useful to someone (or if nothing else me in the future when I forget all of this). Moral of the story is that Matek is able to help you determine which resistor you need to jump if you just email their support line.