Navio2 - TBS Crossfire Diversity Nano - PPM/SBUS not working

Situation:

  • I have wired the crossfire nano rx module onto the first position of the servo rail (PPM/SB slot) as the docs show
  • The receiver has power and is bound to my transmitter
    • I pulled it off another working quad in order to connect it here. It has worked very recently.
  • My transmitter (RadioMaster TX16S) is configured with PPM, Channel Range CH1-CH8, PPM Frame 22.5ms / 300us
    • I have also tried SBUS without rewiring anything
  • QGroundControl shows no radio inputs on any channel
  • Servo rail is otherwise functional, motor test works via QGC

This is some of the diagnostic output from the RPi / Navio:

pi@navio:~ $ cat /sys/kernel/rcio/rcin/*
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
pi@navio:~ $ cat /sys/kernel/rcio/status/alive
1

Some things that are not clear to me:

  • How is ardupilot / navio configured to expect PPM vs SBUS vs some other radio input? I see no parameters related to that and I wonder if a default set to an unexpected value
  • How can I diagnose the issue more closely? I’d like to avoid the need for an oscilloscope but I can go to that if I have to.

This seems like a very similar question / problem, but the poster did not get an answer: Navio2 PPM Receiver Input with 6 channel PPM Receiver - #4 by djfitz

Ardupilot version 4.0.3 (latest navio image download, from 2022)

I’ve tried a few more things:

  • A second, completely different receiver - a Radiomaster RP1 (instead of the original crossfire one). This supports only SBUS (normal + inverted).
  • All of PPM, SBUS, and inverted SBUS. Ardupilot says it “automatically discovers” which protocol is in use, so I have not set any parameters or flags when I switch between the two on my transmitter.

When I do switch, these controls jump around once on switch, but still do not respond to any input from the transmitter:

Funny enough, though, with SBUS input, these file descriptors do start responding:

# Throttle High
pi@navio:~ $ cat /sys/kernel/rcio/rcin/ch2
2006

# Throttle low
pi@navio:~ $ cat /sys/kernel/rcio/rcin/ch2
990

# Throttle mid
pi@navio:~ $ cat /sys/kernel/rcio/rcin/ch2
1549

The data is just not getting through to Ardupilot.

So - what’s up here? As far as I can tell, this $200 Navio might as well be a brick if I can’t connect a transmitter to it, unfortunately.

Hi @dronebuild,

Welcome to the forum!

  • Is there any calibration on the QGroundControl? Can you pass it?
  • Is it possible to check your setup with Mission Planner?

Hey @olesia.riman , thanks for your reply! Two parts here:

  • I never did figure out how to get PPM to work correctly, but I did get SBUS to work eventually - the problem I described about “it not getting through to Ardupilot” was actually that I had Virtual Joystick set up in QGroundControl, which was sending RC_OVERRIDE to Ardupilot.
  • QGroundControl does work - calibration succeeds for everything when I use SBUS.

I would still like to figure out how to get the Navio to respond to PPM. That is a different problem.

Since Ardupilot reads from those /sys/kernel/rcio/rcin/* inputs, if PPM RC input doesn’t affect them, that must be something wrong about the Navio or the way the receiver is connected, rather than a problem with Ardupilot, Mavlink, QGroundControl, etc