fpv.wtf / WTFOS — right for our O4 build?

A look at fpv.wtf — and what we actually do for OSD on ArduPilot
Discord said: “just flash WTFOS, then you get OSD.” I hadn’t even activated the O4 Air Unit Pro yet and already had a tab open on fpv.wtf. Slow down. Rooting modern DJI hardware sounds cool until you put warranty, updates, and a brick in one sentence.
We’re adding digital FPV next to ArduPilot and ExpressLRS. Before we flash anything, we wanted to know whether WTFOS fits our stack.
What is fpv.wtf / WTFOS, really?
fpv.wtf is the web configurator for WTFOS: a community framework to root/configure DJI HD FPV goggles and air units (extra packages, custom OSD paths, tweaks).
Historically valuable for DJI FPV Air Unit / Vista and early goggles. O3 still had package support. For O4, the project is explicit: no support, no roadmap.
Source: wtfos README — supports legacy AU/Vista/Goggles V1 (and limited V2); O3 via packages; no plans for O4 Air Unit, Goggles 2, Integra, or Goggles 3.

WTFOS project logo — useful for older DJI HD hardware, not for O4
Why it doesn’t fit us
Our stack:
- Video: O4 Air Unit Pro
- RC: ELRS XR4 (not DJI radio)
- FC: Pixhawk 6X Mini + ArduPilot
- Goggles: O4 ecosystem (typically Goggles 3 / N3)
WTFOS doesn’t solve a problem that native MSP DisplayPort doesn’t already solve. Forcing WTFOS onto O4/Goggles 3 is out of scope. And risky. Native OSD already works — community confirmed with O4 + Goggles 3.
So: we do not use WTFOS. FC OSD in the goggles goes through native MSP DisplayPort on ArduPilot.
Short history — why WTFOS stops at O4
DJI’s digital FPV line (not the old Phantom goggles) went like this:
Air units / cameras
| Year | Product | What changed |
|---|---|---|
| Jul 2019 | DJI Digital FPV System — Air Unit + camera + goggles V1 | First mainstream HD digital FPV (~720p live, low latency); closed ecosystem |
| Jan 2020 | Caddx Vista (DJI protocol) | Smaller/lighter/cheaper air unit for 5″; same goggles ecosystem |
| 2020–21 | Vista / AU firmware updates | Higher bitrate modes; community + WTFOS thrives on this generation |
| Nov 2022 | O3 Air Unit | Larger sensor (1/1.7″), 4K/60 recording, ~1080p/100 live, O3+ link |
| Jan 2025 | O4 + O4 Pro | O4 ultra-light (~8 g); Pro 1/1.3″, 4K/120, D-Log M — our path |
Sources: DJI announcements (FPV System 2019, O3, O4); context: Oscar Liang — DJI FPV.
Goggles
| Year | Product | Note |
|---|---|---|
| 2019 | FPV Goggles (V1) | Start of the digital line |
| Mar 2021 | Goggles V2 | Refresh + DJI FPV drone ecosystem |
| Aug 2022 | Goggles 2 | Micro-OLED 1080p; O3 era |
| Mar/Apr 2023 | Goggles Integra | Integrated strap/battery; Avata-oriented |
| Apr/May 2024 | Goggles 3 | O4-ready; lower latency with Avata 2 / O4 |
| Nov 2024 | Goggles N3 | Budget LCD variant; O4-compatible |
In one line: WTFOS followed AU/Vista/(partial O3). O4 + modern goggles are deliberately out of scope for rooting. Open digital alternative (for later): OpenIPC.
What we do instead: native OSD
Full mount/power/activation: O4 install. Here we only cover the OSD path — how / why / which problem.
Problem: battery, mode, arm status in-view without a second screen. Solution: MSP DisplayPort from the Pixhawk to the O4 UART, then into the goggles.
1. Hardware
Props off. Test video without UART first (pack → Y → O4 → picture in goggles). Then the 3-in-1 cable:
- White UART_RX ↔ FC TX (crossed)
- Grey UART_TX ↔ FC RX
- Brown GND with the signal pair
- Yellow S.Bus → open (ELRS keeps RC)
Pick a free UART on the Pixhawk — not TELEM1 (LD-06) and not TELEM2 (ELRS). Port overview: ports & wiring. Do we have that UART already? Not sure yet. Then we wait. Picture first.
2. ArduPilot parameters
This set brings MSP DisplayPort into the goggles. n = the serial index of your chosen UART (e.g. SERIAL4 if free).
| Parameter | Value | Note |
|---|---|---|
SERIALn_PROTOCOL |
42 | DisplayPort |
SERIALn_BAUD |
115 | 115200 |
OSD_TYPE |
5 | MSP_DISPLAYPORT |
OSD_TYPE2 |
5 | Often required on Goggles 3 |
MSP_OPTIONS |
often 4 | Betaflight font on Goggles 3 |
Reference: ArduPilot DisplayPort OSD. Full FC param status: ArduPilot settings.
3. Goggles / DJI side
- Air unit activated via DJI Assistant 2 (FPV).
- Air unit + goggles firmware up to date.
- In goggles: CE power (EU/NL).
- No second RC source via O4 S.Bus beside ELRS.
4. Bench checklist
- Picture OK without UART.
- UART connected. Params set. Reboot FC.
- OSD elements visible in goggles (arm, batt, mode, …).
- ELRS stick link + failsafe unchanged.
When to look at fpv.wtf at all?
Only if you’re rooting legacy DJI HD (AU/Vista / older goggles) or chasing packages. That is not our UL8 line. For O4: bookmarking the site is fine. Installing is not.
Read next
- O4 install
- O4 Air Unit Pro
- OpenIPC — open FPV (later)
- ExpressLRS explained
- ArduPilot + ELRS setup
- Ports & wiring
Choice log
| What | Evaluation of fpv.wtf / WTFOS plus a practical native OSD howto for O4 + ArduPilot |
| Why | Community often mentions WTFOS — we check fit before we flash |
| Our pick | No WTFOS. OSD via MSP DisplayPort. RC stays ELRS. |
Photos

