FPV Camera Control is a new feature in Betaflight flight controllers that allows you to access your camera setting menu using your radio transmitter sticks.
To change your FPV camera settings such as brightness, contrast, sharpness etc, you normally have to plug in a joystick (a.k.a OSD controller), like this:
Now, with the “Camera Control” feature in Betaflight, you can access the FPV camera settings using your radio transmitter! This is achieved by emulating OSD joystick inputs in the FC software.
With Camera Control you would be able to adjust your camera settings according to the different lighting condition and environment. This allows your FPV camera to always perform well wherever you fly.
Update (March 2018): There is now another option for camera control using UART rather than the OSD pin on the camera.
Further Reading: How to choose an FPV Camera for Drones
Some flight controllers offers a dedicated pin for camera control, such as the CL Racing F7. All the hardware is there and set up for you to use straight out of the box. If yours doesn’t have this then you’d have to go through the rest of this guide to set it up.
Finding the pin on the FC
First of all, choose a spare pin on the FC to connect to the camera’s OSD control. It doesn’t have to be a UART, any pin with a dedicated timer would do. Timer?! What is it?
If you don’t know what a timer is, don’t worry about it :) Just use the LED_Strip pin or any spare motor output. These pins almost always have their own dedicated timer, and they are perfect for camera control.
Resistor and Connection
You will need to add a resistor in the connection between the FC and camera. The resistor should be 150ohm – 600ohm, the lower the better.
In this example, I am using a 220ohm resistor, connected to the LED_Strip pin on the FC (Kakute F4 AIO V2).
The required resistor can be a hassle to many pilots. Therefore some FC manufacturers are beginning to build that resistor into their flight controllers. This might save you from doing it manually and everything would be plug and play. If they do have this feature in the FC, it should be advertised clearly and there should be a pin labelled as “camera control”.
Betaflight will soon use the pin “DAC” as a dedicated camera control pin, as long as your FC has the DAC output, there will be no more resistor or capacitor required for it to work in the future. This is not ready yet, but when it does we will update our guide.
Measure Reference Voltage
Power on your camera, and measure the voltage between the OSD pin and ground with a multimeter. Write it down somewhere, you will need to enter it in Betaflight CLI later (camera_control_ref_voltage).
For example, I have 3.19V on my Runcam Eagle 2 Pro.
Adding Capacitor (only needed on some cameras)
Larger cameras (i.e. standard size including the Swift and HS1177) should have enough capacitance in the OSD pin to make camera control work, so a capacitor is not needed. On some micro and mini cameras, your might need to add an extra capacitor between 0.1uF and 10uF, the larger the better.
Unless your camera is known to require a capacitor, I wouldn’t worry about it, only try to add the cap when nothing works. Anyway it doesn’t hurt to put one in if you insist :)
The cap should be installed on the camera’s side.
I have tested the following cameras and they all work without a capacitor: Swift, Eagle 2, Eagle 2 Pro, Owl, Owl 2, Swift Mini, and Micro Swift 2.
Make sure you have the latest Betaflight firmware installed on the FC (at least BF3.2).
You will need to use Resource Remapping, if you are unfamiliar with the feature make sure to check out my tutorial.
Assigning Pin for Camera Control
Type “Resource” in CLI, and search for the pin you have connected to the camera OSD pin. In our example it’s LED_Strip, and C08 is the pin number we are after.
Note: You must run the resource command to find out which pin is used for LED_STRIP, because every FC can be different.
Copy and paste that line in the text box, and change C08 to none, and hit enter – this will free up the pin first
resource LED_STRIP 1 none
Paste that same line again in the text box, this time change LED_STRIP to camera_control, and hit enter
resource camera_control 1 C08
Camera Control Settings
There are 4 settings related to camera control, here are the default settings:
camera_control_mode = HARDWARE_PWM Allowed values: HARDWARE_PWM, SOFTWARE_PWM, DAC camera_control_ref_voltage = 330 Allowed range: 200 - 400 camera_control_key_delay = 180 Allowed range: 100 - 500 camera_control_internal_resistance = 470 Allowed range: 10 - 1000
camera_control_ref_voltage – Change this value to what we measured earlier using the multimeter, for example we have 3.19V with the Eagle 2 Pro, so we can change it to 319.
Camera_Control_Key_Delay – You might need to adjust this parameter depends on the electrical condition of the camera and your flight controller. If double-click happens when you only move the stick once, or if scrolling is jittering, then increase the delay.
Camera_control_internal_resistance – It can be complicated to calculate this value, if default value doesn’t work then check out the link in the Troubleshoot section.
Camera Control Using Transmitter Sticks
- Enter/Confirm – mid throttle, and yaw right
- Up/Down – Pitch stick
- Left/Right – Roll stick
Troubleshoot & Resources
If it’s not working, here is the official documentation including some tips on how to troubleshoot.
There is a thread on RCGroups with many different cameras, FC and settings reported to work by users.