这从今天开始随机发生。昨天我打开笔记本电脑进行清理。我还错误地断开了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
,但我没有遇到任何问题。