Tutorial: How to Setup Betaflight Softserial

by Oscar

Softserial stands for “Software Serial”, is a Betaflight feature to emulate serial port (UART) for connecting extra devices on a flight controller. It can also be used for connecting inverted SmartPort on F4 FC’s without hardware inversion.

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.

What can we use Softserial for?

Stuff that requires a UART connection but not timing critical, such as:

  • SmartAudio,
  • GPS
  • SBUS
  • ESC telemetry
  • Smart Port

With the limited number of UART’s on a flight controller (only 2 or 3 on F3/F4 boards), you can turn unused pins like LED_Strip or PPM into softserial ports for connecting additional devices.

You can even “split“ one UART for two things. For example if you use UART1 RX pin for ESC Telemetry. you can use UART1 TX pin for SmartAudio or SmartPort if you set it to Soft Serial. This allows you to free up a whole UART for something else.

And Soft Serial also supports inverted signal like Smart Port. This is extremely useful for F1 and F4 flight controllers as they don’t have built-in inverters. With Softserial, you can connect SmartPort directly to the FC without performing the uninversion hack.

Softserial Limitations

Nothing is perfect, there are some disadvantages in using Soft Serial:

  • Duty cycle limitation – Softserial is not suitable for high duty cycle and “chatty” applications that occupy too much processor time like OSD and serial RX
  • Baud rate limitation – Softserial works well at 9600 baud rate but not higher rates such as 115200
  • Soft Serial consumes processor resources and will increase CPU load
  • In the current Betaflight firmware, only two Soft Serial ports are allowed
  • Softserial can be picky about what pins you are allowed to use – LED_Strips almost always work but other pins are uncertain,  you just have to try

How to Configure Soft Serial

It’s much easier to understand how to use SoftSerial with examples, which I will show you later in this tutorial.

But in a nutshell, there are only 2 steps in configuring Softserial:

  1. Enable SoftSerial feature (in the Configuration tab)
  2. Assign SoftSerial TX/RX to spare pins using Betaflight Resource Remapping (in CLI)

Check out this beginner’s guide to Resource Remapping in Betaflight.

After FC rebooting, you should see a newly added “Soft Serial” port in the Ports tab.

Which Pins Can I Use For Soft Serial

This depends on the FC, and what timers the pins are connected to, you can find out what pins can be used for Soft Serial on your particular FC at this page: https://github.com/betaflight/betaflight/wiki/Single-Wire-Software-Serial

But most of the times, you just have to try.

In general you should be able to find the following pins on MOST FC’s and use them for soft serial:

  • UART TX & RX
  • PPM Input
  • LED pad (It’s LED_STRIP in CLI, not LED which is the status LED on the FC)
  • Motor 5, 6, 7 & 8 (if they are available)

If you run into any problem or have any technical questions, you should always email your FC manufacturer first.

Softserial Examples

Here are some common usage of Softserial. I am using Betaflight F4 flight controller in all of my examples below, but the same steps and concept should apply to other FC’s.

Connecting “inverted” SmartPort signal to an F4 flight controller

By using Softserial, we can connect SmartPort directly to an F4 FC without worrying about signal inversion.

In this example we will connect it to the TX of UART1.

In CLI, type in “resource”, and we can see the pin number of TX1, which is A09 (it might be different  in another FC).

Let’s assign A09 to Softserial 1, by entering in CLI:

resource SERIAL_TX 11 A09

Note that, Soft Serial port number starts from 11, which means, 11 is Softserial #1, 12 is Softserial #2

Enable “Softserial” feature in Betaflight, and you should see Softserial1 in the Ports Tab. Then select “SmartPort” under Telemetry Output.

This should now be working! If not, go to CLI, and make sure:

set tlm_halfduplex = on
set tlm_inverted = off

For inverted S.Port signal, you should have “tlm_inverted” set to “off”, however for uninverted SmartPort, it should be set to “on”. Just try both if you are not sure.

After making these changes, you will need to switch off the FC (by unplugging the USB cable and battery), then switch them back on. Sometimes softserial needs to be power-cycled to work properly.

Not working? Please try resetting the board and follow the exact instruction again. It’s been reported working after resetting the board, I don’t know why this is.

“Sharing” one UART between SmartAudio and ESC Telemetry

