FPV Camera Control using UART

by Oscar

Camera Control is a great feature that allows you to change FPV camera settings including brightness and contrast. It replaces the need for a joystick controller that you need to connect to the back of an FPV camera. Now you are given another camera control option via UART rather than the OSD pin.

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.

Further Reading:

The Different Ways of Camera Control

On Runcam’s latest Micro Swift 3 FPV camera, they replaced the OSD pin with UART pins which allow you to connect the camera directly to the FC. So that you can access the camera setting menu using your TX sticks.

This is a  different way of camera control, and you might wonder, is it better than “Camera Control” using the OSD pin on the camera we previously found out? Well, yes and no.

The downsides of using OSD pin for camera control are:

  • It has very strict hardware requirement, you need a resistor and possibly a capacitor too for it to work
  • The software setup is relatively complex, you need to find a spare pin and remap it for camera control in the CLI

By using a UART for camera control, you can forget all that! Simply connect the camera TX and RX to a spare UART on the flight controller, without any additional hardware, and there is only one setting you need to enable in Betaflight! That’s it.

With the OSD pin, the commands are basically simple PWM pulses. Using UART as the new camera control method, we can send more complicated commands and data and there might be some other cooler stuff we can do with it.

However, it’s not perfect. The downsides of using UART for camera control are:

  • It takes up a precious UART – though it’s not a problem if you have spare
  • It’s compatible with all of Runcam’s FPV cameras except the Eagle 1 and Nano, however it might not work for cameras of other brands, we will need to find out and confirm on a later date
  • Only a few flight controller firmware support this feature

DAC for OSD pin?

I was told that in the future you can use the DAC pin on the FC to connect the OSD pin to without any resistor and capacitor.

But so far I haven’t heard any update on that, now Betaflight 3.3 is out, the soonest we can expect it is probably in BF 3.4 which is at least 3-4 months away, so it looks like UART is the way to go for now if you don’t want to DIY.

Requirement and Connection

You will need to flash the latest Betaflight 3.3 or newer firmware to your flight controller with a spare UART (both TX and RX, none inverted).

Other firmware that supports this feature are:

  • ButterFlight 3.4 or above
  • Cleanflight 2.2
  • KISS (WIP)

You will also need a latest FPV camera that comes with the UART connection on the back (such as the Micro Swift 3).

You can hook up the camera to the FC directly, TX to RX and RX to TX.

If you have an “older” FPV camera with OSD and GND pin, you can use an adapter to convert the OSD pin to UART!

However you do need to power the adapter with 5V from the flight controller.

Software Setup

In Betaflight Configurator‘s Ports tab, you only need to select “Runcam Device” in “Peripherals” under the UART you’ve connected to the FPV camera to.

Stick Commands

To access the camera setting menu using your radio transmitter sticks, and navigate through the menu, please following this stick command diagram.

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.

26 comments

harsha vutukuri 5th October 2023 - 3:07 pm

did you have any tutorial about connecting the vr goggles with the fpv drone using beta flight controller

Reply
Oscar 5th October 2023 - 3:16 pm

That would only work if your goggles have HDMI input or AV input. What VR goggles do you have?

Reply
rjsdotorg 9th March 2023 - 11:49 pm

Hi, We are looking to control a Runcam with an Arduino for remote, long time lapse. We can start/stop record with UART commands https://support.runcam.com/hc/en-us/articles/360014537794-RunCam-Device-Protocol , but, if we shut down the power the cam naturally loses time synch (the app is not an option here). So, we’ve tried to implement the SETTINGID_DISP_REMAIN_RECORDING_TIME .
Section 6 is simply not clearly written – even how to read the camera time, or Read the remaining recording time of the camera (SETTINGID_DISP_REMAIN_RECORDING_TIME 4) which would be desirable.

Have you ever looked into those settings?

Reply
William 18th December 2021 - 4:01 pm

Hello Oscard, I have a
# Betaflight / STM32F411 (S411) 4.1.3 Jan 16 2020 / 11:34:23 (543a5e1ba) MSP API: 1.42
# manufacturer_id: DIAT board_name: MAMBAF411
With only 2 uart, uart 2 only has the TX used. I want to connect the tx rx of a Camera Caddx Loris 4K 60FPS Mini HD Cam to start recording using a switch on my radio. To free TX 2, I wanted to transform the A8 led port into TX soft serial, I assigned A8 to serial 3 with the method you indicate at https://oscarliang.com/betaflight-soft-serial/ but this does not work, I don’t have a soft serial port which appears in the port tab, of course soft serial is validated in the configuration tab. Can you help me? Please. If you need more info don’t hesitate, thank you.

Reply
Gill Romero 16th November 2021 - 2:38 pm

I have my own digital LED controller which drives LED strips, and it accepts ASCII commands form an UART to change the colors, and effects etc.
Is it possible to connect a keyboard to the remote controller and send the commands to the drone in flight?

Reply
chris 25th July 2021 - 3:04 pm

Hey Oscar I was wondering how this methodology works with cameras like the “RunCam Nano 2” and some of Foxeer’s cameras with the 4 pin connections?
Foxeer for example being ( VCC? / GND / VID / OSD ) I’m guessing VCC is just Voltage+ like in the RunCam example. Would the OSD still pad still just get connected an available RX channel?
Also as a related question; would the two leftover channels on a Crossfire Nano or Tracer receiver “ch3&ch4” work as the UART pads (TX3/RX3) as described by your guide?

