The Betaflight OSD (On-Screen Display) is a powerful feature that allows you to view critical flight information directly on your FPV feed. This tutorial will guide you through the steps to set up and configure the OSD in Betaflight, operate the OSD menu, and provide useful CLI commands for common OSD element setups.
Table of Contents
What is Betaflight OSD?
Betaflight OSD is a feature that overlays flight data such as battery voltage, flight time, RSSI, and more onto your FPV video feed. This feature is incredibly useful for monitoring the performance and status of your drone while flying. You can even use it as a menu to change your drone’s settings including PID, rates, filters, VTX channel and more.
This tutorial focuses on OSD for analog FPV systems. If you are using the DJI FPV System, check out this tutorial on how to set it up: https://oscarliang.com/dji-fpv-system-setup/#betaflight-osd-setup.
Hardware Requirements
Most Betaflight flight controllers (FC) support OSD for analog FPV systems, with a few exceptions that are designed specifically for HD digital FPV systems. This should be stated in the FC specifications.
For an FC to support OSD in analog FPV system, it must have an integrated OSD chip (AT7456E). HD digital systems do not require this chip for OSD functionality.
Wiring
Connect your FPV camera and video transmitter to the flight controller. The camera signal goes to the “Vin” (video input) pad on the FC, while the VTX signal connects to the “Vout” (video output) pad.
Betaflight Configurations
Enabling OSD Feature
Download and Install Betaflight Configurator: https://oscarliang.com/download-betaflight-configurator/. Plug your flight controller into your computer using a USB cable. Open Betaflight Configurator and click on the Connect button.
In the Betaflight Configurator, go to the Configuration tab and enable the “OSD” feature. That’s it—your OSD is now activated.
OSD Tab Interface
Navigate to the OSD tab in Betaflight Configurator. This is where you configure which elements appear on your FPV feed.
On the left, you’ll see a list of OSD elements. Simply turn on or off the elements you want to display on the screen.
You’ll notice three checkboxes for each element, these correspond to the 3 available OSD profiles that you can switch between during flight. This allows you to use completely different OSD layouts and elements at any time by flipping a switch on your radio. If you don’t need multiple OSD profiles, set “Preview for” to OSD Profile 1, and “Active OSD Profile” to OSD Profile 1 as well. Then, check the first box for the element you want to display.
Configuring OSD Elements
Click on an element from the left-hand menu to add it to the preview screen, then drag it to your desired location.
My frequently used elements include:
- Battery Voltage: Displays the battery voltage, so you know when to land and avoid over-discharging your LiPo.
- Battery Average Cell Voltage: Automatically calculates the voltage per cell, simplifying monitoring (e.g., 16.0V for a 4S battery will display as 4.0V).
- Timer2: This is your flight time, it displays how long the drone has been armed. This is different from “Timer1,” which shows powered-on time.
- Warning: A must-have. Displays messages if anything is wrong with the quad, aiding in troubleshooting.
- Battery Current Draw: Shows amp draw in real time. It requires a current sensor.
- Battery Current mAh Drawn: Shows how much battery has been consumed. It requires a current sensor.
- Link Quality
- RSSI dBm Value: Preferable over RSSI which is a percentage value.
- Throttle Position
- VTX Channel: Useful for confirming the channel in use.
Tips for OSD Placement:
- Avoid Clutter: Try not to overcrowd your screen with too much information. Focus on the essentials to keep your FPV feed clear and readable.
- Use Logical Placement: Place your critical OSD elements in locations where they are easily readable without obstructing your view.
OSD Settings
On the right side of the OSD tab, you’ll find various OSD-related options, most of which can be left at default. However, here are some key settings to consider:
- Video Format: Choose Auto, PAL, NTSC, or HD depending on your camera/FPV system. For analog, I recommend setting it to “Auto” so it detects the correct video format for you. For DJI, Walksnail and HDZero, set this to HD.
- Alarms: Set limits for RSSI, battery capacity, flight time, and altitude. When these limits are reached, the data will flash on-screen as a warning.
Operating the OSD Menu
Betaflight OSD not only displays flight information but also allows you to access a configuration menu directly from your goggles. This menu lets you adjust various settings of the drone without connecting to a computer, including PID settings, rates, VTX power/channel, and more. This feature is handy for fine-tuning your quadcopter in the field. Note that not all options in Betaflight Configurator are available in the OSD menu, so you might still need your computer or an Android app for full configuration.
To access the OSD menu, disarm your drone and use your transmitter sticks (mode 2):
- Throttle center
- Yaw left
- Pitch forward
Your throttle should remain at around center during menu navigation.
Navigating the OSD Menu:
- Pitch Up/Down: Move up and down the menu items.
- Roll Right: Enter a menu item.
- Roll Left: Go back or exit.
- Roll: Change parameter values.
- Yaw Right: Quickly save and exit.
- Yaw Left: Go back to the last menu.
After making adjustments, save your settings by going back to the main menu and selecting “Save & Reboot.”
Changing Betaflight OSD Font
You can change the OSD font by clicking the “Font Manager” button located at the bottom right of the OSD tab. Select a font preset (I recommend “Bold”) and click “Upload Font.”
In this window, you can also upload a custom logo, which will appear when you plug in the battery.
Be aware that once you’ve uploaded a new font, it won’t show in the preview window, but it will display correctly in your goggles.
FAQ and Tips
- Q: I’m getting a core temperature warning. Should I be concerned?
- A: This can happen when the drone is sitting on the bench for too long without proper cooling. It’s usually a non-issue, and you can disable this warning in the OSD tab under “Warnings”.
- Q: I’m getting an RSSI warning. Should I be concerned?
- A: Ensure you’ve set the correct RSSI alarm value. By default, it’s set to -60 which is too high for ExpressLRS. Adjust it to match your system’s sensitivity limits. For example, for ExpressLRS 250Hz, the sensitivity limit is -108dBm, so I normally set the warning to be around -93dBm (-15dBm link margin). You can set this in CLI:
set osd_rssi_dbm_alarm = -93
. More info here: https://oscarliang.com/lq-rssi/#What-is-RSSI
- A: Ensure you’ve set the correct RSSI alarm value. By default, it’s set to -60 which is too high for ExpressLRS. Adjust it to match your system’s sensitivity limits. For example, for ExpressLRS 250Hz, the sensitivity limit is -108dBm, so I normally set the warning to be around -93dBm (-15dBm link margin). You can set this in CLI:
- Q: I’m not getting OSD text on the screen. Why?
- A: If you can see the Betaflight logo when power on, that suggests your OSD is working, ensure you’ve selected OSD elements and are using the correct OSD profile. If there’s no Betaflight logo at startup, check your video format (NTSC/PAL), set it to Auto if in doubt. Also check your camera and VTX wiring. Or else it could be a faulty OSD chip on the FC.
- Q: How do I change the craft name in the OSD?
- A: The craft name input field is located in the Configuration tab.
- Q: I’m seeing a lot of “V” letters on the screen.
- A: This indicates the font file is missing on the FC. Simply re-upload the font file in the OSD tab should fix this.
- Q: The OSD doesn’t save the font and other OSD settings.
- A: Try plugging in your battery while making changes in Betaflight Configurator to ensure the OSD chip is fully powered. Warning: make sure to remove the props first for safety.
- Q: “Upload Font” isn’t responding.
- A: Try plugging in the battery before connecting the USB to Betaflight Configurator, then try again.
My OSD Setup CLI Commands
Configuring OSD elements from scratch for every quad you build can be time-consuming. To make things easier, I’ve compiled some of my preferred OSD elements/layout configurations that you can easily copy and paste into the CLI.
Analog (without GPS)
set osd_vbat_pos = 6465
set osd_link_quality_pos = 2112
set osd_rssi_dbm_pos = 2080
set osd_tim_2_pos = 6520
set osd_throttle_pos = 2298
set osd_vtx_channel_pos = 2101
set osd_current_pos = 2327
set osd_mah_drawn_pos = 6496
set osd_craft_name_pos = 6155
set osd_warnings_pos = 6410
set osd_avg_cell_voltage_pos = 2348
save
Analog (with GPS)
set osd_vbat_pos = 2371
set osd_link_quality_pos = 2179
set osd_rssi_dbm_pos = 2147
set osd_tim_2_pos = 2467
set osd_flymode_pos = 2456
set osd_throttle_pos = 2391
set osd_current_pos = 2421
set osd_mah_drawn_pos = 2404
set osd_gps_speed_pos = 2359
set osd_gps_lon_pos = 2065
set osd_gps_lat_pos = 2048
set osd_gps_sats_pos = 2115
set osd_home_dir_pos = 2190
set osd_home_dist_pos = 2156
set osd_flight_dist_pos = 2435
set osd_altitude_pos = 18508
set osd_warnings_pos = 14601
set osd_avg_cell_voltage_pos = 2339
save
Analog (Tiny Whoop)
set osd_vbat_pos = 6444
set osd_link_quality_pos = 2112
set osd_rssi_dbm_pos = 2080
set osd_tim_2_pos = 6520
set osd_throttle_pos = 2298
set osd_vtx_channel_pos = 2101
set osd_current_pos = 2327
set osd_mah_drawn_pos = 6496
set osd_craft_name_pos = 6155
set osd_warnings_pos = 6410
save
Minimalist Setup
For those who prefer a clean and uncluttered view, the minimalist setup focuses on displaying only the essentials:
set osd_vbat_pos = 2433
set osd_rssi_dbm_pos = 2150
set osd_tim_2_pos = 6520
save
HD (with GPS)
set osd_vbat_pos = 2529
set osd_link_quality_pos = 2337
set osd_rssi_dbm_pos = 2305
set osd_tim_2_pos = 2625
set osd_flymode_pos = 3670
set osd_throttle_pos = 3606
set osd_current_pos = 3636
set osd_mah_drawn_pos = 2561
set osd_craft_name_pos = 2049
set osd_pilot_name_pos = 2081
set osd_gps_speed_pos = 3382
set osd_gps_lon_pos = 3119
set osd_gps_lat_pos = 3087
set osd_gps_sats_pos = 2369
set osd_home_dir_pos = 2269
set osd_home_dist_pos = 2235
set osd_flight_dist_pos = 2593
set osd_altitude_pos = 18587
set osd_warnings_pos = 14712
set osd_avg_cell_voltage_pos = 2587
set osd_log_status_pos = 1616
set osd_sys_lq_pos = 225
set osd_displayport_device = MSP
set osd_canvas_width = 60
set osd_canvas_height = 22
save
HD (without GPS)
set osd_vbat_pos = 2499
set osd_link_quality_pos = 2237
set osd_rssi_dbm_pos = 2229
set osd_tim_2_pos = 2563
set osd_flymode_pos = 3596
set osd_throttle_pos = 3532
set osd_current_pos = 3563
set osd_mah_drawn_pos = 2531
set osd_craft_name_pos = 2083
set osd_pilot_name_pos = 2115
set osd_warnings_pos = 14677
set osd_avg_cell_voltage_pos = 2520
save
Conclusion
Setting up the OSD in Betaflight is straightforward, but with some customization, you can significantly enhance your FPV experience. Whether you’re using the OSD to keep track of your battery life, monitor your flight time, or access the configuration menu on the fly, it’s a feature that every pilot can benefit from. Use the steps and commands in this guide to tailor your OSD setup to your specific needs, and enjoy a more immersive FPV flying experience.
Edit History
- Jul 2017 – Article created
- Apr 2021 – Removed information regarding MinimOSD, no longer applicable; updated article with the latest information and screenshots
- Aug 2024 – Tutorial updated and added my OSD setups in CLI commands
55 comments
Hi Oscar, i can’t find solution in internet. i have speedybe f405 v4. i can’t force it to record number of flights and total distance.
set stats = ON doesn’t show up in my Cli commands.
when i set these values (distance etc, they reset after replug battery).
They will reset after unplugging the battery – these stats are not designed to be saved, they are reset after each flight.
Hey Oscar. Thank you for your awesome work! Maybe you can help me, since I updated to Betaflight 4.4 the font in my OSD is about double as large as it used to be. It takes up lots of space and just looks silly. I am using PAL (not auto, since it is moving up tings when i leave it on auto).
Do you know how I can reduce font size?
Kind Regards
Michael
Using the HDzero freestyle vtx, I basically have to choose the HD video format otherwise I loose too much room on the display if I choose PAL, NTSC or AUTO. But choosing the HD video format makes my screen way larger than needed. That is OK I just move the fields around to get them when I want. But my problem is the stats. When the stats are displayed at the end of a flight, I only see the captions as the values are way past the edge of the image. How can I re-center the stats so I can see the values?
Hi Oscar thank u for some much great information!
Can u tell.me how to read out the settings of my personal FC Betaflight Settings especially the OSD Position and Functions wich i use that i can save for my other Quads…and use when i need….
Sure, go to CLI in Betaflight Configurator, and enter the command “diff”, then copy the snippet that begin with “set osd_”.
The next time you want to apply the same OSD settings, just enter this snippet, with the command “save” at the end.
my osd dissapears when i arm my quad, this started happening after i flashed bluejay to the esc. any idea what it could be? Speedybee f405 v3 stack
analog? DJI? or other fpv systems?
does osd come back after you disarm? can you get into the OSD menu using stick commands after disarm?
do you have multiple OSD profile setup and you accidentally get into an empty OSD profile maybe?
I had the same issue today, OSD disappears when I arm. Speedybee F405 v3 stack, Bluejay ESC firmware, analog VTX
Hello… Is there any way how to reverse (180° ) the image of fpv cam without turning the whole cam upside down or using the hardware buttons ? Like CLI command or something ?? Thanks
This is only possible in the camera settings, if the camera has this capability. You can’t do this in Betaflight settings.
with 10.9.0 configurator and 4.4.1 Firmware – i cant save bold letters in my HD OSD Config. Seems that the configurator has som issues… My front manager are grayed out.
And in y firmware setting y must enable both SD and HD too use the widescreen option. if y only choose only HD y cannot see the extended Screen too place y OSD symbols. (or its just a bug from my flightcontroller DarlRC722Dual?
How do I save an OSD profile so I can upload it to other quads?
In CLI, type diff, and find the lines that start with “set osd_” (those are your OSD element positions), and copy them to other quads (remember to save before exiting).
Anyone ever see the OSD working only when usb is connected? Guessing it would some sort of not enough power issue? Any workarounds? This is on a betafpv 75x on 3s. Has a cap on the power lead.
hi kory
I am having the same issue. I have caddx vista unit in my drone. (to replace the analogue system prior) but when I remove the USB connection . I loose OSD after a few seconds even with the battery still connected. Were you able to solve your issue . Please let me know.
Hi Oscar! Many thanks for another awesome tutorial. Really enjoyed!
Hey Oscar,
I am sure you won’t see my post as your pretty busy but here goes nothing,
On my GEPRC KHX5 i am getting on my Cobra S goggles it says “Black Box=Fault” on the osd screen,do you have any idea what may be causing this message?
My other quads don’t report this issue.
Thanks alot,
Harry L
Sounds like an issue unrelated to the OSD itself, replied a little late, however I hope I gave you some clarity on the issue.
Is there any way to change warnings etc in the OSD.
I would love custom text.
Cheers, Adrian
ps. Thank you for your work!!!
Thanks for all of your tutorials and reviews, it helped me a lot for few years now :)
Now I have a weird problem with my Omnibus F4 Pro V3 and Betaflight 4.2
I tried to enable OSD but it won’t show up. Also there is no video-format selection visible in the OSD tab.
At first I thought it’s because the camera (runcam hybrid) is set to NTSC and I can not set it up to PAL ..
but then I disconnected the camera and let only the VTX connected to omnibus, yet there is only grey screen without any OSD, so it’s not a PAL/NTSC problem.
Any idea what could cause this? is the OSD chip (AB7456?) defective? is betaflight not recognizing the OSD chip? would it even show the OSD tab if it wouldn’t recognize it?
Or is it just disabled in Betaflight and I can enable it in CLI?
Thanks in advance for any ideas!
Set the battery voltage to 4.4V
Hello!!
Does TransTEC F7 HD 30×30 Flight Controller for DJI have Betaflight OSD setup?
I have a cl racing 4fs flight controller, a Foxeer Valkor camera, and a Mach 3 VTX. I have the video out from the camera connected to the CAM_S on the FC and the VTX_S connected to the video input to the MACH 3. I have betaflight OSD turned on. No matter what I do, I am unable to get the betaflight OSD to show up in my Goggles. I can see the video image and the Foxeer OSD material, but nothing else. Is there something obvious that I am missing or do I have a bad FC board? Everything else on the FC works fine.
I your FC, camera, and VTX all have OSD, does that create a conflict?
They shouldn’t, the OSD probably just get overlap on top of each other.
You should be able to turn off OSD in your camera and VTX?
hi oscar, ive got betaflight 3.5 everything seems fine apart from one weird thing .
the “battery usage bar” in the osd .it appears on my screen but is always totally empty whatever the battery voltage..
just leaves an empty rectangle on screen ? any ideas ..thanks glenn
I have the exact same issue. any clues? I set my battery capacity to 1500mah and still nothing, though it does flash when its ’empty’
My betafpv board flashed with 3.5 seems to have a weird way of navigating the OSD menu. The sticks are swapped. I have to use throttle to select and roll to scroll the list. Is this a change or a big?
Hi Oscar,
Is it possible to ‘Hack the OSD’ so that it can be used as a multiplexer / second camera stream for video overlay or picture-in-picture?
This way you could have a second FPV camera pointing backwards as your ‘rear view cam’.
Just an idea, not sure if it would work.
Thanks,
Hi All,
Does anyone know if this would work?
Thanks,
No, but….
Fit both cameras and use a video switcher, controlled by RC channel switch on TX, to select front or rear view.
Cheers Steve
This would not be possible.
Picture in Picture requires another chip as well as memory.
PIP chips will store the image in memory, format, then play the video asynchronously. It would use way too many resources with our current hardware.
Thank you UnboundUAV
Hi, I have an Eachine QX65 Micro Quad, it has the Beecore FC, I have all the OSD working with BFlight. One problem I have is that the Bat Voltage constantly flashes on the screen when flying, can’t work out where to adjust in BFlight? Do I need to set an alarm limit? Thx Tim.
Im using Tramp HV and my camera is hooked up directly to tramp HV, will betaflight osd work on this?
No, you need to have the camera going through the board for the osd to be visible on your screen.
Is it possible to connect MinimOSD to Betaflight based Flight controller which already has OSD chip on board? I have Kakute board with broken embedded OSD chip. Want to connect external OSD , any advice of how to do so? As i understand when i activate OSD in Features it tries communicate with already know on board OSD…
Yes you can, just connect your MinimOSD to an UART and configure it as shown in this tutorial.
Am I assuming the capacity warning is for mAh left? so if I set it to 1000 the alarm will sound when there’s 1000 mAh left in the battery? A reply would be greatly helpful. Thanks!
That’s the “mah drawn” warning, once your “mah drawn” reach “capacity” set by you, you will get the warning.
Do I need to use the 5v/Gnd pins on the board for OSD to work, or can I power my vtx and cam via PDB? My Omnibus F4 doesn’t seem to have any voltage going through the Gnd/Ram pins, in 12v or 5v mode. When I power VTX/cam off PDB I don’t see OSD, but when I do the TX combination to open OSD menu it seems like the menu opens(even though I can’t see it) as I am unable to spin up the props after that.
Thanks for the post. I have a Kakute F4 (furibee X215PRO) and when I uploaded the Betaflight Font, there’s no OSD anymore. Tried to go back to another font and no success.
Any idea?
Best regards
O,L.
can you please explain why I can test a camera external of the quad and get a clear image, when installed THRU the control board the OSD shows clearly but NO camera image shows just the OSD.
What did I fail to turn on in Betaflight?
Sonny
sounds like something wrong with the Vin pin onn your FC, or the OSD chip is just faulty.
double check your soldering to make sure though.
Have checked connections all ok and betaflight ok, OSD will show for a second and than change to black screen. Please help
Hi, I have a few setups with separate mwosd boards and I’d like to be able to use the betaflight firmware on the mwosd board and have the flight controller recognize it as if its an AIO board. Where can I find the firmware to flash to it.
I just want to use the betaflight osd configurator instead of having to go through the serial passthrough and then mwosd configuration….
Thanks .
sorry I don’t know if that’s possible at the moment, wiring is not easy as you need to connect it with SPI as far as i know.
Is it possible to change the language in BF OSD? My HGLRC F4 V5 is defaulting to Chinese (I think) and I’d like to change it to English, but I don’t know where in the menus I can access this.
Have you tried re-uploading font in the Configurator?
Hi,
Any one knows, how can I select (and if it´s possible) lowband for TBS or Tramp from osd?
Thanks.
Silly ? Betaflight osd Is the cam required to have osd? I’m thinking yes but often wrong
I am not sure i understand your question fully, but Betaflight OSD does not require the camera to have OSD. The text is generated in the flight controller and overlayed on the camera.
Hey is there any chance you can write about using external OSDs with betaflight?
Blue Falcon(RIP) on YT had a micro minum osd working with a sp f3 Board. I tried hooking mine up to a SP F3evo but the osd tab would register the osd. Osd worrks fine and read attitude and voltage and arm/disarm state. Heading and RSSI stopped working.
Please tell that the reach of the OSD setting screen and the reach of the picture from a camera aren’t identical.
In case of the camera which is pal system in particular, actual indication becomes quite smaller than a setting screen.
When setting an indication element as the end on the screen and the lower end, an element isn’t seen.
I apologize for that in clumsy English.