By using the TX and RX pins of the same UART for two devices, you can free up a whole UART for something else.

For example you can hook up ESC Telemetry to UART1 RX, and configure UART1 TX as Softserial1 and use that for your SmartAudio.

In CLI, type in “resource”, and we can see the pin number of TX1, which is A09.

Let’s assign A09 to Softserial 1, by entering in CLI:

resource SERIAL_TX 11 A09

Enable “Softserial” feature in Betaflight, and you should now see Softserial1 in the Ports Tab. Choose “ESC” in UART1 and choose SmartAudio in Softserial1, before saving it.

You might need to restart the FC by disconnecting the USB cable and battery, then turn it back on for it to start working.

Not enough UART? Let’s use LED_Strip pin for SmartPort

if you have LED_Strip pin on your FC, and you are not using LED, you can turn it into a softserial port and use it for devices like SmartPort and SmartAudio.

In CLI, type in “resource”, and we can see the pin number for LED_Strip is B06.

Let’s assign B06 to Softserial 1, by entering in CLI:

resource LED_STRIP 1 none
resource SERIAL_TX 11 B06

Enable “Softserial” feature in Betaflight, and you should now see Softserial1 in the Ports Tab. Select “SmartPort” under Telemetry Output.

if it’s not working, please see example 1 for tips to troubleshoot the issue.

Possible Errors

index not between 1 and 10

Two possible causes:

  • You should check if Softserial feature is enabled. Give the FC a reboot after enabling the “Softserial” feature (unplug USB cable and battery), and check again just in case
  • Your particular FC has Softserial disabled in the firmware. This is because F1 and some F3 FC have limited memory to store the firmware, and features like Softserial have to be removed to save memory space.

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.


Maksim 8th January 2024 - 12:29 pm

In betaflight 4.5, you now need to use “resource SOFTSERIAL_TX 1 –“

Guido 24th April 2023 - 3:13 pm

I’ve got an OrangeRX with an old original DX7 Tx that I’m trying to connect to a BetaflightF4 board. I’m not using telemetry. I have all that set up in the OSD. Does the SBUS signal from the OrangeRX need to be inverted? Ive got it soldered to UART6.

Camilo Jaramillo 29th December 2022 - 3:09 pm

Hi Oscar.
Before I make some soldering, I was wondering if a could use the RX1 pad for Smartaudio and TX1 pad for F.Port with telemetry enabled, so I can use a GPS on the RX2 and TX2 pads. My FC is a Flywoo Goku GN413S 13A 2-4S AIO


Oscar 31st December 2022 - 9:31 am

No you need a TX pad for SmartAudio.
If you have a LED strip pad you can remap it to Softserial and use it for Smartaudio: https://oscarliang.com/betaflight-soft-serial/

David 17th January 2023 - 3:13 pm

Hi, so I’m using geprc f411 aio 36a fc and there is pin with numbers r11 and t11. So I wanted to connect gps to this place. So I have soldered, fixed everything in betaflight, but it still doesn’t appear in gps tab. When I type gpspassthrough in cli I’m getting all kind of symbols. Maybe you have idea how to solve it?

Samuel.H 8th August 2022 - 7:19 pm

I have a Diatone Roma L3. In Betaflight I have stick inputs but doesn’t show RSSI channel. OSD stuck on 50 and doesn’t move.

Steve Cook 11th June 2023 - 6:52 am

If you go to the ELRS page, it has some settings for RSSI that are necessary for Betaflight to work that aren’t default settings. expresslrs.org/quick-start/pre-1stflight/#rssi-and-link-quality

Kevin James Dahlquist 16th August 2021 - 4:11 am

I need to add an external barometer to my build, I wonder if it would be possible to use softserial. My I2c port is occupied owing to GPS+Compass module. Could I add to the same I2C? Could I buy a new module that includes Barometer? Is there an equivalent softserial for I2C ports? Is there a barometer that works on a UART? I still haven’t found a solution, but I do have one open UART, and some resources like LED_STRIP that I could remap.

Zato 28th June 2021 - 12:26 pm

What commands do I need to type in the cli for M5?

Rudi Ramaekers 7th August 2021 - 10:58 pm

In CLI, type in “resource”, and see the pin number for Motor 5 is ….

