Article

Setting up the Betaflight OSD: video format, the elements worth showing, warnings and post-flight stats

In FPV goggles the OSD is the whole instrument panel. Betaflight draws it from the flight controller: pack voltage, flight time, link quality and the warning line that tells you why the quad will not arm or that the pack is nearly flat. Almost everything is set in one tab of Betaflight Configurator, but a few defaults catch people out. The link warnings are off out of the box, the timer people usually watch is the second one, and the post-flight statistics do not appear at all if you disarmed in failsafe.

The defaults quoted below come from the Betaflight 4.5 source code and the current CLI reference.

Before you open the OSD tab

What the OSD needs depends on the video system.

  • Analog. The flight controller needs an OSD chip. The Betaflight wiki names the MAX7456, Oscar Liang the AT7456E. Most boards have one, but some designed for digital systems leave it out, and the board's spec sheet should say so. The camera signal goes to the Vin pad and the video transmitter to Vout.
  • Digital (DJI, Walksnail, HDZero). No chip is needed. The VTX receives the OSD over a UART using MSP DisplayPort, so in the Ports tab that UART gets the peripheral VTX (MSP + Displayport).

In the Configuration tab, make sure the OSD feature is enabled. If a digital system still shows no OSD in the goggles after everything is set, Oscar's first suspect is the firmware: Betaflight's cloud build only includes the options you selected, and the HD OSD needs OSD_HD (OSD_SD is the analog one). The fix is to back up the settings, flash the same version again with OSD_HD ticked and restore them. The article on backing up Betaflight before flashing on this site covers the backup part.

Video format and units

Video Format decides the grid the elements sit on:

Setting Grid Use
Auto guessed Analog, when you are not sure
PAL 30 columns x 16 rows Analog; with a MAX7456 it must match the camera signal
NTSC 30 columns x 13 rows Analog; same rule
HD 53 x 20 by default Digital systems using MSP DisplayPort

With HD, Betaflight can ask the VTX over MSP DisplayPort which grid it supports and adjust to it. Oscar's advice is short: Auto for analog, HD for DJI, Walksnail and HDZero.

Units are Metric, Imperial or British. British shows speed in miles per hour but distance in kilometres and temperature in Celsius. The unit matters for one alarm later: the altitude threshold of 100 means metres or feet depending on this setting.

Elements: start with three

Each element in the list on the left has three checkboxes, one per OSD profile. Tick the first box and the element appears in the preview, where you drag it into place. If you do not need profiles, Oscar suggests setting both "Preview for" and "Active OSD Profile" to profile 1 and only using the first column.

Betaflight's setup guide names the minimum:

  • Warnings, for low battery, link problems and other faults;
  • Battery average cell voltage, which reads the same on any pack size (16.0 V on a 4S shows as 4.0 V);
  • one link metric: Link quality, RSNR Value, RSSI Value or RSSI dBm Value, whichever your radio system reports.

For ExpressLRS that means Link quality and RSSI dBm rather than RSSI Value, with RSSI Channel and RSSI_ADC set to Disabled in the Receiver tab. The articles on ELRS packet rates and on Betaflight failsafe on this site explain where to put those alarms.

Oscar's usual extras are pack voltage, Timer 2, current draw and mAh drawn, throttle position and VTX channel. Current and mAh need a current sensor, and they are only worth showing once it is calibrated (there is a separate article on that here). His layout advice comes down to keeping the screen uncluttered and putting the critical numbers where you can read them without them covering your view.

Timers

There are two timer elements. By default Timer 1 counts On time, from the moment the flight controller powered up, and Timer 2 counts Total armed time. That is why Oscar describes Timer 2 as the flight timer. The sources work like this:

  • On time: time since power-up.
  • Total armed time: all armed time since the battery was plugged in, added up across every arm and disarm.
  • Last armed time: starts from zero each time you arm.
  • On/Armed time: shows armed time while armed and on time while disarmed.

Each timer also has an alarm in minutes, 10 by default. When the timer reaches it, the element starts blinking. Zero turns the alarm off. Set it to the flight time at which you want the reminder.

Alarms make numbers blink

The Alarms section makes the matching element flash on screen once a value crosses its threshold. The defaults:

