Steam Deck HDMI: alsa-card0.conf re-adds `api.alsa.period-size = 256`, forcing 1.33 ms graph cycles for HDMI passthrough
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 70/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- linux
調査の方向性
/usr/share/wireplumber/hardware-profiles/valve-jupiter/wireplumber.conf.d/alsa-card0.conf と、対応する valve-galileo のファイルを読み、HDMI の設定を issue で引用されている履歴と比較してください。記載されている pw-top と pw-cli のコマンドを使って、passthrough 中に HDMI sink の period と graph quantum がどのように振る舞うかを確認してください。両方のプロファイルから固定 period の設定がなくなり、passthrough が強制された 256 フレームのサイクルを使わなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Your system information
- Steam client version: not recorded (the line is in steamdeck-dsp, an OS package)
- SteamOS version: 3.9.5 (build 20261023.100)
- Opted into Steam client beta?: Yes
- Opted into SteamOS beta?: Yes
- Have you checked for updates in Settings > System?: No. The deck is held on 3.9.5 for kernel testing; steamdeck-dsp 1.03-1 is still the newest package on Valve's source mirror (checked 2026-11-03).
- Steam Deck LCD (jupiter), kernel 7.2.7-valve2-2-neptune-72
- steamdeck-dsp 1.03, pipewire 1:1.6.8-1.7, wireplumber 0.5.18. First measured on SteamOS 3.9.2 (steamdeck-dsp 1.02-1, pipewire 1:1.6.8-1.4); unchanged after the update.
- Steam Deck Docking Station → HDMI → LG C4 TV, TrueHD bitstream (IEC958 passthrough, 8 ch HBR at 192 kHz)
Please describe your issue in as much detail as possible:
The LCD Deck's hardware profile sets a fixed ALSA period on the HDMI/DP card: /usr/share/wireplumber/hardware-profiles/valve-jupiter/wireplumber.conf.d/alsa-card0.conf, line 18, api.alsa.period-size = 256. valve-galileo has the same line.
For PCM this barely matters: with timer-based scheduling the graph quantum follows the clock settings. For IEC958 passthrough it sets the graph cycle. In PipeWire 1.6.8 (spa/plugins/alsa/alsa-pcm.c), the iec958 format branch sets state->force_quantum = true (line 2238), and check_position_config overwrites the graph's target duration with the device period on every cycle (lines 3148-3150). So every passthrough stream runs a 256-frame cycle: 1.33 ms at 192 kHz (TrueHD, DTS-HD MA) and 5.3 ms at 48 kHz (AC3, DTS). Neither node.force-quantum nor a global clock.force-quantum in the settings metadata changes it.
That leaves a passthrough client 1.33 ms to deliver each buffer. Our player, DSVP (a native PipeWire client; https://github.com/ASIXicle/DSVP-deck, though the public repo is well behind our development build), ran its process callback at normal priority. Under 4K HEVC decode it missed that deadline: its node's xrun count climbed about 0.5/s, and the TV dropped audio audibly. We have since worked around it in the player (a real-time process callback and a lock-free buffer), so this doesn't block us. Other passthrough players face the same 1.33 ms deadline.
The line looks like an accident. From the valve-hardware-audio-processing history inside Valve's own source package (steamdeck-packages.steamos.cloud/archlinux-mirror/sources/jupiter-main/steamdeck-dsp-1.03-1.src.tar.gz):
f17d7e3b26(2023-11-03, initial commit):api.alsa.period-size = 256on the HDMI card and on the acp5x card.b12855881a(2023-11-17): "Remove bug where we were stomping api.alsa.period-size, which is meant to be readonly. This fixes audio input usage over certain applications like discord." This removes the acp5x line.eb980781dc(2023-11-22): "remove period_size. As talked about previously, this doesn't actually invoke any alsa ctls, and just causes source+sink enumeration over pulse to provide incorrect information about our callback size." This removes the HDMI line. Around the same time, a user in #1254 was asked to delete this exact line.1477b278b0(2024-03-27, "Update hardware-specific wireplumber config to new json format"): the newalsa-card0.conffor valve-jupiter and valve-galileo hasapi.alsa.period-size = 256again, although the lua config it replaced no longer did.- The line has shipped in every steamdeck-dsp tag since 0.43, through 1.03.
Suggested fix: remove api.alsa.period-size = 256 from alsa-card0.conf in valve-jupiter and valve-galileo. That restores the 2023-11-22 state. With the property unset, PipeWire 1.6.8 sizes a passthrough period from the graph's requested quantum when the stream opens (alsa-pcm.c 2430-2441). We have not tested the deletion itself; we tested changing the property at runtime (below).
Steps for reproducing this issue:
- Play a TrueHD (or AC3) track with HDMI bitstream passthrough through PipeWire, to a TV or receiver that accepts it.
pw-topshows the HDMI sink at QUANT 256, RATE 192000 (TrueHD):R 92 256 192000 35.7us 5.9us 0.03 0.00 1840 IEC958 Tr 192000 alsa_output.pci-0000_04_00.1.hdmi-stereo-extra2pw-cli enum-params <sink id> Propslistsapi.alsa.period-sizeasInt 256.pw-cli set-param <sink id> Props '{ params = [ "api.alsa.period-size" 4096 ] }'. Then restart the passthrough stream so the sink re-opens.pw-topnow shows the sink at QUANT 4096:R 92 4096 192000 106.9us 239.9us 0.01 0.01 1840 IEC958 Tr 192000 alsa_output.pci-0000_04_00.1.hdmi-stereo-extra2- Undo with
systemctl --user restart wireplumber.
- 主要言語
- 言語のデータがありません
- スター
- 2.7k
- フォーク
- 89
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ValveSoftware/SteamOS のほかの issue
-
難易度 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 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
ValveSoftware/SteamOS#1743 · コメント 1 件 · リアクション 2 件 ·
ValveSoftware/SteamOS の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
kmod-project/kmod#492 ·
メンテナーはふだん 4 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
joncampbell123/dosbox-x#6797 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
follow-up
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
carrick-sh/carrick#1832 ·
メンテナーはふだん 1 日以内に返信