Ari 28th April 2021 - 9:01 am

For some strange reason I do not work smartudio at the softserial that is defined by default that I created for a VTX AKK Race but if it works in UART.

Sorry, please send the previous post …

porlock 7th February 2021 - 11:28 pm

Oscar can you explain why

For inverted S.Port signal, you should have “tlm_inverted” set to “off”, however for uninverted SmartPort, it should be set to “on”. Just try both if you are not sure.

In official betaflight documentation is write something opposite.

Oscar 12th February 2021 - 6:02 pm

because they are trying to confuse people – There are inverters on Frsky receivers, hence the signal is inverted. But Betaflight take that as the normal signal, if we un-invert Frsky’s signal, to Betaflight that’s inverting the signal. Got it?

Piyush Parmar 11th October 2020 - 7:18 am

Hi Oscar !
I have a succex-d 20a aio which only has 2 uarts, one of which is a plug & play and the other pad is used for my crsf nano. I have a vista to be connected but the fc won’t slide in if I use the plug. I have no option but to solder the wires on the fc. There is one T1 pad but no R1.
Can I use the led pad and remap it to R1 ?
Will that work for vista without any issues ?

Thankyou ! ❤️

Jannik 6th October 2022 - 1:28 pm

Hi PIJUSCH I have problems with my resource files can you please the resource list from the aio would help me a lot

Waldi 1st July 2020 - 7:49 pm

Hello Oscar
Could you (or anyone) tell me if is it possible to connect bluetooth adaptor on RX3 and TX2? Is it possible to remap it so they will be together as UART5? I use MATEK F7 se and this ports are free, rest TX and RX are already in use. So please help me. Thank you for your time. Regards

Oscar 4th July 2020 - 3:44 pm

It’s possible, just remap these pads to the same softserial UART, e.g. TX11 and RX11.

Sergei 10th June 2020 - 2:42 pm

Hi, could someone help me to set up the RX1 on betafpv 20a aio board for whoops? I’ve tried remapping but it seems to me doesn’t work. There is no pad on the board but it’s in cli as “a10” I tried to assign it to a led strip pad by “resource led-strip 1 a10” but odd from vista unit still seems to not work.

Peter 8th February 2020 - 8:23 pm

Hey Oscar, I have a short question. I tried Soft serial (LED Strip Port) and it works fine. Now I need a second one for run cam split mini 2. On my Tyro79 F4FC are two pads I dont know (it is S5 and S6). So what is this S5 and S6? sorry there is nothing in the manual and I could not find anything in internet. :( Thanks for your help! Peter

andy 25th January 2020 - 11:33 pm

hello oscar i am trying to get betaflight 4.1 running on ircfusionf3 its listed in hexfiles i have downloaded and flashed board crsf version all goes in and overclock support is there in cli.i am unable to get around the immersionrc tx wizard do you know if there is a way to do this please .if i select crsf and serial ports tab with bound rx fc still wants to go through tx wizzard .does this performance firmware need some other set up trick do you know please it would be great if i could succeed with this mod i have many other self built quads but there is either an issue with 4.1 f3 ircfusion version or i am missing a trick any info would be awesome.
many thanks

Norbert 2nd January 2020 - 7:17 pm

Hi Oscar

I have a Omnibus F4 V3 board with Arducopter FW and crossfire nano diversity rx but I I can’t find the right way to connect. Can you help me?

KK 1st December 2019 - 11:19 am

You say that You shouldn’t use softserial for rc link. But sbus just needs one pin/pad of the hardware uart – can You use the 2nd pin/pad with smartaudio for example by using softserial?

George 23rd August 2019 - 6:15 am

Hi, Oscar,

I have a mamba f411 nano FC . I want to connect TBs nano rx.

How do I Go about it?

Thanks In advance.


kaozer 19th August 2019 - 3:17 pm

so i fly with spektrum and the sbus on my FC is basically useless to me. is it possible to use softserial on the sbus port and use it as a normal uart?

Oscar 29th August 2019 - 11:10 pm

You can’t use softserial for RC link, it’s too slow.

Gene 7th August 2019 - 10:41 pm

Yea! Was able to use softserial to capture a tx pin and an LED pin to make a UART to tie to the new DJI air unit. So now I have drone voltage in my goggles!

NoobFPV 30th July 2019 - 11:38 pm

Oscar, great tutorial as always!!! Could I use this to run a Frsky XM+ receiver on an F4 FC. The FC had one SBUS of which provided inverted on uart 6. That got ripped of the FC. Not sure if the FC is done or there is a way to run the receiver from the board. The board is a omnibus F4 AIO V6. Thanks in advance.

Oscar 12th August 2019 - 10:53 am

No, we don’t recommend running SBUS on softserial.

jeremy 4th July 2019 - 1:50 am

Hi Oscar, can you use I2C SCL for SmartAudio using this soft-serial method?

I’d like to free up UART6 for GPS on my KakuteF4 V2… SmartAudio currently occupies TX6.


Oscar 15th July 2019 - 4:34 pm

Why don’t you give it a shot :)

