前往
大廳
漫畫

Linux(Debian 12)HDMI無聲&爆音事件簿★解決篇

Nighty9 | 2025-04-01 05:56:01 | 巴幣 2 | 人氣 59



最近終於打算自組新電腦,買了新一點的顯卡(ATRX6650XT)(5/10/2022)。
開心裝好了 Debian 之後,才發現問題還真不少…主要是因為內核還不支援太新的顯卡
嗚哇,我刻意避免買太新的顯卡,結果快兩年還是太新?
看樣子我是買到一款非常冷門的顯卡
想說反正大不了去 AMD官方抓驅動就是了,人家開源的顯卡嘛。


結果AMD你他x竟然只支援Ubuntu、Red Hat、SUSE那些商業發行版本的驅動…
你…我們不是朋友嗎?都支援Ubuntu孫子了怎麼就不幫幫蕾絲邊爺爺(!?)

幸好沒幾天,官方更新amdgpu讓 Debian使用者能自己編譯顯卡驅動。
我也總算能夠跑更多硬體需求較高遊戲,Proton非常仰賴支援Vulcan的顯卡

接著遇到了超級 Boss 戰—(螢幕)音源問題。
極為詭異的是,用 Steam Proton跑的遊戲完全正常,但除此之外都沒有聲音。

嗚喔喔喔!或許你說的沒錯,或許用螢幕喇叭播音樂真的是一種錯誤!
但要是只會逃避的話,The Year of Linux 那一年,永.遠.不.會.降臨的呀!

螢幕的音響會沒有聲音,通常是電腦有複數聲效卡的關係(主機板跟顯卡);
如果作業系統沒有指定正確的聲效卡跟裝置,聲音就到不了螢幕的喇叭。

每個發行版本的聲效驅動軟體可能會不同,Debian 12 預設用Alsa,終端機輸入
aplay -l
指令一下就可以看出連接到你電腦的聲效卡跟裝置有哪些,通常第一個就是正解。
我個人的就是 card 0,device 3
因為是Alsa,我只要在家目錄創一個 .asoundrc 當作設定檔,在裡面寫入
defaults.pcm.card 0
defaults.pcm.device 3
Alsa 的聲效設定修改不需要登出,程式重開就能立刻生效,現在螢幕喇叭有聲音了!

……
………
火狐?你最近偷改使用者條款,偷偷採集使用者資料我還沒太計較,因為設定上能關掉;
但VLC播放音樂沒事,要你放Yoasobi 的歌就變成耳朵酷刑,你這忘恩負義的—

精彩的地方來了

創建 .asoundrc 前 → 只有Steam用Proton玩的遊戲有(正常)聲音,其他無
創建 .asoundrc 後 → 除了VLC播的音樂正常,其他全部有雜音(Steam遊戲也是)

我不知道死了多少個腦細胞想找出問題,管他是Alsa dmix 的設定,還是Proton啟動參數放
PULSE_LATENCY_MSEC=30 %command% 都沒用,直到看到有人解釋參數的原理:
電腦播放音樂時會分段發送;若音源播放片段速度不一致,數個片段會定期相交,同時播放導致爆音。
所以Proton那段啟動參數就是要遊戲把聲音片段放出去前慢個30微秒。

奇怪的地方就在這裡,如果在 .asoundrc 指定聲效卡跟裝置前音源速度一致,怎麼指定後反而不一致了?
……
…不會吧?

於是我把 .asoundrc刪掉,改用系統的設定檔(/usr/share/alsa/alsa.conf)
裡面有更詳細完整的設定,只是 defaults.pcm.device的那一段是 0 而不是 3,
我便修改一個字,只是把那一行的 0 換成 3…

一切就恢復正常了

WHY? HOW?
通常 Linux軟體的設定檔有不只一個,在系統目錄(影響所有使用者),或家目錄(只影響該使用者)
在這次的事件裡,就是系統檔案內的 /usr/share/alsa/alsa.conf,跟家目錄的 .asoundrc
我的假設是,系統生成聲音時先是用系統的設定檔,如果跟家目錄設定檔不同,再回頭處理音源。

就是這微小但多餘的幕後運作,讓音源產生速度不一致,於是爆音!
這是多麼的諷刺,這代表Steam Proton在音源處理上,比作業系統還完善!
所以不能用家目錄的設定檔,必須修改系統的設定檔,才能讓螢幕喇叭正常運作!
HOLY SHIT,我還是第一次碰上這種事,不知道會不會是Debian獨有的現象?
我最近看完了筋肉人—超人始祖篇。傑作!
這一頁是致敬惡魔將軍用臉吃下一招大招後說的名言:
「就算這樣我…依然屹立不搖呀!」

這一場除錯大冒險實在是刺激過頭了,但我很高興我當時沒有投降。
我克服了螢幕喇叭的問題了呃啊啊啊啊!!!

The Year of Linux!
WHEN!?
唉呀,我是不是忘了安裝 firmware-linux-nonfree

註:漫畫人臉上的#,是root使用者的命令元標誌
送禮物贊助創作者 !
0
留言

更多創作