Repository navigation
fpvOS 2026.10.beta3
Pre-releasefpvOS 2026.10.beta3
The biggest release yet. With an fpvOS air unit, latency is down to about 32 ms glass to glass, and steady. The goggle moves to a kernel built from source with an open radio stack, video is decoded as it arrives instead of a whole picture at a time, and fpvOS now has an image for the air unit too. On top of that: a new settings interface, a DVR gallery and stats screen on the goggle, and better flight controller telemetry in the HUD.
| Version | |
|---|---|
| fpvOS | 2026.10.beta3 (3978b45) |
| kestrel-gnd | 2026.10.beta3 (7b5cd266) |
| kestrel-air | 2026.10.beta3 (c119aff3) |
| ar_libre | 2026.10.beta3 (61dd6ed) |
Highlights
- Much lower, steadier latency: about 32 ms glass to glass with an fpvOS air unit (depending on the display). Intra refresh replaces keyframe bursts (worst case 48–62 ms → ~25 ms), and pictures are decoded as their slices arrive. New DISPLAY › Frame Mode: SPLIT (lowest latency, may show split frames), FULL FRAME (default) or FULL DECODE.
- Open radio stack. ar_libre replaces Artosyn's driver, daemon and library.
- Linux 6.12 with Mesa, built from source.
- An fpvOS image for the air unit: Caddx Ascent Lite and Lite+, flashable with the fpvOS Flasher. Stock air units still work (Compatibility).
- Settings in the canopy, with a channel page that follows your region's rules.
- Gallery and stats on the goggle: play and delete recordings, and see latency, frame pacing and the link live.
- Flight controller telemetry polled over MSP: battery, altitude, GPS, home and flight mode.
- Reactive HUD that moves with the aircraft, from the camera's IMU (Lite) or the flight controller's gyro (Lite+).
Installing
Download from the assets below:
fpvos-vrxpro-2026.10.beta3.img.xz: the goggle's SD card imageAscent_H_Sky_18_21_10.img: the air unit image (recommended)
Goggle: flash an SD card with balenaEtcher
The VRX Pro boots fpvOS from the SD card; the goggle's own firmware is never touched. Remove the card and it boots stock again.
- Install balenaEtcher (Windows, macOS, Linux).
- Flash from file: pick
fpvos-vrxpro-2026.10.beta3.img.xz. No need to unpack it. - Select target: your microSD card (2 GB or more). Check the size so you pick the card, not another drive.
- Flash! Etcher writes the card and verifies it.
- Power the goggle off, insert the card, power it on. You're on fpvOS when you see the fpvOS idle screen instead of the stock UI.
- Power the goggle off and on once more before you record: the first boot sets up the recordings partition on the rest of the card.
Air unit: flash with the fpvOS Flasher (recommended)
The goggle works with a stock air unit too; the fpvOS air image adds the features listed under Compatibility. Ascent Lite and Lite+ only.
- Open the fpvOS Flasher in Chrome or Edge on a desktop computer. Nothing to install.
- Close the Caddx PC tool and any serial terminal.
- Plug the air unit into the computer over USB, click Connect and pick its port.
- Drop
Ascent_H_Sky_18_21_10.imgon the page and read its checks. - Click Flash. The unit restarts twice while it flashes; don't unplug it until the page says it's done.
The Caddx PC tool flashes the same file. Keep the file name as it is: both tools check it. To go back to stock, flash Caddx's own Ascent air unit update the same way.
Goggle (Caddx Ascent VRX Pro)
Video
- Stream decode (kernel rkvdec2 + MPP patches), switchable at run time.
- Early presentation: a picture's top half shown on a second video plane before the bottom half is decoded; only on displays fast enough to benefit, and not while recording.
- The OSD has its own display plane and is only flipped once fully drawn.
- A hung decoder is detected and recovered by a watchdog (
rk_vcodec.rkvdec2_stream_stall_ms, default 50 ms); a picture whose remainder is lost is ended at once instead of stalling the stream. - Latency is measured per slice, from capture of its first row to the scan-out that lights it, split into stages (Enc, RF, Dec, Disp) when the air unit runs kestrel-air.
Radio
- ar_libre (
arlink.ko+libarlink) in place of the vendor stack, with one supervisor and one bring-up at a time in the radio scripts. - Max Bitrate in the VIDEO tab: a cap on kestrel-air's bitrate, sent at every link-up.
- The air unit is offered the same power levels as on stock.
Interface
- New canopy settings UI (see Highlights), with UI Scaling applying to all of it.
- AIR UNIT › INFO: what the linked air unit is and runs, stock's Device Info rows plus the fpvOS version and capabilities of a kestrel-air unit.
- AIR UNIT › SERIAL: counts the flight controller's MSP frames and bytes.
- Camera settings follow what the air unit reports it is running: Rotate and 3D DNR now show the real value.
- Betaflight OSD: every glyph from Betaflight's real symbol table, each cell drawn at its on-screen pixel size, normal letter spacing.
- Menu cleanup: Drone Model, Demo Mode and the HUD Graph are gone (the stats screen replaces the graph); one Clock row; no section headers; Canopy Voltage only shown with the canopy HUD.
Gallery and DVR
- On-goggle gallery: browse, play, seek, pause and delete recordings; thumbnails and lengths shared with the web gallery.
- Stats screen as its own tile, with a 10 s / 1 min / 3 min window.
Air unit (Caddx Ascent Lite and Lite+)
New in this release: ./build.sh air builds an image for the air unit.
- Flashable with the Caddx PC tool or the fpvOS Flasher in the browser (see Installing).
- Runs kestrel-air: the camera pipeline, the encoder and the link in open code, on ar_libre.
- Lite+ support: the OS02K10 camera, detected automatically.
- Camera IMU in the video (
--imu): the Lite's IMU samples carried in the H.265 stream for the reactive HUD; the Lite+ uses the flight controller's gyro (MSP_RAW_IMU) instead. - Flight controller polling over MSP for the HUD (attitude, battery, altitude, GPS, flight modes).
- Tells the goggle what it is and runs (version and info messages), and timestamps each slice on the radio's clock so the goggle can measure glass-to-glass stages.
- SSH over USB: the air unit comes up as a USB network device with a DHCP server at 192.168.2.1. Login
root/rootby default; set your own password or keys at build time (FPVOS_AIR_ROOT_PASSWORD). - Radio robustness: a single failed bus transfer no longer restarts the unit (only a bus that stays wedged does, at most 3 times in a row); start-up gives up after 30 s if the radio never appears, so the flight controller and pair button still work; a radio chip reset restarts the app cleanly instead of leaving no video until a power cycle.
Build and release
- Licences and sources ship with every goggle image.
- ar_libre and kestrel-air are fetched from GitHub at their pinned commits.
Known issues
- This is a beta. Fly it, but keep a stock card or goggle handy.
- Small occasional video artifacts have been seen in test flights.