v0.1.107-preview
Pre-releaseThis preview makes Audio Relay substantially more resilient on Wi-Fi, adds
configurable UDP prioritization and HID activity feedback, and tightens device
updates, provisioning, discovery, and diagnostics.
Highlights
Deadline-aware Audio Relay recovery
- Speaker audio now uses bounded selective replay alongside Opus FEC and packet
loss concealment. The Client caches the latest 16 encoded frames, allowing the
Host to request a missing frame while it can still meet the playback deadline. - Replay never holds newer audio behind stale data. Requests are bounded,
duplicate work is coalesced, live audio remains higher priority, and late
recovery automatically falls back to Opus FEC or concealment. - Studio now reports replay requests, requested and recovered frames, and
failures with the existing Audio Relay telemetry. - Improved Client capture pacing eliminates an unnecessary busy loop and
significantly reduces Client CPU use during Audio Relay. - Refined Host jitter-buffer, ALSA playback, underrun recovery, drift control,
and stale-audio trimming. The recommended Wi-Fi defaults now use a 120 ms
balanced buffer, Opus in-band FEC, and directhw:ALSA endpoints where the
selected device supports them. - Detailed replay and packet timing messages remain behind the audio debug
flags, while meaningful recovery events remain available in the service log.
Network and realtime traffic
- Added Disabled, Balanced, and Wireless PCVR UDP priority modes to
the device Network page. Balanced is the default and marks latency-sensitive
traffic without aggressively competing with other realtime applications. - Added runtime QoS diagnostics so the applied socket priority can be verified
from device status and troubleshooting information. - Wi-Fi network discovery is now an explicit action instead of running during
ordinary status refreshes. The dedicated scan button shows progress without
moving the page or interrupting realtime traffic unnecessarily. - Provisioning disables Wi-Fi power saving and disruptive automatic background
scanning on both Hosts and Clients while retaining manual Wi-Fi discovery. - HID and audio workers retain elevated scheduling priority, while API and
discovery work run at normal priority.
HID responsiveness and diagnostics
- Added an optional HID activity LED for both Host transmission and Client
reception. It covers keyboard, mouse, joystick, and other input batches with
negligible work in the realtime path. - Relative mouse and joystick state handling avoids stale queued motion while
preserving button transitions and the latest axis state. - Prevented paced joystick snapshot failures from entering a tight retry and
journal-spam loop when a downstream Client becomes unavailable. - Live Preview now treats stream startup as synchronization rather than counting
pre-snapshot reports as ignored input. Its rate, ordering, and latency counters
begin from the first complete snapshot. - Host communication status now reports recent send activity instead of showing
Waiting for an otherwise active output stream.
Provisioning, Bluetooth, and Studio reliability
- Same-role provisioning preserves existing Bluetooth bonds. Replacing a Host
with a Client, or a Client with a Host, clearly warns that pairings from the
previous Bluetooth role will be removed. - Client app updates no longer restart the GhostInput BLE HID backend when its
helper and systemd unit are unchanged. This preserves active Windows BLE HID
connections during ordinary updates instead of briefly removing and
re-registering the GATT service. - The clean-configuration option continues to reset GhostInput routes and
runtime settings without removing same-role Bluetooth pairings. - Device Routing refreshes Host device inventory while the page is open, so
connected or removed USB and Bluetooth devices resolve without service
restarts or a separate event-listener subsystem. - Improved stale device detection, provisioning progress, warning contrast,
password clearing, and route correction behavior throughout Studio.
Upgrade notes
Update Studio and its bundled Host and Client payloads together. This release
continues to require the compact realtime protocol introduced in
v0.1.106-preview; older mixed-version peers are not supported.
Reprovisioning is not required for an existing installation. Use the normal
Update action for each Pi so it receives the current runtime, network
defaults, Audio Relay recovery, and service-management behavior.
Bluetooth bonds are preserved by same-role provisioning and app updates. A
Host/Client role replacement intentionally clears the previous role's bonds.
If a release genuinely changes the BLE HID helper or service definition, that
backend must restart to load the new version; the stored Windows bond remains
intact and should reconnect normally.
GhostInput control APIs use HTTP and realtime traffic uses UDP without
encryption. Run GhostInput on a private network you trust and do not expose its
ports directly to the internet.