Using SBUS Receiver With Revo

I am using the OpenPilot Revo manufactured by readytoflyquads along with a Futaba SBUS R3008SB reciever. I am attempting to use the SBUS port on the flight controller to send transmitter output to ROSFlight.

I have confirmed that the flight controller and the receiver are communicating via SBUS by flashing the Revo with the ClearFlight firmware available online via the firmware flashing page in ClearFlight. After connecting to the flight controller, I am able to connect my SBUS receiver to the SBUS pins on the Revo, switch to the Transmitter tab, and see my transmitter output in real time.

However, when I flash the flight controller with the ROSFlight firmware, the /rc_raw output is constant and does not change whenever I move the sticks on my transmitter. I have configured ROSFlight to read SBUS by setting the RC_TYPE parameter to 1. I have found that the /rc_raw values only update one time when the receiver and flight controller first connect.

I was able to confirm this by first giving no throttle and connecting the receiver and flight controller. The /rc_raw output shows a low value. After I commanded full throttle, the /rc_raw output values did not change for any of the channels. I then power cycled the receiver, changed the RC_TYPE to 0, and then changed it back to 1. The /rc_raw output now shows the full throttle command, but will not change as I continue to move the throttle. I have been able to recreate this behavior consistently and will all sbus channels.

Are there further parameters which need to be configured to communicate over SBUS with the receiver? Any advice would be much appreciated.

Hi @gjares, welcome to the forum! I’m sorry you’re having this issue. The RC_TYPE parameter should be the only one you need to set. We’ve been successfully using a FrSky XM+ SBUS receiver here with the same flight controller, but I haven’t seen this issue yet. Here are a couple of things that come to mind:

  • After you set the RC_TYPE parameter to 1, are you doing a rosservice call /param_write to save the parameter value to non-volatile memory before power cycling? If I remember correctly, the setting only gets applied correctly after a power cycle, so if it wasn’t getting saved that could explain the issue
  • Just to verify, are you powering the 5V rail on the flight controller with a BEC or some external source? The USB port doesn’t power that rail. Since you’re communicating successfully using the ClearFlight firmware you’re probably already doing this, but it’s probably worth verifying

If neither of those resolve the issue, let me know and I’ll do some more digging.

Hi @dpkoch! I work with @gjares. Just as an update, we were able to fix this problem. It turns out that Futaba receivers use different end bytes for sbus communication then FrSky receivers use. Currently the code looks for 0x00 as an end byte. Futaba uses any of the following as end bytes to indicate a non corrupted packet: 0x4, 0x14, 0x24, 0x34. We’ll open an issue on Github. Thanks for your help and quick response!

Thanks for the update @Kameron_Eves! I’m glad you got it working. Opening an issue would be great, thanks for your good work figuring it out!

For those looking for more information on this topic, the Github issue is here: https://github.com/rosflight/airbourne_f4/issues/51