Releases: GuiDev1994/aurora-tv
v1.0.5 - Keyboard - HDR - Improvements
-> Went back to YUV 255 Option (Only for SDR streaming)
-> Keyboard Reworked, bug of keyboard combination crash solved
-> Tight V-Sync improved
-> Translation fixed
-> New resolution included (3.6k)
This resolution solves the high lattency commands from the client to the host on low decoding times. Newer LG TV's has a strange behavior over 4K or nearest from it, like 3.7k, that the frames decoded doesn't sync with the frames buffered by the Host, causing the extreme lag, this is 100% solved by this resolution, that is the most nearest from 4k (I really can't see any difference between them).
-> Fixed items navigation over Settings Menu (Navigation over the combobox was making a big mess with the navigation behavior)
If you're stuck at a combobox, just press select to navigate to the other options.
v1.0.4 - Visual Reworked
Highlights
- AMOLED layout — pure black background (
#000000), dark surfaces, and violet accent; launcher, game grid, and settings popups share the same theme. - 3.5K resolution (3456×1944) — option between 2K and 4K; ~90% of 4K pixel area with less load on the TV decoder and lower input lag than native 4K on recent models.
- HDR10 (PQ) over HEVC Main10 or AV1 Main10 (when supported).
- Tight display sync (webOS) — tighter panel sync; see below.
- Up to 400 Mbps on the bitrate slider (UI maximum); practical guidance below.
Recommended settings (LG OLED)
| Setting | Suggestion |
|---|---|
| Resolution | 3.5K (3456×1944) — best quality/performance balance for most titles |
| FPS | 60 or 120 depending on game and network |
| Codec | HEVC (H.265); AV1 if host and decoder expose it |
| Bitrate | Up to ~270 Mbps on stable 5 GHz Wi‑Fi — reduces micro-stutters and throughput drops on heavy streams (HDR, 120 Hz). Increase gradually; visual gains above that are usually small |
| Tight display sync | Enable in Settings → Video → Smooth playback (TV) after testing; reconnect the stream when changed |
On an unstable network, start at 120–180 Mbps for 3.5K HDR before going higher.
Tight display sync (VSync)
On the Starfish decoder (webOS), video PTS follows the stream’s nominal frame rate (e.g. 120 Hz) and catches up when the stream falls behind real time, with a small fixed early presentation hint.
- On: steadier panel vsync, less visual “drag” at 120 Hz, no extra decode work.
- Off: behavior closer to stock Moonlight TV.
- Where: Settings → Video → Smooth playback (TV) / Tight display sync — or
[video] tight_display_sync=in the INI. Reconnect after changing.
Status overlay
How to open
- Magic Remote: red (RED) button or EXIT key (traditional remote).
- Gamepad: press LB + RB + Back + Start together, then release (opens the streaming menu).
- Physical keyboard on the host (via stream):
Ctrl + Alt + Shift + S. - During streaming, the app also hints at holding BACK (behavior may vary by remote model).
From the menu: Full keyboard, virtual mouse, suspend, and quit. The compact stats bar can stay pinned on start (Settings → Basic).
Compact mode (single line)
Example: 3456×1944 HDR H.265 FPS 120 N 2/1ms H 4ms S 1ms D 8ms TL 15ms FD 0.00% 245.0 Mbps
| Field | Meaning |
|---|---|
| Resolution / HDR / Codec | Current stream (SDR or HDR, H.264/H.265/AV1) |
| FPS | Render rate on the panel (capped to display refresh) |
| N | Network RTT (average / variance in ms) |
| H | Average host capture latency (ms) |
| S | Submit time to the decoder (ms) |
| D | Average TV decoder latency only (ms) |
| TL | Estimated total latency (N + H + S + D) |
| FD | % of frames dropped on the network |
| Mbps | Measured video throughput |
Color dot: green ≤25 ms, yellow ≤30 ms, red >30 ms (TL).
Full mode
Same metrics in separate rows: video, audio, RTT, network/render FPS, frame drop, bitrate, host and decoder latency.
Full keyboard (soft keyboard)
How to open
- Open the streaming overlay (see above).
- Select Full keyboard — or press the blue (BLUE) button on the Magic Remote during streaming.
Keys are sent directly to the PC (Ctrl, Alt, Shift, Win are sticky: e.g. Alt then Tab = Alt+Tab). B / Back closes the keyboard (on webOS remotes it does not send Escape to the host in that case).
Known issues (to be fixed)
- The remote may send both key and gamepad events for one press, toggling input mode while the keyboard is open.
- Modifier combos (e.g. Ctrl+Q) can sometimes leave a modifier stuck on the host and affect gamepad input on Windows (Game Bar, etc.) — there is mitigation, but it is not 100% reliable in all cases.
- TV remote D-pad on the keyboard: only navigates keys (arrows + OK); other remote keys may close the keyboard or reach the host.
- Yellow (YELLOW) on the Magic Remote no longer opens the keyboard (legacy shortcut intentionally removed).
- While the keyboard is open, avoid switching quickly between TV remote and gamepad.
Build and installation
- webOS build — developer mode, Docker/WSL, manual IPK install.
- Homebrew catalog — publishing to webosbrew/apps-repo.
v1.0.3
Release Notes
Highlights
This release focuses on webOS streaming stability, controller lifecycle fixes, Full Keyboard usability, and improved Sunshine/Apollo compatibility.
Streaming / Video
- Added support for custom fractional FPS values, such as
119.94 FPS. - Custom FPS now also updates
clientRefreshRateX100, allowing the client to advertise refresh rates like11994to the host. - Preset FPS selection now clears the custom refresh override to avoid stale fractional values.
- Improved Sunshine color negotiation with full-range color support.
- Kept high-bitrate Sunshine streaming behavior without forcing conservative webOS decoder caps.
Input / Gamepad
- Fixed duplicate gamepad arrival behavior by avoiding the legacy multi-controller fallback when sending Sunshine controller arrival metadata.
- Added explicit controller removal handling to prevent stale virtual controllers on the host.
- Added tracking to avoid sending duplicate controller arrival events for the same gamepad.
- Added webOS filtering for controller-like HID devices that are not real gamepads, such as remote, pointer, mouse, keyboard, touch, or internal LG/webOS input devices.
- Added extra logging for controller candidates, including name, GUID, axes, buttons, and hats, to make future filtering/debugging easier.
- Improved controller lifecycle handling for
JOYDEVICEADDED,JOYDEVICEREMOVED, andCONTROLLERDEVICEREMOVED.
Full Keyboard / Remote
- Added support for long-pressing the webOS remote OK/Enter button to send a right mouse click to the host.
- Short OK/Enter presses still behave as normal Enter/confirm actions.
- Full Keyboard navigation remains local and no longer requires creating a virtual gamepad on the host.
Build / Packaging
- Bumped version to
1.0.3. - Fixed Docker webOS build environment by installing the missing
fileutility required by the SDK relocation script. - Forced a clean webOS Docker build directory to avoid stale or wrong-architecture static libraries.
Notes
- Rebuild cleanly before testing controller changes.
- If a non-gamepad device is still detected as a controller, check the new Aurora logs for
Controller-like device candidateandIgnoring ...entries.
v1.0.2
Release Notes
Highlights
This release improves the streaming pipeline and refines gamepad/input handling on webOS, with a focus on Sunshine/Apollo compatibility, smoother playback, and more reliable controller detection in games that expect XInput devices.
Improvements
- Added explicit chroma subsampling negotiation for Sunshine (
4:2:0,4:4:4,4:2:2). - Removed the fixed 100 Mbps video bitrate cap for Sunshine hosts, allowing higher configured bitrates when supported.
- Made
clientRefreshRateX100optional, avoiding invalid refresh rate advertisement when no client refresh rate is configured. - Improved webOS/SMP frame pacing to reduce frame presentation irregularities.
- Updated SS4S webOS video bitrate capability reporting.
Input / Gamepad
- Fixed SDL gamepad event routing in the LVGL input layer to include controller device/remap events.
- Reduced the risk of gamepad events being consumed before the session can send a
ControllerArrivalEventto the host. - Improved controller recognition consistency in games that rely on a correctly announced virtual XInput controller.
Build / Dependencies
- Adjusted static
moonlight-common-cbuilds to avoid unnecessaryenetheader installation. - Fixed MbedTLS install layout for toolchains that use
lib/<triplet>paths.
Notes
- This release includes input pipeline adjustments related to FullKeyboard/soft keyboard handling.
- Testing is recommended with games that require XInput controllers, especially Xbox Game Pass titles.
New improvements
New improvements
-> Removed AV1
-> Removed LFR (It doesn't works, the TV decoder handle automatically with the incoming frames behavior)
-> Only one HDR option, that can handle with HLG if the server sends the signal
-> Server option P1 is working now, included a delay slider that solved it
-> Lower lattency and more stable framerate with Tight VSync implementation
-> Keyboard bug solved (Sometimes combined commands mess with the system behavior)
Tested on LG C1 and LG C5
4K 120fps HDR 300mbps of bitrate both
FPS 120 N 1/0ms H 1ms D 8ms (medium with little miliseconds spikes to 10 or 12ms, not much more than that)
Aurora new Version
Aurora v1.0 — Release notes
Overview
This is the first stable release of Aurora, a fork of Moonlight TV focused on 4K 120fps HDR streaming on LG webOS TVs (C1–C5 and compatible), with Vibepollo/Apollo as host.
Decode time and latency adjustments
-
HEVC with 1 reference frame (maxNumReferenceFrames=1)
On webOS, the hardware video decoder struggles with multiple reference frames (up to 16). We disabled the Reference Frame Invalidation capability for HEVC on the client so the host is forced to send only 1 reference frame. This brought decode time down from ~13 ms to around 8 ms. The tradeoff is that on packet loss the host must request a full IDR instead of invalidating references; on a stable home network this is acceptable. -
1 slice per frame
Kept at 1 slice per frame to reduce load on the webOS hardware decoder. -
4 MB buffers (Starfish + decode)
Increased buffers to handle large IDRs at 4K 120fps HDR and avoid BufferFull → IDR request loops that congest the control channel and increase perceived input latency. -
IDR throttle (1500 ms)
Limit of one IDR request every 1500 ms to avoid flooding the control channel (same TCP as gamepad input) and keep controller delay stable even with P1 preset on the host. -
Client-side frame pacing (pauseAtDecodeTime + PTS)
The Starfish pipeline now uses monotonically increasing PTS andpauseAtDecodeTimeenabled so frames are displayed at the target rate instead of in bursts. This reduces stutters when the host encodes very fast (e.g. 1 ms encode time).
AV1 removed
AV1 is disabled by default on the webOS client. In testing, AV1 decode time on webOS hardware was ~8–12 ms versus ~1 ms for H.265 in the same conditions. For interactive 4K 120fps streaming, that extra AV1 latency made the experience unworkable. Aurora therefore does not add AV1 to the negotiated video format with the host; H.265 (HEVC) remains the recommended codec for quality and latency.
HLG HDR and HDR10+
-
HLG (HDR HLG)
Experimental option to signal HLG (transfer 18) instead of HDR10/PQ (16) when the host sends REC_2020. HLG is common in broadcast and on some LG TVs. The host (Vibepollo/Sunshine) typically sends HDR10 (PQ); for “true” HLG the host would need to send HLG. The client option keeps the path ready for when the host supports it. -
HDR10+
Option to signal HDR10+ to Starfish when the host sends HDR10 (PQ). On some LG TVs this may improve display or mapping (including HLG-like content). It is an attempt to improve HDR compatibility on the client when the host only sends HDR10.
LFR and Tight VSync (Artemis-style)
Inspired by the Artemis (moonlight-android) client:
-
LFR (Low Frame Rate / drop late frames)
Experimental option that drops frames that arrived too late (presentation age beyond a threshold). It reduces delay by not processing frames that would no longer be shown on time, favouring the latest ones. May increase dropped frames on unstable networks. -
Tight VSync
Experimental option that advances the PTS slightly (presentation offset of -2 ms) so frames are displayed a bit earlier and perceived latency is lower. May increase frame drops in exchange for snappier feel.
Both options are under Settings → Video and marked experimental; the user can enable them according to preference (latency vs smoothness).
Other changes
-
Default bitrate: 80 Mbps
Default bitrate is set to 80 Mbps; the user can raise it up to 300 Mbps in settings if the network and device allow. -
Soft Keyboard renamed to Full Keyboard in the UI.
-
App ID for dev-manager/Homebrew installation:
com.aurora.gamestream.
Technical summary
| Item | Description |
|---|---|
| Base | Moonlight TV (mariotaku/moonlight-tv) |
| Target | LG webOS (C1–C5 and similar), 4K 120fps HDR |
| Recommended codec | H.265 (HEVC); AV1 disabled due to decode latency |
| Decode time | Reduced via maxNumRef=1, 1 slice, 4 MB buffers |
| Frame pacing | PTS + pauseAtDecodeTime in Starfish |
| Experimental options | HLG, HDR10+, LFR, Tight VSync |


