Pulseaudio

打開筆記型電腦後 alsamixer 出現多個問題(在其他作業系統中沒有問題)

  • November 10, 2018

這隨機開始發生在今天。昨天我打開我的筆記型電腦清理它。我還錯誤地斷開了 CMOS 電池電纜。

當我alsamixer在終端中打開時,當我嘗試控制通道時會發生以下情況:

  • 控制“PCM”頻道是我改變音量的唯一方法。
  • 選擇主通道時使用向上/向下箭頭鍵,它會更改數字,但實際上不會更改音量。更奇怪的是:控制主音量會使其靜音。它還會使耳機通道靜音,但不會使揚聲器通道靜音。
  • 通過按“M”取消主通道靜音不會恢復音頻。為此,我必須按 Fn+F1,這pactl set-sink-mute 0 toggle在 sxhkdrc 中綁定(使用 bspwm)。
  • 使用 Fn+F2/F3(綁定到pactl set-sink-volume 0 -/+ 5%)來減少/增加更改主通道但不會更改音頻,但也不會將其靜音。
  • (un)靜音耳機通道不會對音頻做任何事情。增加/減少耳機通道不會改變音量。
  • 使主通道靜音也會使耳機通道靜音,但取消主通道靜音不會取消耳機通道的靜音。
  • 我根本無法讓揚聲器工作。
  • 當我使用功能鍵將主通道一直降低到 0 時,耳機通道也會下降。當耳機通道變為 0 時,它只靜音右通道(wtf?)。

一切都可以在 Windows 中執行(我確實在 Windows 中遇到了音頻驅動程序的問題,但重新啟動修復了它)和 USB live 棒上的 Ubuntu 18.10。我在執行 Arch Linux 的筆記型電腦(Lenovo Legion Y520)上。根據 alsamixer 我正在使用HDA Intel PCH音效卡和Realtek ALC233晶片。

編輯:我看到pavucontrol我有兩個音頻輸出:耳機和揚聲器。在揚聲器旁邊,它顯示“不可用”。

編輯:dmesg:https ://pastebin.com/YUr4MyDf

輸出ls /proc/asound/card*/codec*

/proc/asound/card0/codec#0

/proc/asound/card0/codec#2

我用這個修復了它:https ://help.ubuntu.com/community/HdaIntelSoundHowto#Playing_with_probe_mask

我在 dmesg: 中仍然有錯誤snd_hda_intel 0000:00:1f.3: control 2:0:0:PCM Playback Volume:0 is already present,但我沒有遇到任何問題。

您會看到pulse外掛控制項,它只有一個音量控制項。嘗試使用F6訪問音效卡的硬體控制。

但是,由於您現在將 Pulseaudio 作為您的主要音頻系統執行(可能是因為清理而第一次重新啟動,這是您很久以前進行的一些更新的結果?),我建議您不要管alsamixer,並改用pavucontrol或使用桌面的聲音設置(如果您正在使用)。

兩者都使用可能會錯誤配置中間放大器,導致削波和聲音失真。

正如您已經玩過的那樣,您可能必須使用alsamixer一次才能將所有內容恢復到良好狀態(例如取消靜音意外靜音的節點等)

編輯

您的編解碼器被正確辨識:

[    3.845593] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
...
[    3.883968] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC233: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    3.883969] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    3.883970] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    3.883971] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    3.883972] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    3.883973] snd_hda_codec_realtek hdaudioC0D0:      Mic=0x19
[    3.883974] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12

但不久之後,失敗了:

[   16.496761] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x202f2d00
[   17.500096] snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x202f2d00
[   18.510492] snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to single_cmd mode: last cmd=0x202f2d00

然後事情開始看起來很有趣:

[  138.168712] azx_single_send_cmd: 14 callbacks suppressed
[  391.888726] azx_single_send_cmd: 34 callbacks suppressed
[  403.161786] azx_single_send_cmd: 114 callbacks suppressed
[  447.315584] azx_single_send_cmd: 46 callbacks suppressed
[  514.846522] azx_single_send_cmd: 70 callbacks suppressed

所以,猜猜:在清潔你的筆記型電腦時(除非你做了一些你沒有告訴我們的其他事情),你造成了靜電放電,和/或你意外斷開的電池電纜接觸了它不應該接觸的東西,現在一些與音效卡/編解碼器通信無法正常工作。

這將很難正確診斷和修復。您可以hda-verb嘗試並查看編解碼器文件的內容,看看是否可以進一步縮小問題範圍,但要做到這一點,您需要閱讀這些東西的工作原理。這不是我們可以通過問答進行遠端調試的東西。

我不知道為什麼它在 Windows 中有效,而在 Linux 中無效。可能 Windows 以不同方式初始化硬體。

引用自:https://unix.stackexchange.com/questions/479662