我的 ThinkPad Yoga X1 上的声音以前可以正常工作。我不确定发生了什么变化,但现在它不再起作用了。它在并行安装 ubuntu 18.04 时仍然有效,并继续工作了一段时间(是的,我安装了两次相同的发行版)。它在并行安装 windows 10 时仍然有效。
当我按下键盘上的音量按钮时,它会改变“虚拟输出”设备的音量。
lspci
列出音频设备:
$ lspci | grep -A8 Audio
00:1f.3 Audio device: Intel Corporation Device 9dc8 (rev 11)
00:1f.4 SMBus: Intel Corporation Device 9da3 (rev 11)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device 9da4 (rev 11)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-LM (rev 11)
03:00.0 Non-Volatile memory controller: Micron/Crucial Technology Device 2263 (rev 03)
05:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:01.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:02.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
但是 aplay 没有找到它
sudo aplay -l
[sudo] password for generic:
aplay: device_list:270: no soundcards found...
$ pacmd list-sinks
1 sink(s) available.
* index: 0
name: <auto_null>
driver: <module-null-sink.c>
flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 1000
volume: front-left: 46332 / 71% / -9.04 dB, front-right: 46332 / 71% / -9.04 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 0.00 ms
max request: 344 KiB
max rewind: 344 KiB
monitor source: 0
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
module: 14
properties:
device.description = "Dummy Output"
device.class = "abstract"
device.icon_name = "audio-card"
我在 root 上运行带有 ZFS 的 ubuntu 18.04。这意味着我可以尝试一种解决方案,如果它不起作用,则可以回滚。这意味着我尝试了几种解决方案。
没有帮助的相关链接:
我尝试过的:
sudo apt-get --purge remove linux-sound-base alsa-base alsa-utils && reboot
sudo apt-get install build-essential linux-headers-
uname -ralsa-base alsa-firmware-loaders alsa-oss alsa-source alsa-tools alsa-tools-gui alsa-utils alsamixergui
将用户添加
generic
到组audio
以上三者相结合
两个修复程序都在linuxuprising 帖子
modprobe snd_hda_intel && modprobe sof_pci_dev
添加
snd_hda_intel.dmic_detect=0
GRUB 启动参数ppa:nilarimogard/webupd8
根据建议安装一组软件包这里使用 dkms 重新安装 alsa 相关软件包。请参阅这里
重新安装
pavucontrol
并pulseaudio
按照这质量保证
我的系统是
$ uname -r
5.3.0-51-generic
可能不相关,可能相关:
我的屏幕亮度控制也消失了。它们之前坏过一次,我通过添加acpi_backlight=video
到GRUB_CMDLINE_LINUX_DEFAULT
in/etc/default/grub
并更新 grub 并重新启动来修复它。但那个修复仍然有效,但它仍然再次坏了。
我怎样才能让声音再次正常播放?
当我从 ubuntu 18.04 的实时系统启动时,声音又能正常使用了。
# live system version:
$ uname -a
Linux ubuntu 5.3.0-28-generic #30-18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
# aplay output on live system:
ubuntu@ubuntu:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC285 Analog [ALC285 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
Subdevices: 1/1
Subdevice #0: subdevice #0
(在非直播系统上)/var/log/apt/term.log
和/var/log/apt/history.log
和/var/log/dpkg.log
使用 查看时,所有文件都是空的sudo vim <filepath>
。但有一个文件history.log.1.gz
包含所有历史记录。我正在查看它,但我不知道要注意什么。
我已经从笔记本电脑上目前最旧的 zfs 快照启动(不是特别旧,因为当时我遇到了 zfs 问题),声音也不起作用。当我使用与5.3.0-28
实时 USB 记忆棒相同的旧内核版本启动时,它也不起作用。
git diff --no-index apt_live.txt apt_tank.txt
包含相应输出的文件apt list --installed
给了我太多输出。许多版本号已更改。
我已经添加了标签19.04,并且20.04根据消息来源,现在回想起来,修复也适用于这些标签。
答案1
这个答案解决了声音问题但破坏了亮度控制。
我将其留在这里以供记录,并希望在我找到更好的解决方案时能够对其进行审查。
请考虑这个后续答案!
[编辑:2020 年 3 月] 存在内核回归(在Linux 5.3.0-41 及更高版本版本(在 Ubuntu 19.10 上运行)会导致 Ubuntu 19.10 上出现新的“虚拟输出”问题。
[...]
5.3.0-41 和 -42 内核中存在回归问题(感谢 JustNiz 通知我),导致出现新的“虚拟输出”问题Ubuntu 19.10 和 18.04。此错误的解释可在此错误报告,所以我就不多说了,直接告诉你怎么修复。
[[编辑] 似乎这也可能发生在某些人身上Ubuntu 20.04用户。
sudo gedit /etc/modprobe.d/alsa-base.conf
将以下行添加到此文件末尾:
options snd-hda-intel dmic_detect=0
保存并关闭文件然后重启 您的系统。音频应该恢复了。
我之前已经尝试过,但没有成功。现在,我不仅做了上述操作,还遵循了以下方法,第二次成功了亚当的建议pulseaudio --start
重启后运行。
请注意,声音可能需要几秒钟才能开始起作用。
因为可能只有 Adam 的建议才是重要的,所以我options snd-hda-intel dmic_detect=0
再次删除了该行并重新启动。它再次停止工作。所以我再次编辑了它并再次重新启动。这次声音无需运行就可以正常工作pulseaudio --start
。
我不明白,但这似乎是解决办法。如果事实证明我需要pulseaudio --start
在每次启动时运行,我只需将该命令添加到我的.profile
或.bashrc
。虽然在重新启动几次以测试这一点后,我很确定你实际上并不需要pulseaudio --start
- 只需在启动后等待一段时间。大约一分钟。
关于我的问题中“可能相关”的部分
我的屏幕亮度控制也消失了。它们之前坏过一次,我通过在 /etc/default/grub 中的 GRUB_CMDLINE_LINUX_DEFAULT 中添加 acpi_backlight=video 并更新 grub 并重新启动来修复它。但那个修复仍然有效,但它仍然再次坏了。
在我注意到音量键现在能用并且能发出声音后,我立即按了亮度键。但它们不再起作用了。我会试试修复该答案与我在此答案中引用的一篇文章中有链接,一旦我知道它是否有效,我就会编辑我的答案。
关于启动后直到声音起作用的延迟:也许这与它有关。
$ dmesg[ 44.945151] Bluetooth: RFCOMM ver 1.11
[ 45.576833] rfkill: input handler disabled
[ 84.861079] snd_hda_intel 0000:00:1f.3: couldn't bind with audio component
[ 84.885411] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC285: line_outs=2 (0x14/0x17/0x0/0x0/0x0) type:speaker
[ 84.885414] snd_hda_codec_realtek hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 84.885416] snd_hda_codec_realtek hdaudioC0D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[ 84.885418] snd_hda_codec_realtek hdaudioC0D0: mono: mono_out=0x0
[ 84.885419] snd_hda_codec_realtek hdaudioC0D0: inputs:
[ 84.885421] snd_hda_codec_realtek hdaudioC0D0: Mic=0x19
[ 84.933958] snd_hda_codec_hdmi hdaudioC0D2: No i915 binding for Intel HDMI/DP codec
[ 84.934160] hdaudio hdaudioC0D2: Unable to bind the codec
[ 84.934845] input: HDA Intel PCH Headset Jack as /devices/pci0000:00/0000:00:1f.3/sound/card0/input25
[ 84.934904] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input26
[ 84.934952] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input27
答案2
我的第一次尝试是这个答案虽然解决了声音问题,但是破坏了亮度控制。
后来,我注意到与不同的 grub 引导加载程序菜单结合时出现了奇怪的行为,于是开始写一个新问题。在写这个问题时,我进行了更多测试,直到它变成了一篇博客文章而不是一个问题,因为它还包含几个隐含问题的答案。
您会在水平线下方找到它。
总结
移除nomodeset
和acpi_backlight=video
对我来说很管用。声音和亮度控制现在起作用了 -可能以牺牲冬眠为代价。
许多开源驱动程序已取消对非内核模式设置的支持,因此在这些情况下,当您使用 nomodeset 时,您最终将退回到最基本的 VESA 非加速驱动程序。这对性能和功能造成了很大影响。 来源质量保证
测试此内容的长文
这是对最初提出的问题的新视角Ubuntu 18.04 上未检测到声卡。这已经变得更加奇怪了。但为了让你理解我的彻底困惑,你需要一些借口:
我有三个分区,每个分区都有 ubuntu 18.04。最后,我会删除其中两个,但它们是EXT 4
、、ZFS unencrypted
。ZFS encrypted
每个都有不同的背景,这样我才知道我登录的是哪个。
我也在两个地方安装了 grub。可能是因为我没有为 EXT4 系统设置单独的启动分区。所以我/dev/nvme0n1p8/boot
也有/dev/nvme0n1p5 (boot partition)
。两者都包含一个内核和 initrd 5.3.0-51-generic
。p5
也包含5.3.0-53-generic
, 也p8/boot
包含53.0-28-generic
和一些旧的4-15-0-101-generic
。但是,我甚至不确定这些启动分区有多重要。
为了区分这两个 grub,我为 上的 grub 添加了一个主题p5
。
当我启动笔记本电脑时,它会引导到 上的 grub GUI p5
。它在正确列出多个 zfs 分区方面存在一些问题,因此我创建了一个自定义条目,但这在这里也不重要。
要打开 上的 grub GUI p8
,我按Esc进入 grub 终端,然后在那里输入
set prefix=(hd0,gpt8)
当我从 grub 启动时p5
,亮度键和声音都坏了。
当我从 grub 启动时p8
,它们工作正常。
我已确保在两个实例中使用相同的内核和系统。事实上,我尝试了几次,希望这可能是由于某些内核启动参数造成的。
问题并不局限于这三个 ubuntu 安装中的任何一个。我可以启动其中任何一个,这样声音就可以正常工作,也可以不工作,这取决于我使用的 grub。
这个问题并不局限于一个内核版本。我可以从两个内核启动51
,也53
可以启动到任意分区,声音是否正常取决于我使用的 grub。
问题不是由于同一版本的内核映像不同造成的。我可以从位于分区上的p8
内核的 grub启动,声音可以正常工作。 53
p5
测试
现在我们只考虑简单的 ext4 分区。加密的 zfs 分区的行为相同(我还没有检查未加密的 zfs 分区)。
首先,我尝试了几种启动参数的组合,但我认为以下三种测试对于这个问题应该足够了。
- 第一列(“条目”)要么是
old
用于启用 grub 的 ext4 菜单条目p8
,要么new1
是用于启用 grub 的 ext4 菜单条目p5
。 - 通过编辑菜单项,在以 开头的行前包含,并在内核和 initrd 路径前添加 ,可以将设置为。 类似地,通过插入和删除内核和 initrd 路径中的 前缀,可以将 设置为
kernel partition
。8
set root=(hd0,gpt8)
linux
/boot
kernel partition
5
set root=(hd0,gpt5)
/boot
- (不包括)之间的任何列都
]kernel version, sound works?[
与相应内核启动参数的存在有关。这些参数至少在其中一个 grub 菜单项中设置过,但正如您在表中看到的,即使没有这些参数,行为也保持不变。
我也测试过是否存在quiet splash
任何影响,但似乎也没有任何影响。
为了绝对确定启动参数不会产生任何影响,我尝试直接从 grub 终端启动。
set prefix=(hd0,gpt8)/boot/grub
set root=(hd0,gpt5)
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
boot
声音和亮度键就是这样工作的。
set prefix=(hd0,gpt5)/grub
set root=(hd0,gpt5)
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
boot
声音和亮度键也以这种方式工作!(这一点出乎意料)
set prefix=(hd0,gpt8)/boot/grub
normal
# select menuentry and press E to edit it so that it looks as follows:
setparams 'Ubuntu'
set root=(hd0,gpt5)
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
# CTRL+X to boot that
声音和亮度键也以这种方式工作。(自 grub 启动以来预期p8
)。
set prefix=(hd0,gpt5)/grub
normal
# select menuentry and press E to edit it so that it looks as follows:
setparams 'Ubuntu'
set root=(hd0,gpt5)
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
# CTRL+X to boot that
声音和亮度键仍然以这种方式工作!(出乎意料!)。现在,如果我不打开 grub 终端并直接编辑条目,则会出现相同的行为。因此,该normal
命令并没有什么神奇之处。
另外,不写set root=(hd0,gpt5)
似乎也没问题。
当我在 上运行 grub GUI 中生成的条目时p5
,亮度和声音不起作用。所以我现在要尝试从头开始构建该条目。(准备好大量打字)
setparams 'Ubuntu'
recordfail
load_video
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
声音和亮度键仍然有效。
setparams 'Ubuntu'
recordfail
load_video
insmod gzio
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
声音和亮度键仍然有效。
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
启动到紧急模式并显示“无法挂载 /boot/efi”(错误的 fs 类型、错误的选项、/dev/nvme0n1p2 上的错误超级块...)
因此我删除gfxmode $linux_gfx_mode
again 并继续:
setparams 'Ubuntu'
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
声音和亮度键仍然有效。
setparams 'Ubuntu'
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
else
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
fi
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
声音和亮度键仍然有效。
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
else
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
fi
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8
initrd /initrd.img-5.3.0-53-generic
我再次插入它gfxmode $linux_gfx_mode
并且它仍然可以启动良好并且声音和亮度键仍然有效。
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
else
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
fi
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8 ro nomodeset
initrd /initrd.img-5.3.0-53-generic
并且屏幕亮度和声音不再起作用!
同样,没有nomodeset
:
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
else
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
fi
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8 ro
initrd /initrd.img-5.3.0-53-generic
声音和亮度键仍然有效。
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
else
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
fi
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8 ro acpi_backlight=video
initrd /initrd.img-5.3.0-53-generic
声音和亮度键仍然有效。
值得注意的是,我acpi_backlight=video
一开始只有这两个键,因为亮度键不起作用。而我有nomodeset
(目前看来是罪魁祸首)因为它修复了休眠问题。也许nomodeset
损坏了我的亮度键和声音,然后我尝试使用来修复acpi_backlight=video
?
因此nomodeset
再次包括:
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
else
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
fi
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8 ro nomodeset acpi_backlight=video
initrd /initrd.img-5.3.0-53-generic
声音和亮度现在不工作,所以我不清楚为什么acpi_backlight=video
上次亮度修复对我有用。我是在 5 月 9 日应用的,现在nomodeset
已经是 3 月了……也许我删除并重新添加了一段时间,但没有意识到它对亮度键的影响。
我宁愿有一个问题,而不是两个问题,因此这里再次删除nomodeset acpi_backlight=video
并添加最后一个参数:
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
else
search --no-floppy --fs-uuid --set=root 81e29369-ff69-4424-858c-3489283588d7
fi
linux /vmlinuz-5.3.0-53-generic root=/dev/nvme0n1p8 ro resume=UUID=1ba104f0-35be-42f7-bf71-65e43f6fbcc3
initrd /initrd.img-5.3.0-53-generic
正如预期的那样,声音和亮度又恢复正常了。我现在还没有测试休眠功能。我猜想它要么会因为联想最近更新了 BIOS 和固件而恢复正常,要么仍然无法像我的问题中那样工作。但那将是另一天的另一个问题。
现在剩下的问题是:为什么它似乎在旧的引导程序中工作?
好吧……事实证明,在我的大多数测试中都没有修改“nomodeset”。但在上面的表格中,您可以在引导程序p5
、内核 51 中看到声音p8
,没有acpi_backlight
和没有nomodeset
。
我再也无法重现这种情况。也许我在做笔记时犯了一个错误。