Repository navigation
v9.6.0 — Cinema (standard build)
The standard install. Everything below is what this firmware adds over the official HDZero firmware.
Baseline: official HDZero main at 6fe76d4 (version 9.5.0, 6 July 2026) — 387 commits behind this release. All official upstream work up to that point is included.
Downloads: HDZERO_GOGGLE-77-206-9.6.0.bin (Goggle) · HDZERO_GOGGLE2-77-184-9.6.0.bin (Goggle 2) · HDZERO_BOXPRO-77-211-9.6.0.bin (BoxPro)
No games in this build — see the -quake and -games releases for those.
🎬 Cinema — Plex, Jellyfin and Immich
The headline feature. Turns the goggle into a private big screen for your own media library, reachable from the main menu as Plex and Immich.
- Plex movie library browsing from a Plex Media Server on your LAN, with a poster wall and background poster prefetch
- TV shows — series browsing with episode drill-down
- Playback of server-remuxed TS, streamed to the SD card and played through the goggle's stock hardware-decoded player
- Selectable stream quality — 1080p, 720p or 480p — plus automatic quality step-down when the server can't keep up
- Resume where you left off, using the server's stored playback position
- Three ways to sign in:
- the smart-TV flow — the goggle shows a code, you enter it at
plex.tv/link - a
plextoken.txt/jellyfintoken.txtin the SD card root, picked up automatically at boot — works with no internet - typing a token with the on-screen keyboard
- the smart-TV flow — the goggle shows a code, you enter it at
- Full Jellyfin support behind the same movie UI, with playback-session reporting so the server tracks watched state, and transcoding constrained to the envelope the goggle's decoder is known to handle
- Immich — selective backup of DVR recordings to a self-hosted Immich server, authenticated with an API key
- Long-press Func exits playback and returns to the library
- WiFi throughput tuning for streaming — XR819 power-save disabled, raised TCP windows
📼 DVR recording
- Selectable rate control — CBR or VBR, each at three quality points, with on-page explanations of what the setting actually does
- VBR quality and maximum QP directly settable
- Five record bitrate steps — Normal, 1/4, 1/2, 1.5x, 2x
- Correct colour — full colour range is declared in the H.264 VUI, so players no longer crush or wash out levels
- Reliable record OSD — the record indicator bit is re-asserted and read back at record start
- Opt-in ELRS race naming — recordings named from the race label sent over ELRS
▶️ DVR playback
- True 90Hz and 60Hz playback on both Goggle and Goggle 2, routed through the live video path
- Panel refresh matched to the clip, frame rate probed from the
.tsPES timestamps - Auto-hiding control bar — fades after 4 seconds, wakes on dial input
- Faster video start — baseband kept warm and prewarmed in the background while browsing the playback list
- Receiver off during playback, so the raster stays black behind the video
- On-screen playback FPS counter for diagnostics
Hardware note that cost many field iterations: the FPGA UI input path only locks 1080p50 on both goggle generations, so retimed playback has to ride the live-video path. On the Goggle the UI additionally re-renders at 1280x720 in 720p90.
📶 WiFi
- Laptop-style network selection — pick from a scan list, with remembered networks reconnecting automatically
- Scanning recovers from a stale
wpa_supplicantsocket instead of hanging
📡 ELRS and VTX control
- VTX Control — a master switch governing whether the goggle may send VTX commands at all
- Send VTX is deliberate, assignable to a button (default: right long-press). Changing channels never auto-sends
- Configurable "VTX Sent" banner with a live style preview
- ELRS backpack fix — readiness-gated power-on plus a self-healing watchdog
🕐 Clock and RTC
- Time survives power-off — written to every RTC device present, with the running clock persisted so battery-less units reboot near the right time
- Set-clock rollers track the live clock and load the current time on entry
- The clock page stays live while merely highlighted in the menu
- Correct clock-battery detection on goggles that have one
🔌 Power
- Shutdown is its own menu entry beside Go Sleep — quiesces the recorder, unmounts the SD card, and shows a safe-to-power-off screen
🖼 Image and source
- Separate analog and HDZero image settings, with switchable source profiles
- Source confirmed before the input switches, and the HDZero loading state shown and animated rather than leaving a blank screen
🛡 Firmware update safety
- Firmware validated before any flash is touched — a corrupt or truncated update file can no longer brick the goggle
- Honest update results — no false
FAILEDon a successful OTA, and no false success when the app partition flash actually fails
💾 Storage and diagnostics
- Automatic SD integrity check skipped when the FAT is already clean, cutting boot time
- Hardware transition log written to
hwlog.txton the SD card - Analog RSSI calibration sampling fixed
- A power cut can no longer factory-reset your settings
🧪 Emulator
- Faithful RTC behaviour and macOS host support for on-desktop development
Installing
Flash through the goggle menu, or drop the HDZGOGGLE binary on the SD card with a develop.sh — see the README.
Confirm the build on the Firmware page; it should read 9.6.0.
Licence
MIT, same as the base HDZero firmware. (The -quake and -games builds are GPLv2 because they link game engines — this one contains no GPL code.)