打开笔记本电脑后 alsamixer 出现多个问题(在其他操作系统中没有问题)

打开笔记本电脑后 alsamixer 出现多个问题(在其他操作系统中没有问题)

这从今天开始随机发生。昨天我打开笔记本电脑进行清理。我还错误地断开了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 Stick 上的 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/编解码器#0

/proc/asound/card0/编解码器#2

答案1

您正在看到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 可能以不同的方式初始化硬件。

答案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,但我没有遇到任何问题。

相关内容