Josh 15th June 2019 - 7:53 pm

Let’s say I want to use runcam protocol which requires a full rx tx uart but I have used my other uarts. Can I use softserial 11 as tx and softserial 12 as rx and enable runcam protocol on both soft serial ports in betaflight configuration?

Oscar 17th June 2019 - 6:05 pm

Yea softserial should work.
But Softserial 11 and 12 are two different “UART”, you have to setup both TX and RX under the same Softserial (11 or 12).
For example,
resource SERIAL_TX 11 A09
resource SERIAL_RX 11 A10

Giovany Arana 8th May 2019 - 1:42 am

Thank you very much Oscar. With this explanation I was able to configure my Mantis85 to have smart audio to contorl my new VTx. You rock man.

RANDY 28th February 2019 - 8:21 am

Ok so I got the beeper swapped to soft serial on a f3 whoop pro board. But I can’t get sbus to work. I pulled the rc pad off.

Pete 15th February 2019 - 10:08 pm

Hi Oscar,
If you are using tx6 for soft serial, do you still name it 11 ?

Oscar 25th February 2019 - 4:32 pm

That’s right, 11 is basically means soft serial 1.

Andrea 5th January 2019 - 3:29 pm

It’s possible to use serialpassthrough on softserial port?

Brandon 5th January 2019 - 3:49 am

Hey Oscar, So if I’m wiring up a R9mm, I’m not going to use s.port, as I was just going to go sbus to sbus on my FC. S.port is soldered on, due to updating firmware. I’m using a Omnibus f4v3, so I had my x4r-an going from sbus to sbus, 5v, gnd. I planed on taking this same approach with the R9mm. I dont care about telemetry, but I can still get rssi like I did with the x4r-sb correct? Thanks for your time

Oscar 10th January 2019 - 3:10 pm

I am not sure what you mean, but SBUS and Smartport work the same way in R9MM as X4R, and connections are the same.

Nicolas Bimont 29th November 2018 - 4:36 pm

The trick where you share one uart for ESC Telemetry and Smartaudio. Will it work if I share my uart6 where RX6 would be SBUS and TX6 (Softserialed) would be Smart port ?

Oscar 8th December 2018 - 3:15 pm

Why don’t you give it a try and let me know :)

Fran Ruiz 16th October 2018 - 12:05 pm

Hi. I have already connected sbus to uart1. Can I share TX1 with smartport?.

I have a Wizard TS215 wich only has 2 usable UART’s, but this drone has 4 RGB LED ports with LEDIN and LEDOUT pins (plus 5v and GND). Its possible to conect to RGB LED pins uninverted smartport? if its posible, it will go to ledin or ledout?

Thanks a lot!!!!

Sam Sanford 6th October 2018 - 6:24 am

Hello Oscar, my idea is to use soft serial to free up enough UARTs for me to use them as PWM outputs to run two servos for a camera gimbal. Do you think it’s possible? I would like to use a flight controller that only has the 4 motor outputs in each corner because they are cleaner and just use UARTs to run servos with the cam stab feature and manual control with channel forwarding. Do you think UARTs would support this function? Thanks!

Christopher Lenihan 17th September 2018 - 2:54 am


one of my motor signal pads doesnt work anymore and there are only 4. Can i resource that signal pad to another pad that isnt specific for a motor signal??? Need an idea.


Oscar 18th September 2018 - 6:18 pm

