PPM vs SBUS – D4R-II vs X4R-SB

There have been a lot of discussion on using SBUS over PPM for radio receiver. Here we will have a look at the differences and the advantages of SBUS over PPM.

Why SBUS is better than PPM?

PPM and SBUS are both receiver protocols. PPM (aka CPPM) is an old, analogue signal. SBUS is a newer, digital signal.

In a nutshell, SBUS has the advantages of

  • SBUS is faster than PPM and PWM
  • Different Error Handling
  • Smoother, better resolution RC inputs

Delay

PPM have 27ms of delay (delay is defined by the signal width), and SBUS only have 9ms of delay.

In Cleanflight/Betaflight, to prevent signal frame glitching, 3-point averaging is used and therefore the signal delay is tripled (by adding 3 past signals and divide it by 3). So the real delay for PPM is 81ms, and for SBUS this is only 27ms.

About 50ms improvement compared to PPM might not sound like a lot, but it definitely helps! For example for looptime of 1000, each control loop takes 1ms to complete. By going SBUS your quad can react to your stick command 50 control loops earlier. Less delay in RC input will make your quad much more responsive.

Let’s say if your quad was flying at 100Km/hr (62 MPH) which is 27.8m/s, in 50ms of delay, your quad can travel 1.39 meters. That is about 4.5 feet! Wow :D

Error Handling

As mentioned, PPM is analog signal and it more vulnerable to noise, jitter and interference. The flight controller won’t be able to tell if there is an error in the data, because it’s still a valid value (0% to 100%). To prevent that, 3-point moving average is used (taking average of 3 consecutive values). Thus it causes even more delay.

Digital signal such as SBUS has built-in error checking and correction.

X4R-SB vs D4R-II

The most common RX choices for PPM is the Frsky D4R-II, and for SBUS is the X4R-SB.

FrSky-D4R-II-Receiver-PPM-RSSI-quadcopter-Multirotor frsky-x4r-sb-receiver-rx

RX RX Type Channels Delay
D4R-II CPPM 8 PPM or 4 PWM 81ms
X4R-SB SBUS 16 SBUS + 3 PWM 27ms

D4R-II is widely supported by most flight controllers without any additional converter or adapter for both signal or telemetry.

The X4R-SB might require signal inverter for some flight controllers like Naze32 Rev5, or a SBUS-to-PPM converter on the KK2. For using SBUS and Smart Port (S.Port), check out this tutorial.

However on the X4R-SB, it allows you to use the 3 additional PWM channels while running the 16 channels SBUS. So you can hook them up maybe to your servos, gimbals, loud buzzer etc where only accept PWM input. With PPM enabled on the D4R-II, you lose the PWM outputs.

Both RX are similar in price and range (both are marketed range of 1.5Km), binding process and failsafe setup are the same.

Get your Frsky X4R-SB Receiver.

Using X4R-SB (SBUS) on CC3D, Sparky, SPRacing, Dodo, Tornado

For all these flight controllers (CC3D, Sparky, SPRacing, Dodo, Tornado), setup is very simple. All you need is a direct connection between FC and RX pretty much like PPM.

sbus-cc3d-main-port-x4r-sb

With CC3D, just configure the Main Port as SBUS and you have a direct connection with 3 wires only.

Using X4R-SB (SBUS) on Naze32

Because Naze32 Rev5 or earlier boards don’t support the inverted SBUS signal, you need to get an inverter like this. Or you can DIY one yourself. The signal wire goes to RC4 pin, and you then need to configure UART2 for Serial RX in Cleanflight.

sbus-cable-inverter diy_sbus_inverter

You might ask if the inverter can introduce some delay and contradict with the latency reduction benefit. I have not personally look into this but I read somewhere the latency is neglectable, since the inverter is just a fast switching NFET which runs at the speed of micro seconds.

No Inverter on flight controller – Uninverted signal Hack

Even if the delay caused by the inverter is not significant, for a cleaner setup there are hacks you can do on the X4R-SB, XSR, and XM receiver to get rid of the inverter. Link 1 Link2