Alarm Default
RSSI 20 %
RSSI dBm -60 dBm
Link quality 80 %
Capacity 2200 mAh drawn
Altitude 100 (m or ft)
Core temperature 70 °C

Two of them usually need changing. Oscar points out that -60 dBm is normally too high for ExpressLRS, because the useful threshold depends on the sensitivity limit of the packet rate you fly. His example is 250 Hz, where the limit is -108 dBm; with a 15 dB margin he sets osd_rssi_dbm_alarm = -93. The altitude alarm exists to keep you under a legal ceiling. Set it to the limit you fly under (120 m in the EU open category), or, as Oscar suggests if you do not want it, to an unrealistically high value such as 999.

Warnings: the line that explains problems

The Warnings element shows one short message at a time, from a list of sources you can switch on and off in the Warnings section. The ones you meet most often:

On screen Meaning
an arming flag name the most severe reason the quad will not arm
BATT < FULL before the first arm, the average cell is below vbat_full_cell_voltage (4.10 V by default)
LOW BATTERY the average cell is below the warning voltage (3.50 V by default)
LAND NOW the average cell is below the minimum voltage (3.30 V by default)
FAIL SAFE the flight controller is in failsafe
CORE and a temperature the processor is above the core temperature alarm
RSSI DBM, LINK QUALITY the link has dropped below its alarm

The article on arming disable flags on this site goes through the arming messages one by one. Oscar adds that the core temperature warning usually shows up when the quad sits on the bench for a long time without airflow, and that you can turn it off.

The catch is in the defaults. Every warning is enabled except RSSI, Link quality, RSSI dBm, RSNR and Battery over capacity. If you only set an LQ alarm, the LQ number blinks, but the warning line stays quiet. For a LINK QUALITY or RSSI DBM message where you are already looking for warnings, tick those sources in the Warnings list as well.

Post-flight statistics

When you disarm, the OSD replaces the flight screen with a statistics page. By default it shows Timer 2, maximum speed, minimum battery voltage, minimum RSSI, maximum current, mAh used and the Blackbox status and log number. Firmware built with RC statistics adds time at full throttle, how many times you hit full throttle and average throttle. You change the list in the Post Flight Statistics section. If you prefer per-cell values, set osd_stat_avg_cell_value = ON shows battery statistics as average cell voltage.

According to the source, the page stays up for up to 60 seconds, and pushing the throttle or pitch stick high while disarmed clears it early. It is not shown at all if the disarm happened with failsafe active. It is also skipped after a disarm caused by runaway takeoff or crash detection when the Warnings element is on screen. The statistics reset on the next arm and cannot be downloaded. Oscar's answer to readers who ask is to record that screen on the DVR.

Profiles and an OSD switch

Betaflight has three OSD profiles, for example a full race layout and a clean one for filming. An element can appear in several profiles, but always in the same position: you cannot place it differently per profile. To switch from the radio, add an adjustment range in the Adjustments tab with the function OSD Profile Selection on an AUX channel. Without a switch, pick the profile in the CLI with set osd_profile = 2 and save.

If you only want to hide the OSD now and then, the Modes tab has an OSD DISABLE mode. While it is active, the post-flight statistics are hidden too.

Fonts, the stick menu and copying a layout

  • Fonts (analog only). Font Manager has presets such as Default, Bold, Large and Clarity. Pick one and click Upload Font. Some boards do not power the OSD chip from USB alone, so the upload does nothing until you plug in a battery with the props off. Oscar notes that the preview does not show the new font, but the goggles do. If the screen shows rows of V characters or garbled symbols, the font is missing or outdated, and uploading it again fixes it. With a digital system the Font Manager is greyed out.
  • Stick menu. With the quad disarmed and in Mode 2, throttle centre, yaw left and pitch up opens the OSD menu, where you can change PIDs, rates, VTX settings and more from the goggles. Use "Save & Reboot" to keep the changes. Not every Configurator setting is in the menu.
  • Copying a layout. Type diff in the CLI, copy the lines that start with set osd_ and paste them into the CLI of the next quad, followed by save. The position values also carry the profile assignment, so pasted lines keep each element in the same profiles.