It really depends on the FC design, you should consult your FC manufacturer or get in touch with Betaflight dev team.

John Daniels 29th August 2018 - 1:11 am

Hi Oscar is it possible to change a sbus pad to a TX pad as I have Fport on a uart TX3 and I want to use a GPS that requires a TX and a RX and all I have left is TX2 and sbus

Long Le 14th May 2018 - 8:12 pm

This is very helpful. I have a question about using an open UART for Sbus. I have an AIO F4 FC. I ripped off the pad and would like to use an open UART. Only avail UART that is visible is TX6/RX6. Will the soft serial work in this situation?

Oscar 17th May 2018 - 5:15 pm

Soft serial is not good enough for timing critical applications like RC link. Use a hardware UART for it.

Calvin Hill 4th April 2018 - 9:37 pm

Can I use softaerial to run the new fport protocol? Will cycle times running SBUS be fine? Running on a xracer F4 board

Oscar 5th April 2018 - 5:47 pm

Not a good idea. Soft Serial is too slow for timing critical tasks like RC control.
Use a hardware UART for it.

Joe 14th March 2018 - 7:00 pm

Hello Oscar,
Im currently running a Kombini Dshot, and i either have to put telemetry or smart audio on a softserial. which one would you recommend to go on the softserial port?

Oscar 22nd March 2018 - 6:46 pm

doesn’t matter.

RipTwist 7th March 2018 - 4:11 am

Hello Oscar,
I’m in a bit of a pickle with my FC. I’m using a Cicada F4 AIO. I like the board and works great in my purple 215 since there is such limited space. I was pushing it pretty close to some tree tops and managed to have a twig lodge underneath my camera and rip the sbus pad right off the board. Everything else on the board is working just fine (motors spin, OSD in/out work). So I’ve been trying to get my Sbus to work on another pad and I can’t quite figure it out. I have used the resource commands and softserial to try to move it to the LED pad as well as the rx6 pad. Neither one has worked out. I’m also using an XM+ if that makes any difference ( probably not, just minus tlm). Any advice or guidance would be greatly appreciated.


Monto 1st July 2018 - 10:32 am

If you are using FrSky with Fport capable RX, you are in luck. all you need is to connect the fport RX to any spare TX and you are done! It works for me on two quads running R-XSR.

Monto 22nd February 2018 - 10:05 am

Did anyone successfully get the soft serial to work on Omnibus F4 v3? I’ve tried many different pins without much success, and am wondering if this FC supports it at all.

Thomas 22nd March 2018 - 1:49 pm

I don’t think u need oft serial on an omnibus f4. I just got the omnibus f4 pro corner and it has a built in inverter/unconverted on hart 3&6. You just have to use the jumper on the board to enable it

FarmerBoyFPV 1st February 2018 - 11:18 am

Hey guys. Dealing with the midguard f4 or same as racerstar starF4 as they only have 2 uarts and no osd I am trying to do sbus telem and irc tramp tel on a maytek vtx. I’ve tried remapping two pins now, both with the smartport and vtx on soft serial. Here is the crazy thing, everything works right after i set it up, but after 1 power cycle it will no longer work… Is this a glitch? Firmware soft serial or what? I’ve googled everywhere and cant find an answer.

Oscar 5th February 2018 - 2:30 pm

sorry i haven’t used that FC and not had this problem before, might be worth checking with the reseller.

Arturo 29th January 2018 - 8:17 pm

Hi Oscar, I´m trying to get tlm but in my taranis i can´t see data. I´ve enable softserial, resourde serial tx 1. All is ok but i can´t see the data, it doesn´t appear new sensors. What can i do? thanks

Oscar 5th February 2018 - 2:02 pm

What RX are you using? some old RX firmware doesn’t work with the latest BF, and need updating.

Arturo 8th February 2018 - 8:39 pm

Hi Oscar. I.m using d4r-ii. I.ll te to update it and try again. I.ll tell you ir i can do it

justin holman 3rd January 2018 - 1:15 am

# resource
resource BEEPER 1 B04
resource MOTOR 1 B00
resource MOTOR 2 B01
resource MOTOR 3 A03
resource MOTOR 4 A02
resource MOTOR 5 A01
resource MOTOR 6 A08
resource PPM 1 B08
resource PWM 1 B08
resource PWM 2 B09
resource PWM 3 C06
resource PWM 4 C07
resource PWM 5 C08
resource PWM 6 C09
resource LED_STRIP 1 A08

