Skip to content

fpvOS 2026.10.beta3

Pre-release
Pre-release

Choose a tag to compare

@gehee gehee released this 09 Oct 03:43
· 56 commits to main since this release
Immutable release. Only release title and notes can be modified.

fpvOS 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 image
  • Ascent_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.

  1. Install balenaEtcher (Windows, macOS, Linux).
  2. Flash from file: pick fpvos-vrxpro-2026.10.beta3.img.xz. No need to unpack it.
  3. Select target: your microSD card (2 GB or more). Check the size so you pick the card, not another drive.
  4. Flash! Etcher writes the card and verifies it.
  5. 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.
  6. 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.

  1. Open the fpvOS Flasher in Chrome or Edge on a desktop computer. Nothing to install.
  2. Close the Caddx PC tool and any serial terminal.
  3. Plug the air unit into the computer over USB, click Connect and pick its port.
  4. Drop Ascent_H_Sky_18_21_10.img on the page and read its checks.
  5. 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 / root by 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.