Skip to content

v1.0

Choose a tag to compare

@SJK132 SJK132 released this 12 Aug 06:06
· 54 commits to main since this release

uac-pstv v1.0

USB audio output for the PlayStation TV. Plug in a USB sound card, DAC, or
headphone dongle and system audio comes out of it — games, PSX titles, LiveArea.
No app to launch, nothing to configure.

A different way of capturing audio

v0.1–v0.3 hooked individual SceAudio ports, which meant shipping a mixer and a
44.1→48 kHz resampler, and competing with the audio pipeline for timing — the
1.4% ring-buffer sample loss noted in v0.3.

v1.0 takes ownership of AVConfig's RAM-output route instead, the path Sony
already uses to feed Bluetooth. Audio is captured after Sony's own mixing and
rate conversion, so mixer.c and resampler_coeffs.h are gone — not dropped,
but no longer needed. Whatever the source rate, what arrives is already mixed
and already 48 kHz.

What's new

  • 480-frame RAM-output A/B worker mirroring Sony's own DataSend worker, feeding
    a two-context isochronous transport with exactly one request in flight
  • Firmware allowlist covering 3.60, 3.61, 3.63, 3.65, 3.67, 3.68, 3.71, 3.73
    SceAVConfig is byte-identical across all eight, so one build covers the range
  • Session teardown moved off the USBD callback thread, fixing dropped events on
    rapid unplug/replug
  • SET_INTERFACE(alt 0) on clean teardown, so external DACs release their clock
    and return to internal
  • Suspend retires the session; resume re-asserts USB host mode
  • Transport primed with silence so the device locks to a continuous stream
    instead of a ~20 ms gap
  • Refuses to load on anything that isn't a PlayStation TV

Install

Copy uac_pstv.skprx to ur0:tai/ and add it under *KERNEL in
ur0:tai/config.txt. It must be listed above StorageMgr — USB drivers get
first refusal on a device in registration order.

*KERNEL
ur0:tai/uac_pstv.skprx
ur0:tai/storagemgr.skprx

Safety

With no USB audio device attached the plugin is inert — it registers a USB driver
and waits, never reading SceAVConfig and installing no hooks. module_start
dereferences no computed address, so it cannot stop the console booting. Nothing
is written to persistent storage; a reboot is a complete reset.

Known limitations

  • Output only — microphones and headset input are unsupported
  • UAC1 only, fixed 48 kHz stereo 16-bit; UAC2-only devices are declined at probe
  • If releasing the audio route ever times out, system audio can stay silent until
    you reboot. Nothing is written anywhere, so a power cycle always restores it.

Testing status

Hardware-verified on 3.65 with a 0bda:4e27 adapter. The other seven
firmwares are verified by binary comparison of the modules, not by running on
each. No extended soak test yet.