SteamOS 3.9 (Navi 31/33 HDMI Audio) RIRB Desync Causes Cyclic Hardware DMA Loop & Deafening AC3 Whine
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- c
- Ambito
- audio-video-rtc
Direzione di ricerca
Start by reading the reported RIRB diagnostics and the suggested entry points sound/pci/hda/hda_intel.c and hda_controller.c. The report proposes several possible recovery paths but does not identify a confirmed root cause or a specific change to make. Done would require establishing the failure and validating a safe recovery for the affected HDMI audio hardware.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hello! I've been hunting down a bug over the past few weeks and finally nabbed it. Occasionally, and randomly it seems, my TV will suddenly emit a deafening buzzing sound. It seems to be an issue with the AMD Navi controller in the Steam Machine.
The rest of this markdown was generated by my local troubleshooting agent.
- Category: Audio / AMDGPU / Kernel Driver (
snd_hda_intel,amdgpu) - System: Valve Steam Machine / Neptune Station (
DenCube)
1. System Environment & Hardware Specifications
| Component | Specification |
|---|---|
| OS | SteamOS 3.9.5 (Build ID: 20261023.100, Codename: holo) |
| Kernel | 7.2.7-valve2-2-neptune-72-g31504582a073 #1 SMP PREEMPT_DYNAMIC (x86_64) |
| GPU | AMD Navi 33 [Radeon Graphics] ([1002:7481], rev c7) |
| GPU Subsystem | Valve Software Device ([1e44:1717]) |
| Audio Controller | AMD Navi 31 HDMI/DP Audio ([1002:ab30], PCI 0000:03:00.1) |
| Audio Driver | snd_hda_intel (bound to amdgpu via amdgpu_dm_audio_component_bind_ops) |
| Sound Server | PipeWire 1.6.8 / WirePlumber 1.6.8 |
| Default Audio Profile | Digital Surround 5.1 (HDMI/AC3) (alsa_output.pci-0000_03_00.1.hdmi-ac3-surround via ALSA a52 plugin) |
| Connected Display | Vizio M65-E0 4K HDR TV via HDMI (HDMI-A-1) |
2. Problem Description
Randomly during idle or media playback (often days or hours apart), the audio output over HDMI suddenly degenerates into a loud, high-pitched digital whine/buzzing screech.
Key Characteristics:
- Immune to Software Controls: Muting audio, reducing system volume to 0%, or closing all media applications does not stop or alter the buzzing sound.
- ALSA Streams Already Closed: Inspecting
/proc/asound/card0/pcm*/sub*/statusconfirms all PCM streams are in stateclosed. Userspace is not actively feeding any audio frames. - Hardware Loop: The AMD HDMI audio controller continues transmitting a cyclic loop of corrupted DMA buffer frames at the hardware/silicon level.
- Resolution via Link Renegotiation: The noise stops immediately if:
- The connected TV is powered off and on, or
- The HDMI input on the TV is switched back and forth, or
- A low-level PCI unbind/bind is issued against the HDMI audio controller (
echo 0000:03:00.1 > /sys/bus/pci/drivers/snd_hda_intel/unbind && echo 0000:03:00.1 > bind).
3. Kernel Diagnostic Logs & Root Cause Analysis
A. The Incident in Kernel Logs (dmesg / journalctl -k)
At the exact onset of the whine (e.g., 08:43:10 and 11:41:25), the kernel ring buffer logs a cascade of RIRB (Response Inbound Ring Buffer) response failures from snd_hda_intel:
Nov 05 11:41:25 DenCube kernel: snd_hdac_bus_update_rirb: 71 callbacks suppressed
Nov 05 11:41:25 DenCube kernel: snd_hda_intel 0000:03:00.1: spurious response 0x0:0x0, last cmd=0x220000
Nov 05 11:41:25 DenCube kernel: snd_hda_intel 0000:03:00.1: spurious response 0x0:0x0, last cmd=0x220000
Nov 05 11:41:25 DenCube kernel: snd_hda_intel 0000:03:00.1: spurious response 0x0:0x0, last cmd=0x1f0500
Nov 05 11:41:25 DenCube kernel: snd_hda_intel 0000:03:00.1: spurious response 0x233:0x0, last cmd=0x1f0500
B. Hardware DMA Loop & AC3 Bitstream Desynchronization
- AC-3 Bitstream Encapsulation: SteamOS leverages the ALSA
a52plugin profile (hdmi-ac3-surround) to stream 5.1 surround over 2-channel HDMI PCM carriers by wrapping compressed Dolby Digital AC-3 bitstreams into IEC61937 frames. - Interrupt Stall & DMA Ring Free-Wheel: When the HD-Audio RIRB bus controller desynchronizes or drops interrupt callbacks, the hardware DMA ring buffer stalls or loses sync with the codec command pipeline. The hardware FIFO in the Navi 31/33 audio controller freezes in a cyclic loop, repeating the existing buffer memory.
- TV Fallback to Raw PCM Decoding: Because the stream preamble / HDMI Audio InfoFrame is corrupted or missing, the receiver/TV DSP fails to recognize the payload as an AC-3 bitstream and treats the incoming compressed packets as uncompressed Linear PCM. Playing compressed Dolby Digital packet data as raw 16/24-bit PCM generates a deafening digital whine/buzz.
C. Proof via Hardware PCI Rebind
Issuing an unbind/rebind on the PCI function instantly clears the buzz without touching the TV:
echo 0000:03:00.1 > /sys/bus/pci/drivers/snd_hda_intel/unbind
sleep 1
echo 0000:03:00.1 > /sys/bus/pci/drivers/snd_hda_intel/bind
The resulting kernel output demonstrates the complete controller reset:
Nov 05 11:47:31 DenCube kernel: snd_hdac_bus_update_rirb: 30 callbacks suppressed
Nov 05 11:47:32 DenCube kernel: snd_hda_intel 0000:03:00.1: Force to non-snoop mode
Nov 05 11:47:32 DenCube kernel: snd_hda_intel 0000:03:00.1: bound 0000:03:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
Nov 05 11:47:32 DenCube kernel: input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/.../sound/card0/input41
4. Evaluated Workarounds & Limitations
| Approach | Result | Assessment |
|---|---|---|
power_save=0 / power_save_controller=N |
Ineffective | Disabling runtime PM does not prevent RIRB timeouts; error reproduced within hours. |
single_cmd=1 |
Not Recommended | Forces synchronous polling (udelay), breaks unsolicited events (headphone jack sensing, HDMI hotplugging), and introduces micro-stutters during gaming. |
| Switch to Stereo LPCM | Effective, but loses 5.1 | Switching from hdmi-ac3-surround to uncompressed hdmi-stereo prevents compressed bitstream decoding errors, but limits output to 2.0 audio. |
| Automated Watchdog (PCI Rebind) | Proven Workaround | A background daemon detecting snd_hdac_bus_update_rirb and cycling 0000:03:00.1 clears the issue automatically in ~500ms. |
5. Suggested Upstream Kernel / Driver Resolutions
- Hardware DMA FIFO Reset on RIRB Stall:
Insound/pci/hda/hda_intel.c/hda_controller.c, when a cascade ofspurious responseorsnd_hdac_bus_update_rirbcallbacks are suppressed, the driver should trigger an internal DMA engine reset and mute the stream rather than allowing the DMA FIFO to free-wheel in an infinite loop. - AMDGPU DM Audio Component Re-Handshake:
Improve the error recovery betweenamdgpu_dm_audio_component_bind_opsandsnd_hda_intelon Navi 31/33 architectures when RIRB timeouts occur, initiating an automatic stream re-initialization rather than requiring an external HPD pulse. - Fallback Stream Muting in PipeWire / ALSA A52:
When the hardware reports bus errors or buffer stalls on ana52compressed sink, immediately mute or zero the buffer to protect user hearing and equipment from raw PCM playback.
- Lingua principale
- Nessun dato sulla lingua
- Stelle
- 2.7k
- Fork
- 89
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ValveSoftware/SteamOS
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
ValveSoftware/SteamOS#3037 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
ValveSoftware/SteamOS#2983 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ValveSoftware/SteamOS#2927 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ValveSoftware/SteamOS#2875 · 1 commento ·
-
steam-short-session-tracker: incorrect registry backup path resets settings during automatic repairAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
ValveSoftware/SteamOS#2829 ·
Tutte le issue di ValveSoftware/SteamOS
Issue simili
-
fix(data-pipeline): KR106 native adapter rejects sub-frame note windows the VST backends acceptForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertadata-pipeline
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
tinaudio/synth-setter#3752 ·
I maintainer di solito rispondono entro 1 giorno
-
Volume mixer mutes audioApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
vorssaint/vorssaint-utils#3956 ·
I maintainer di solito rispondono entro 2 giorni
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
transit-audio/transit#396 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
RVC-Boss/GPT-SoVITS#2869 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
eliasstravik/herdr-projects#785 ·