# resource led_strip 1 none
Resource is freed

# resource SERIAL_TX 11 a08

# resource motor 6 none
Resource is freed

# resource serial_tx 11 a08
any ideas?

Oscar 3rd January 2018 - 2:03 pm

is soft serial feature enabled?

Ted 10th October 2018 - 9:25 am

try: “resource serial_tx 11 A08”

Guillaume K 2nd January 2018 - 3:43 pm

Hi, i break the usb port, can i use some other way to acces to the card? (like vp dm dp?)
i try to use uart1 and ftdi but you have to configute it in betaflight…
thank a lot

MATTHEW NEALE 13th December 2017 - 2:02 am

I had the Tramp hv working with BF lua script. I changed out my xsr for an r-xsr but I went back to xsr. Since then I have been unable to get the VTX values in the BF lua script. Smart port will work on uart 3, however uart6 seems to be non-functional. I have tried cli command to tlm inversions both on and off, I have conductivity between the TX6 pad and the pin entering the IRC tramp telemetry. Pids and rates are showing, vtx selected in config, port setup to UART6 IRC tramp. Literally 6 weeks I’ve been trying to solve this :-/

RoccoFPV 6th September 2018 - 9:18 am

you may need to rediscover sensors on your TX.

Pawx 1st December 2017 - 6:42 am

Can you remap the LED pins to be I2C SDA and SCL? trying to make a GPS build with cramped spaces and the FC i have that fits does not have these ports.

Pawx 1st December 2017 - 6:45 am

Just to avoid ambiguity of my comment above… The SDA and SCL will be used for the magnetometer :)

stefan 30th November 2017 - 5:42 am

curious why for your first TX example you do not have to set to “none” like is done for the led pin?

Daniel 29th November 2017 - 8:25 pm

Best explanation of soft serial I’ve seen.
Your led_strip example worked great on a spracingf3 board where the uarts are too few!

Bas 20th November 2017 - 8:19 am

I get his error
# resource
resource BEEPER 1 B04
resource MOTOR 1 B00
resource MOTOR 2 B01
resource MOTOR 3 A03
resource MOTOR 4 A02
resource PPM 1 B09
resource LED_STRIP 1 B07
resource SERIAL_TX 1 A09
resource SERIAL_TX 3 B10
resource SERIAL_TX 4 A00
resource SERIAL_TX 6 C06
resource SERIAL_RX 1 A10
resource SERIAL_RX 3 B11
resource SERIAL_RX 4 A01
resource SERIAL_RX 6 C07
resource INVERTER 3 C15
resource LED 1 B05
resource LED 2 B06
resource SPI_SCK 1 A05
resource SPI_SCK 3 C10
resource SPI_MISO 1 A06
resource SPI_MISO 3 C11
resource SPI_MOSI 1 A07
resource SPI_MOSI 3 C12
resource ESCSERIAL 1 B00
resource CAMERA_CONTROL 1 B07
resource ADC_BATT 1 C02
resource ADC_CURR 1 C01
Then i do
resource SERIAL_TX 11 A09 to activate softserial 1 on A09
Then i get this error
index not between 1 and 10

Oscar 28th November 2017 - 1:53 pm

Try to enable soft serial feature first.

JonnyVolts 17th November 2017 - 11:05 am

Hi Oscar, great article!
I’m curious, can you use two devices over the one channel? For instance is it possible to run camera control and smart audio simultaneously?

Matt Mendez 17th November 2017 - 5:07 pm

JB made a video on how to set this up (using softserial I believe). you can run both simultaneously. Requires some HW mods too but is definitely interesting.


Oscar 18th November 2017 - 7:55 pm

On the same pin? No.
I haven’t covered camera control, because I personally think it’s a bit complicated for what it does at the moment.
As far as I know, new hardware/tech is coming, and it will be plug and play in the future so I wouldn’t bother with it now.

Josh 17th November 2017 - 4:32 am

This is the help article I’ve been looking for to get smartaudio working on my omnibusF4. Thank you so much.