In this post we will explain how to setup and configure SBUS and Smart Port telemetry with F3 flight controllers on Betaflight, and F1 Naze32 FC on Cleanflight, with Frsky X4R-SB Receiver.
This guide will be divided into 2 parts, first part is how to do it on a F3/F4 FC, second part is on how to do it on the F1 Naze32 Rev5 board. Click these links to jump to the sections directly:
- How to setup SBUS / Smart Port on F3 FC
- How to setup SBUS / Smart Port on F4 FC (without built-in inverter)
- How to setup SBUS / Smart Port on F1 Naze32 Rev5
- Only getting telemetry, but no stick movement?
We are using X4R-SB as an example in this guide, take a look at this list of Frsky compatible RX for other SBUS receivers often used in mini quads.
Setup SBUS and Smart Port on F3 FC
With any F3 or F4 flight controllers, SBUS and Smart port setup is very straightforward. Simply connect SBUS to any free UART RX pin on the FC (or the dedicated SBUS pin if there is one), and Smart port to another free UART TX (not on the same UART as SBUS).
The same procedure goes for both X4R-SB and XSR RX. Get your X4R-SB receiver from here.
In the above example, I am using UART2 for SBUS, and UART3 for SmartPort. Now you can configure it in Betaflight configurator.
First in the port tab, enable “Serial RX” in the UART you have chosen for SBUS. And select SmartPort as the Telemetry Output option in the UART you have chosen for SPort.
Go to Configuration Tab, and under Receiver, choose the following options.
Finally, turn on “Telemetry” feature under “Other features”. Press save, and that’s it!
How to Setup SBUS and Smart Port on F4 FC
Some F4 flight controllers might not support Smart Port directly because they might not have hardware inversion on their UART’s. Therefore you’ll need to do the inversion hack on the receiver in order to get S.Port working.
Here is how to get the uninverted SBUS and Smart Port signal off the Frsky RX.
Alternatively, you can set up Softserial and still use the original “inverted” SmartPort signal.
If your F4 board have dedicated ports for SBUS and Smart Port, then the connection and procedure would be identical to the F3 FC we described above.
Connect SBUS on F1 Naze32
SBus and Smart port setup are pretty similar on most flight controllers in Cleanflight, main difference is the hardware setup. Obviously Naze32 with F1 processor requires a bit more DIY and effort to get working than the F3 Flight controllers. But it’s not impossible :) Just a bit more complicated.
As we have already explained in the SBUS/PPM comparison article, SBUS signal on Frsky Receivers have a inverted output signal for some reason (literally just upside down), and some flight controllers just wouldn’t recognise/understand it.
There are many ways to invert the signal, such as using a signal inverter which you can build yourself.
Note that only Rev5 or older board need to do this hack, Rev6 supports SBUS without converter.
SBUS Signal Inverter
The inverter is easy to make, only requires 2 resistors (10K ohm and 4.7K ohm), 1 transistor (BC547b), and one servo cable. These are all very cheap and easy to find. It’s explained well in this video: https://www.youtube.com/watch?v=DtvID1YeSbE.
X4R-SB Hack – No need for additional Inverter
Alternatively, you can find the pins on the X4R-SB RX, and get the uninverted signal from there directly. That way you don’t need any inverter.
There is actually an inverter chip on the X4R-SB RX, that’s what causes the inverted output signal. According to this diagram above, you can find the pin for the original, uninverted signal and use that direct to your flight controller.
Some people put solder a small connector to it like so.
Check out this post to find the “uninverted” SBUS and Smart Port pins on other receivers, such as the XSR, XM and XM+.
SBUS Connection to Naze32
Assuming you are using UART2 on the Naze32, and keeping UART1 for your USB connection to Cleanflight configurator, you will need to enable UART2 for Serial RX first in Port Tab
And choose Serial RX in Configuration Tab.
UART2 pins are RC3 (TX) and RC4 (RX). You only need to connect the SBUS output to RC4, since this is a one direction communication. RC4 is just below the negative power pin.
You can make your cable like this.
Connect Smart-Port on F1 Naze32
For the telemetry, you will need to use a serial connection again. However you can’t on the Naze32, since there are only 2 hardware UARTs and you have already used one for the the SBUS. The last one should be reserved for the USB connection. Someone confirmed in the comment and in my group that this hack also works on Naze32 Rev6 boards (I can’t confirm this as I don’t have a rev6).
However, the good news is that it is possible to use SoftSerial (software serial) for Smart Port. Pin RC5 and RC6 are available for softserial on the Naze32 board.
Note: Since RGB LED strip uses RC5, that means if you enable softserial, you won’t be able to use LED_strip feature.
Also Note that you should be getting telemetry data even when you are NOT armed.
Be aware that you need to short the 2 pins together (RC5 and RC6). Marcelo made a plug that have the 2 pins soldered together. The other end of the wire is connected to the Smart Port telemetry pin on the receiver ( the green wire in the picture).
The reason being SmartPort telemetry uses a single wire for both TX and RX. It’s a half-duplex protocol. You can emulate this using soft-serial by hooking TX and RX up to the same pin on the receiver.
With D4R-II RX, you only need to connect telemetry pin to RC6 (softserial TX), but aparently X4R-SB is different, and Smart Port has to be connected to both RC5 and RC6 pins. Marcelo tried and it didn’t work if RC5 is not connected together.
In the Cleanflight you have select Telemetry and softserial on Configuration tab.
On Ports Tab select Softserial telemetry select SMART PORT, AUTO.
On CLI select
FRSKY Telemetry Invert = ON tlm_inversion = ON or 1, depending the Cleanflight version. Latest version he changed to ON and OFF and not more 0 and 1.
And double check if you have these features enabled in CLI.
How do we know Smart Port telemetry is working?
Well, to check, Move your quad/flight controller in any direction, and look if the numbers of AccX and AccY are changing (if you haven’t disabled accelerometer, these are ACC readings). If it constantly shows 0, if either means you have disabled ACC, or your telemetry is not yet working.
For the altitude indication, to have the correct value you have to turn on first the quadcopter and then turn on the Taranis. If you turn on Taranis first it will show this wrong indications.
*note that in older version Taranis firmware, the main lipo voltage is reported through Cells, but that doesn’t work any more in new firmware, it’s changed to Vfas.
With both SBUS and Smartport connected to the Naze32, it looks like this.
So that’s it! If you have any comments please let me know!
- Dec 2015 – Article created – for F1 Naze32 Rev5 board
- Apr 2017 – Updated instructions for F3 FC
- Jul 2017 – Updated links to setup Smart Port for F4 without built-in inverter