frsky-x4r-sb-subs-uninverted-hack-naze32 x4r-sb-subs-uninverted-hack-naze32

Latest firmware for X4R-SB

Here is the latest firmware for X4R-SB. Apparently the best firmware is X4R-X4RSB-CPPM:

Binding without the jumper retains the original behaviour, i.e. PWM channels 1-3 and SBUS on output 4.

Binding with jumper turns output 1 into CPPM channels 1-8, outputs 2 & 3 become PWM channels 9 & 10, and output 4 is still SBUS.

Essentially this firmware turns the X4R-SB into a 8+2 or 16+3 channel RX.

Conclusion

This post is not trying to convince anyone to use SBUS over PPM, maybe PPM performs well enough for certain people, and SBUS might make no difference at all. But that is certainly some interesting fact and I can’t wait to test it myself.

53 thoughts on “PPM vs SBUS – D4R-II vs X4R-SB

  1. Povl H. Pedersen

    A standard 8 channel CPPM frame is 22.5ms, not 27 ms.
    And it can be shorter depending on configuration.
    What is required is 2ms per channel + 3ms (standard is 3.5ms) bause between frames. The 3ms is to have an invalid = too long frame.
    So if you run 8 channels, you can do it in 8*2+3 = 19ms. Still way worse than the 9ms of SBUS or 7ms of FlySky iBus.
    Did experiment in my iBus2PPM converter, and in theory there is nothing wrong in running variable length frames. And use a 2.5ms interframe spacing (need to be longer than longest valid) CleanFlight/BF will accept it. That will give you an average PPM frame length of 1.5ms/channel – And with planning 1 ms for the 2 upper channels if they are in value 1000 in flight mode.
    In that case you can get down to 6*1.5 + 2 + 2.5 = 13.5ms average on PPM. But this would require agressive code on the Rx in its PPM conversion.
    I never tested if an interframe value of 0.5ms would work – That would be another invalid value, and would shave 2ms more. Now we have iBus support in BF/CF, this testing was not needed.
    And just like we have Oneshot, it should be possible to speed PPM up even further. Cutting the delay down to half or a quarter. A 16MHz CPU like the Arduino should handle it without sweat.

    Reply
  2. Trevor C.

    Hi Oscar,

    New to all this, but been reading a lot (This site has helped a ton, thank you). My buddy gave me an MRM DragonFly32 F1 Naze32 clone board, and it doesn’t support Sbus, only CPPM. I’m planning on buying a Taranis with the X4R-SB. If i mod the receiver or get an inverter, am I still going to get the benefits of using SBus even though the FC technically doesn’t support SBus?

    Reply
  3. ciphy

    Hi Oscar,

    I wouldn’t say that the delay with a PPM signal is 3 times the delay of a single PPM frame when using the moving average. This average is computed right away when the latest value arrives, the two older ones having been kept in memory. The delay is then the one for a single loop.

    However, using a “MA” filter (moving average) does change the phase of the signal. It introduces a “lag” (different from a sampling delay) which can be analyzed with tools like z-transform and Bode diagram for those who are interested.

    If there’s any signal processing engineer here, please feel free to correct me. I might be wrong/inaccurate :)

    Cheers,
    ciphy

    Reply
  4. LakeWorthB

    Hi Oscar
    So we know that SBUS is 3x faster than CPPM. But has anyone actually tested that the data actually changes 3x as fast, or maybe the receiver runs at a certain rate and sends out the same thing 3 times for every CPPM output?

    Reply
  5. Qwerc

    Hi Oscar,
    My problem is this, it seems that I have only 8 channels on my NAZE32 (rev6)
    I’m using a Futaba T8FG super freq= is enabled on FASST -MLT2 (thus 16 channels)
    My RX is the R6303SB. This means i am using the SBUS.
    If I test this all with Cleanflight (Betatflight) I only can us 4 Aux.
    And not more.
    What is wrong???

    Reply
  6. giuseppe

    Hi Oscar, I had the D4R and it was a flawless receiver aside from the channel limitation. I wanted to use more switches in CF so I picked up an X4R and set things up via SBUS. I’m running a F3 Dodo board. There seems to be some differences with regard to the telemetry I recieve between the 2 recievers.

    Using SBUS/S.Port on the X4R, there is no RPM sensor and the values reported by the TMP1 (temperature) sensor is erratic and is in the thousands. In comparison, the D4R shows a normal value.

    Any idea why this is the case? Where would I find what telemetry is output by any particular board? I would assume the firmware files would have this info but is there an easy way to “view” it?

    Reply
  7. Dave F.

    Hi Oscar,
    Thanks very much for the info, great resource!
    I have the KK2.1.5 FC Flashed to Steveis firmware.
    I also have the X4R-SBUS flashed with new firmware,
    to allow CPPM and/or SBUS, and have also done the SBUS inversion hack.
    Please comment on the following, concerning using KK2.1.5 FC with different TX protocols, as
    the order of preference recommended by Steveis in his KK2 manual, is the opposite of what you Suggest.
    Do you think the differences cancel each other out?
    I read this in the Steveis KK2 manual…
    “Appendix E – Receiver selection
    To achieve the most accurate flight characteristics
    , the order of preference for Receiver selection is
    Standard > CPPM > DSM Satellite > SBUS
    The reason for the above is, the interrupt processing
    that is required to process the receiver channel
    output, increases as you go down the list.
    Interrupts that occur during the software PWM loop that
    generates the output pulses on M1 to M8 need to be
    kept as short as possible to minimise the jitter.
    Standard receivers will cause the least jitter, SBus the most.
    It also causes jitter in the self level calculation,
    resulting in the KK2.1.X knowing exactly which way is “up”.
    If you only have motors and don’t use Self Level, you probably
    won’t notice any issues with SBus.
    If you have servos connected to M1-M6 you will notice some
    jitter with Satellites and SBus.”

    Reply
    1. Donald M

      Hi Dave,
      The SBUS and DSM receivers send binary values that aren’t affected by when they are read (the FC jitter). Standard and CPPM receivers are sending signals that the FC must measure. Jitter adds inaccuracy to the FC measurement, thus causing inaccuracy of the value that was sent.That’s why the Standard and CPPM receivers are processed first – it may reduce the error in the Standard and CPPM reading but will not add error to the DSM and SBUS readings.

      Reply
  8. Julian

    Hi Oscar, any idea where I can pick up one of the 4 pin cables that you’ve used to connect the X4RSB SBUS port to the CC3D main port? My quad came pre-built with PWM and no spare cables. Now that I want to swap it to SBUS I’m a bit stuck. Somewhere local (Hampshire, Sussex or even UK) would be great so that I can be up and running to take advantage of the good weather forecast for Sunday. Thanks! Julian

    Reply
    1. varkokonyi

      Hi Julian

      I bought this. This ships from china, but I have verified that this works for CC3D. I’m in the EU so I don’t know local things.

      Reply
      1. varkokonyi

        Hi Julian

        Sorry, I forgot to attach the link: ebay.com/itm/251979895512?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

  9. DAvid Sipp

    Hi Oscar,
    As many others have stated, This is a great resource you provide. Thank you. I would like to ask you a clarifying question on connecting the X4R to a Flip32 without the inverter. I understand your picture above on the X4R side. I am not clear where the connections go on the Flip32 side. I believe it is pin4. Is this correct?
    Many thanks,
    David

    Reply
    1. Oscar Post author

      in the post i was referring to naze32, not sure if the Flip32 has the same pin layout… yes sbus goes to RC pin 4 on naze32, that’s the UART2 RX

      Reply
  10. Andrei G.

    Hi Oscar,
    great article! If I flash the X4RSB with CPPM firmware, will I still be able to use telemetry on the SmartPort with mt SPRacingF3? I’d like to flash it to CPPM as to have a free UART port, because if using SBUS UART3 is already taken.
    Thanks!

    Reply
  11. Mohammed

    Hi Oscar ,

    Great post , I learnt a lot from your blog I have question related to this topic may be its stupid .. I have X8R and “FrSKY SBUS to CPPM Decoder” and naze so can I get 16 sbus channels as cppm in naze ??

    Reply
    1. Oscar Post author

      Hi Mohammed,
      CPPM can only deal with 8 channels max…
      however i heard you can setup the X8R to output the rest of the channel as PWM on the actual servo pins on the RX? I am not sure as i don’t have this RX.

      Reply
  12. Marcelo Farinon

    Hi Oscar, I got telemetry on X4R receiver using the single wire from receiver and shortered pins 5 and 6 using Clenflight with softserial 1and Inverted signal from CLI. Do you know how is the wiring with CC3D? I have installed Cleanflight on CC3D and enable softserial. I tried all pins without success. Is Naze32 telemetry diferent from CC3D output pins?

    Reply
  13. colby

    The seriously dodo doesn’t have a smart port like the CC3D. Can you add an image of the connection for sbus on the dodo pleasE? Thanks!

    Reply
    1. Oscar Post author

      I reckon this should be similar to how it’s done with Naze32… sorry i don’t have the answer as i haven’t done it myself.

      Reply
  14. Jazzcool

    Hi Oscar, a question about telemetry data for Naze32 rev. 6 and the X4R-SB – would it work like the old D4R-II?
    I usually connect the analog port from the D4R into a soft-serial port on my Naze (rev5). However I see the the X4R-SB has a smart port. So I wonder if I can still tap telemetry data over this or not possible?

    Reply
    1. Oscar Post author

      no X4R-SB telemetry is called Smart Port, you cannot use it directly on the Rev6, you will need some sort of inverter.
      F3 flight controllers has this inverter built-in, so they work out of the box, but not the Naze32 rev5 or rev6 unfortunately.

      Reply
  15. LarryR

    Hi Oscar
    Thanks for all of your info.
    I am late to this post subject, but have a question.
    How can I get RSSI signal out of the x4r-sb.
    Planning a build and want to use a Micro-minim-osd.
    Thanks.

    Reply
    1. EquinoxFPV

      The XR4-SB has a 0-3V RSSI output on the board. I soldered a wire from that point to naze32 rev6 input pin 2. Turned on RSSI ADC in cleanflight GUI and MWII in OSD GUI. MIN value 54 and MAX value 151. Seem to work for me.

      Reply
  16. Hands0n

    Hi Oscar, Would you please put attribtuions/citations in for the information content in the blog post. Particularly where “another forum” is referenced. That would be fantastic.
    Thanks

    Reply
  17. Javier

    Hi Oscar

    Is there any way to have LED controlled by Cleanflight and X4R-SB via s-bus?

    Both are using ch4 so… i don’t know what to do.

    Reply
  18. swishyas

    Do you have any idea if the X4R-SB will work with the Futaba 8j ?
    very useful post , i think ill dumb my ezuhf and fully convert to these now.

    Reply
  19. Eurig Jones

    Hi Oscar. I’ve got an X4R-SB and connecting it via S.BUS to my flight controller successfully. But I’d like to use one of the PWM outputs (for a loud lost model buzzer). Your guide above suggests this is possible. But how and what channels on my Taranis are these available? I could not find anything in the provided manual.

    Reply
    1. Oscar Post author

      If you are using 16ch SBUS from ch1 on RX, ch2 (PWM) should be ch17, ch3 (PWM) should be ch18 etc? (I thought I said it quite clear in the post)

      Reply
      1. sircrashalot

        One can assume most people will bind it in 16. The defaults will be:
        1-3 PWM
        4-whatever SBus (sure 1-3 as well)
        The confusing part is : one can trigger both Channels 1-3 (inputs) via SBus and Channel1-3 on PWM.
        I checked today and it works. Throttle on Input 3 was working fine via SBus and was also triggering buzzer via PWM on channel 3 of X4r.

      2. Eurig Jones

        This is not what is happening. As sircrashalot mentioned here, what I’m finding is that channels 1, 2, 3 on the radio controls first 3 on S.Bus as well as PWM. I should have mentioned this specifically in my initial comment.

  20. JP

    Hi Oscar,

    Are there any issues with using the x4r with the Brainfpv controller? I cannot get the Taulabs software to acknowledge anything I do on my xd9+. Though I may not have it setup correctly. Thanks

    Reply
  21. Randy

    Hi Oscar

    Great post – Thanks for the info! I’m wondering if you could expand this discussion to serial connections like Spektrum Satellite receivers, as I’ve heard they have much less latency than PPM. I wonder how a Spektrum sat only connection compares to SBUS? I recently switched to one of those Lemon-RX diversity satellites for this reason – I’d love to hear from you on it – Thanks!!!

    Reply
  22. matteo

    Hi Oscar

    when I tried s.bus first time, I didn’t notice a big difference….until I went back to ppm.
    It’s like playing online games with no lag, Even arm / disarm is faster :)
    Once you go s.bus, you’ll never go back.

    Teo

    Reply
  23. Tim S

    Hi Oscar, I just bought a 250 quad that has the naze32 rev6 in it. I ordered the X4R-SB to go with my EU taranis X9D, is it correct that I can use sbus with the naze32 rev6 without any adaptations?

    Reply
  24. SprazzZ

    Hi Oscar, you´re right – fried one because of my stupidness (or the beers I had) and rest still in Transit. So Need one urgently and meanwhile I came to the conclusion that 8+3 are way enough channels for a Micro…

    Cheers Clemens

    Reply
  25. Guest

    >You will also need an adapter for its different S.Port telemetry as well.

    It’s more complicated than that, to use SmartPort telemetry on a Naze32, you have to do Frank’s mod: eleccelerator.com/frsky-x4rsb-smartport-hack-naze32/
    And run his Cleanflight fork, which is a year out of date.

    Reply
  26. Marcelo Kron

    Hi Oscar,
    I use the EZuhf in ppm mode… do you have any information if this (uhf) PPM is also slow like the D4R-II all PPM is the same? I can find any were the speed of the Ezuhf in ppm mode.

    Thank you!!

    Reply
  27. Mechamilk

    I moved to sbus after i d burn a d4r2.
    I will never move back to cppm. I really feel the difference, fast response and it seems more precise in little sticks corrections.

    Reply
  28. PaulN

    Hi Oscar,
    I connected a DSMX OrangeRx R620X via CPPM with my Naze32 rev5 and had very inaccurate, jumping values (in Cleanflight) coming from my Dx6 (the new one). The I changed to a Lemon DSMX satellite reviecer, which gets connected directly to the Naze32 (grnd, 3.3V, signal pad 4) and can be bound with some software comands. And wow, I had very precise signal values, which (I guess) help a lot for a smooth flying. Furthermore, the satellite is very small and cheap :)
    Thanks for your work!

    Reply
  29. SprazzZ

    Hi Oscar, this time you´re a couple days late. As I´m ordered a taranis last Weekend I was also wondering what´s the deal about D4R and X4R with and without Sbus. As I live in the EU and try to stay Close to current law (VTX may be doubtable) using EU Firmware was a must and therfore D4R was out already.
    Most sets are sold with the larger ones but finally found one merchant with the “normal” X4R…
    For that I will (obvisously) go with CPPM and I doubt that I will recognise the difference in delay anyways…However more important (maybe) for some Folks will be the additional channels to address with SBus but coming from a 6 channel TX guess I wont miss much.
    Ordered two more “black” ones and the other quads will Sport those then :) we´ll see if we can make use of all those channels.
    Thanks for sorting the differnces out
    SprazzZ (Clemens)

    Reply
    1. Oscar Post author

      Hi Sprazzz, using CPPM is definitely not a lost :) It’s pretty reliable and widely supported… good to have a couple of those RX lying around, you never know when you are going to need one! :D

      Reply
      1. John Hendry

        But if it’s true you eliminate 50ms going to S-BUS… wow that’s a huge improvement for a racing quad.

Leave a Reply

Your email address will not be published. Required fields are marked *

Are you Robot? *

I only check blog comments once or twice a week, if you want a quick reply you can post your question on this forum IntoFPV.com... You might get a faster response from me there (multirotor related only).