PPM vs SBUS – D4R-II vs X4R-SB

by Oscar

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.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

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


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.


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.


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.

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.


Jeff Lau 26th June 2022 - 4:19 pm

regarding the connection, seems no one can help me out, I have a Futaba 18MZ and R7008SB RX, I tried to connect the 7008SB into Dragon Link TX via Sbus connect. followed all the wires connection but didn’t work, Read thru Futaba 18MZ manual there isn’t any switch I have to turn on the sbus function. There is a guy on Youtube using R7008SB but with Futaba 14SG TX worked as a repeater, shoot him question but no answer ………..! any idea ? THX !

ahmad 12th November 2017 - 10:56 pm


What do you think about ppm encoders? These converters are often used in PixHawk-based systems. I wonder what you will say about the Ppm Encoder – Ppm – SBus comparison.

Thank you.

Joe Stubbs 26th October 2017 - 11:52 am

The zener diode shown in the sbus inverter diagram is it necessary – you dont show it’s ident number – please
Joe Stubbs

Povl H. Pedersen 24th February 2017 - 12:02 pm

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.

Trevor C. 21st December 2016 - 2:36 am

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?

Jono 18th November 2016 - 12:03 pm

Apologies for the stupid question here…. will the FrSky x4rsb Rx work with my Futaba 8FG Super?

Oscar 22nd November 2016 - 1:46 pm

I don’t think so, they only work with their own brand equipment

ciphy 6th April 2016 - 11:08 am

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 :)


LakeWorthB 23rd March 2016 - 12:37 am

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?

Qwerc 1st March 2016 - 11:57 am

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???

giuseppe 30th January 2016 - 4:31 am

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?

Dave F. 15th January 2016 - 5:57 pm

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.”

Donald M 11th April 2016 - 6:50 pm

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.

Julian 8th January 2016 - 8:09 am

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

varkokonyi 10th January 2016 - 3:44 pm

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.

varkokonyi 10th January 2016 - 3:44 pm

Hi Julian

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

DAvid Sipp 3rd January 2016 - 12:42 am

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,

Oscar 6th January 2016 - 12:54 pm

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

Andrei G. 30th December 2015 - 5:40 pm

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.

Mohammed 8th December 2015 - 6:06 am

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 ??

Oscar 9th December 2015 - 9:45 am

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.

Marcelo Farinon 3rd December 2015 - 9:36 pm

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?

colby 3rd December 2015 - 1:02 am

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!

george 30th November 2015 - 11:55 am

X4R-SB to a CC3D

is there any way to get telemetry over Taranis with this setup?

Oscar 30th November 2015 - 1:44 pm

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.

Jazzcool 24th November 2015 - 5:28 am

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?

Oscar 24th November 2015 - 6:19 pm

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.

LarryR 21st November 2015 - 2:13 am

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.

Oscar 24th November 2015 - 5:42 pm

Try this method, i haven’t tried it yet on SBUS so not sure it will work, but principle should be the same.

EquinoxFPV 25th November 2015 - 2:06 pm

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.

Hands0n 4th November 2015 - 3:22 pm

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.

Oscar 4th November 2015 - 7:28 pm

Hi Handson, updated now :)

Hands0n 4th November 2015 - 10:13 pm

Thanks Oscar, thats excellent :)

Javier 3rd November 2015 - 12:17 am

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.

swishyas 31st October 2015 - 2:13 am

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.

Eurig Jones 29th October 2015 - 5:22 pm

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.

Oscar 30th October 2015 - 9:51 am

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)

sircrashalot 30th October 2015 - 2:21 pm

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.

Eurig Jones 2nd November 2015 - 5:32 pm

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.

JP 15th October 2015 - 9:34 am

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

Randy 12th October 2015 - 4:00 pm

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!!!

matteo 11th October 2015 - 10:54 pm

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.


Oscar 12th October 2015 - 11:42 am

Hehe that’s good to know Teo! I am still looking for a board that doesn’t require X4R-SB hacks…

teo 20th October 2015 - 7:20 am

Hi Oscar,

I waited for the naze rev6 to try it, then I went with the X4R-SB hack for my old rev5 :)

Tim S 11th October 2015 - 10:50 pm

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?

Oscar 12th October 2015 - 11:42 am

Hi Tim
Yes the Naze rev6 has built-in inverter, so it should be plug and play :)

SprazzZ 11th October 2015 - 9:26 pm

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

Guest 7th October 2015 - 6:02 pm

>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.

Marcelo Kron 7th October 2015 - 12:26 am

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!!

Oscar 7th October 2015 - 4:50 pm

all PPM would have the same delay, radio frequency play much smaller parts in this.

Mechamilk 6th October 2015 - 10:52 am

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.

PaulN 6th October 2015 - 9:34 am

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!

Catio 6th October 2015 - 11:03 pm

Put the servo travel down to 100% in your transmitter and it will be gone.

SprazzZ 6th October 2015 - 12:14 am

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)

Oscar 6th October 2015 - 5:03 pm

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

John Hendry 27th September 2016 - 7:39 am

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