Hello, I have a Radiomaster TX16s transmitter and a Radiomaster ER8GV 2.4 GHz ELRS receiver. The RX has a connection for CRSF on the side. I connect this connector on the Pixhawk 6x with Telem3 (Serial5). VCC to pin 1, GND to pin 6, TX and RX cross-connected. Parameters in Mission Planner SERIAL5_PROTOCOL = 23, RSSI_TYPE = 3, SERIAL5_OPTIONS = 0 . Save the parameters and then reboot FC . The transmitter has no connection to the FC, and I cannot calibrate the transmitter. What is wrong?
Peter
Pixhawk 6x, Firmware V4.5.7, Mission-Planner, Radiomaster TX16S II ELRS, Receiver ER8GV 2,4 GHz ELRS
By default PX4 doesn’t support CRSF protocol, You have to modify the firmware, refer to this documentation - CRSF Telemetry (TBS Crossfire Telemetry) | PX4 Guide (main)
So I have done this, and I can get my Pixhawk 6x to respond to the first 12 of the 16 channels in my transmitter, but not to the remaining 4. When I look at the RC_CHANNELS stream in the MAVLink Inspector in QGroundControl, it shows “chancount” is 16, but only the chan1_raw through chan12_raw values are affected by the transmitter. On the TX side, the mixers monitor does show changes on channels 13-16 as I move the configured switches. I have dug into the PX4 source code a bit, and it looks like there are two places where CRSF RC inputs could be handled. One is in src/lib/rc/crsf.cpp, the other src/drivers/rc/crsf_rc. I’m still messing around with that, but if someone could lend me a clue …
Some more info. It looks like the driver in src/drivers/rc/crsf_rc is being built, so at least that bit of code is probably in the executable(s). Also, I opened up the “MAVLink Console” on QGroundControl and ran
nsh> crsf_rc status
INFO [crsf_rc] UART device: /dev/ttyS1
INFO [crsf_rc] UART RX bytes: 871987
INFO [crsf_rc] Telemetry: yes
crsf_rc: cycle interval: 33389 events, 4312.96us avg, min 4038us max 106463us 2884.571us rms
crsf_rc: publish interval: 33390 events, 4312.57us avg, min 4038us max 106521us 2882.870us rms
Disposed bytes: 16
Valid known packet CRCs: 34192
Valid unknown packet CRCs: 0
Invalid CRCs: 1
Invalid known packet sizes: 0
Invalid unknown packet sizes: 0
so I am fairly convinced that I am doing some things right.
Another useful tool I found rooting around in the “MAVLink Console”:
nsh> rc_update status
Running
# MIN MAX TRIM DZ REV
0 1001 2000 1500 10 0
1 1001 2000 1500 10 0
2 1001 2000 1500 10 0
3 1001 2000 1500 10 0
4 1011 1988 1499 10 0
5 1011 1988 1499 10 0
6 1011 1988 1499 10 0
7 1011 1988 1499 10 0
8 1000 2000 1500 0 0
9 1000 2000 1500 0 0
10 1000 2000 1500 0 0
11 1000 2000 1500 0 0
12 1000 2000 1500 0 0
13 1000 2000 1500 0 0
14 1000 2000 1500 0 0
15 1000 2000 1500 0 0
rc_update: cycle: 139727 events, 2177695us elapsed, 15.59us avg, min 7us max 1420us 34.727us rms
rc_update: cycle interval: 139728 events, 4257.34us avg, min 4037us max 106521us 1508.773us rms
rc_update: valid data interval: 130270 events, 4542.60us avg, min 4043us max 19506us 1586.830us rms
Well, I think I found the problem. On my transmitter, the switch mode was set to “wide”. That gives me just 12 channels!