Reply
Oscar 25th July 2021 - 11:53 pm

Currently only Runcam cameras offer UART camera control, Foxeer cams don’t support that. And if the pads on the Runcam camera don’t say TX/RX, and it doesn’t say specifically that it supports “UART connection” in the product page, it probably doesn’t’ support camera control via UART. You can still use camera control via OSD pin though given that your FC support that.

Reply
Adrian 6th August 2021 - 3:55 am

i have a question i hope you can answer, i have the runcam micro swift with the rx/tx on it and i wired it to my uart 6 on my diatone mamba f405mk2 and it worked but when i went to fly my quad it wasnt recieving controller signals right or something, but it would just full blast and freak out, i think it has something to do with the fact that that uart is for a tbs crossfire reciever, but im not using the uart i dont think , im using i bus

Reply
Francois 30th March 2020 - 4:27 pm

Hellooo !! :)
Have here a flywoo goku aio (with CC pin) and Runcam split 3 nano whoop…how can i connect this camera/dvr to this FC. And not able to control the camera power and camera change mode through Betaflight/qx7s… using rx2 ant tx 2 as soft serial… heeelllpppp

Reply
Richard HyKaty 23rd February 2020 - 3:22 am

Hello Oscar, I have a GepRC cinepro and it has the Caddx Tarsier on it, I tried this and connected the RX to the R3 on my F7 board and the TX to the T3 on my F7 board and it did not allow me to do the stick command. What have I done wrong????

Reply
oermens 16th January 2022 - 4:55 pm

You should route the TX of the camera to the RX on the FC and the RX to the TX. Not RX to RX and TX to TX. Receive, transmit, got it?

Reply
Matt 2nd October 2019 - 10:28 pm

Hi.
I have a RunCam Micro Swift 3, but Im not able to enter the camera control trough the UART. Because there is different versions of my FC i first had the TX/RX reversed, is there possible that I have ruind the camera because of this?

Reply
Oscar 15th October 2019 - 4:42 pm

You won’t ‘ruin’ your camera by connecting UART the wrong way around, don’t worry

Reply
Achim 1st September 2019 - 10:40 pm

Hello Oscar,
I bought a runcam Phönix but can’t get camera Control to work correctly. It says uart in the up left corner and it connects saying remote control in the middle of the display but nothing changes as I move the right stick (mode2). I even can’t disconnect with the left stick any more!
Any suggestions? Thank you!

Reply
Oscar 10th September 2019 - 6:22 pm

Are all the end points of your sticks setup correctly? 1000-2000?
If this is right and you still have problem I’d contact Runcam Customer Support and see if they can arrnage a replacement

Reply
Chris Hopkins 29th July 2021 - 11:27 am

Hi Dan. Did u ever manage to resolve this as I’m having the same problem

Reply
Dan 19th December 2018 - 11:38 pm

Please add to this tutorial how you need to enable the camera mode in betaflight.

Reply
Surefire 10th November 2018 - 2:14 pm

這個可以運作在kiss v1嗎?
我在地面站看不到設置的選項 似乎只有v2可行 讓我有點困惑

Reply
Oscar 23rd November 2018 - 4:08 am

Sorry I am not sure if KISS supports camera control, Not a KISS user myself.

Reply
Karl 4th November 2018 - 5:23 am

I have just wired a runcam racer cam using tx and rx to a new build using a kakute f7 fc. Camera osd works a treat but I can’t get the betaflight osd to work. Obviously it’s turned on in config, have tried pal and ntsc. It seems to go into the menu with the normal stick movements (can’t arm the kwad) but nothing displayed on the screen except the cam osd. Latest bf 3.5 flashed on.
Any help appreciated! :)

Reply
Andy 7th December 2018 - 3:01 am

Hey Karl, I have a kakute f7 and a Micro Eagle (Lumineer Edition with UART). I can’t get the runcam OSD to work. I’m powering my camera from my VTX (TBS Unify HV). How have you wired your camera to the FC?

Cheers.

Reply
Pard950 2nd August 2018 - 1:45 pm

Can this be done with softserial? I only have 2 uarts on my fc but I have the led, s5, and s6 pads available.

Reply
Achim 19th June 2018 - 9:34 pm

Thank you Oscar! Do you have an affiliate link for Foxeer and Runcam? Or for Amazon Germany? Does it work with the new micro predator v2?

Reply
The Gettys 10th July 2018 - 10:06 pm

I have used the runcam uart adapter with both the Predator v1 and v2. The ground and osd wires are switched on foxeer compared to what is supplied with the runcam uart adapter, so make sure you connect those correctly or you will fry the adapter.

Reply
Merin 8th June 2018 - 6:32 am

Can we make this work on CL Racing F4S, which has a dedicated cam_c pin for osd? I know we can use other free uart, but then this cam_c dedicated ping on cl racing f4s will be wasted !!

Reply
Oscar 12th June 2018 - 2:18 pm

It’s using UART, which is available in every FC.
If your board already has a camera control pin, you can follow this guide that uses the OSD pin instead.

Reply