SteamOS 3.9 (Navi 31/33 HDMI Audio) RIRB Desync Causes Cyclic Hardware DMA Loop & Deafening AC3 Whine
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- c
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- 言語のデータがありません
- スター
- 2.7k
- フォーク
- 89
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ValveSoftware/SteamOS のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
ValveSoftware/SteamOS#3037 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
ValveSoftware/SteamOS#2983 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
ValveSoftware/SteamOS#2927 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
ValveSoftware/SteamOS#2875 · コメント 1 件 ·
-
steam-short-session-tracker: incorrect registry backup path resets settings during automatic repairオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
ValveSoftware/SteamOS#2829 ·
ValveSoftware/SteamOS の issue をすべて見る
似ている issue
-
fix(data-pipeline): KR106 native adapter rejects sub-frame note windows the VST backends accept対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンdata-pipeline
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
tinaudio/synth-setter#3752 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 63/100
vorssaint/vorssaint-utils#3956 ·
メンテナーはふだん 2 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
transit-audio/transit#396 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
RVC-Boss/GPT-SoVITS#2869 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
eliasstravik/herdr-projects#785 ·