我的 Dell XPS 13 9350 笔记本电脑预装了 Ubuntu 14.04,从未出现过声音问题。自从升级到 Ubuntu 18.04 后,笔记本电脑就没有声音了,所以我尝试应用网上找到的各种修复方法,但可能弄乱了更多东西。
在图形界面中,“设置 > 声音 > 输出”中唯一可用的设备是虚拟输出。 相同虚拟输出当我通过 F 键改变音量时会出现名称。
pulseaudio -k && sudo alsa force-reload
卸载 ALSA 声音驱动程序然后重新加载它们,但这并不能恢复声音。pacmd list-cards
给出0 card(s) available.
关于 ALSA
另一方面,找到一个编号与 BIOS 中列出的aplay -l
“音频控制器”匹配的声卡:RealTek ALC3246
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC3246 Analog [ALC3246 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
$ grep "Codec:" /proc/asound/card*/codec*
Codec: Realtek ALC3246
这与的行为一致alsamixer
,显示 Realtex ALC3246 和一堆我可以改变的仪表,但没有影响。
由于 ALSA 一切正常,我尝试绕过pulseaudio
。首先,speaker-test
不会产生任何声音。接下来我尝试
aplay -D sysdefault ~/Downloads/file_example_WAV_1MG.wav
没有成功。选择此-vvv
选项后,我可以看到指示条显示音量随音乐变化;仍然没有声音。在卸载 pulseaudio ( sudo apt-get purge pulseaudio
) 的情况下重复实验没有帮助。
lsof、ps 和 lsmod
lsof /dev/snd/*
根本没有任何输出(但根据ls
目录/dev/snd
包含:)
by-path controlC0 hwC0D0 pcmC0D0c pcmC0D0p seq timer
。
$ ps -ef | grep pulse
gdm 2168 1827 0 19:53 ? 00:00:00 /usr/bin/pulseaudio --daemonize=no
bruno 2555 1 0 19:54 ? 00:00:00 /usr/bin/pulseaudio --start --log-target=syslog
bruno 4106 3923 0 20:11 pts/2 00:00:00 grep --color=auto pulse
$ lsmod | grep snd
snd_soc_skl 106496 0
snd_soc_hdac_hda 24576 1 snd_soc_skl
snd_hda_ext_core 28672 2 snd_soc_hdac_hda,snd_soc_skl
snd_soc_skl_ipc 65536 1 snd_soc_skl
snd_soc_sst_ipc 20480 1 snd_soc_skl_ipc
snd_soc_sst_dsp 36864 1 snd_soc_skl_ipc
snd_soc_acpi_intel_match 28672 1 snd_soc_skl
snd_soc_acpi 16384 2 snd_soc_acpi_intel_match,snd_soc_skl
snd_hda_codec_realtek 114688 1
snd_soc_core 233472 2 snd_soc_hdac_hda,snd_soc_skl
snd_hda_codec_generic 77824 1 snd_hda_codec_realtek
snd_compress 24576 1 snd_soc_core
ac97_bus 16384 1 snd_soc_core
snd_pcm_dmaengine 16384 1 snd_soc_core
snd_hda_intel 49152 0
snd_hda_codec 135168 4 snd_hda_codec_generic,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda
snd_hda_core 86016 7 snd_hda_codec_generic,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_soc_hdac_hda,snd_soc_skl
snd_hwdep 20480 1 snd_hda_codec
snd_pcm 102400 7 snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_core,snd_soc_skl,snd_hda_core,snd_pcm_dmaengine
ledtrig_audio 16384 3 snd_hda_codec_generic,snd_hda_codec_realtek,dell_laptop
snd_seq_midi 20480 0
snd_seq_midi_event 16384 1 snd_seq_midi
snd_rawmidi 36864 1 snd_seq_midi
snd_seq 69632 2 snd_seq_midi,snd_seq_midi_event
snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi
snd_timer 36864 2 snd_seq,snd_pcm
snd 86016 12 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,snd_soc_core,snd_pcm,snd_rawmidi
soundcore 16384 1 snd
脉冲音频-v
我刚刚终止并重新运行了 pulseaudio pulseaudio -k ; pulseaudio -v
,有些消息看起来很有趣。
I: [pulseaudio] (alsa-lib)utils.c: could not open configuration file /usr/share/alsa/ucm/HDA Intel PCH at 0xdc328000 irq 133/HDA Intel PCH at 0xdc328000 irq 133.conf
I: [pulseaudio] (alsa-lib)parser.c: error: could not parse configuration for card HDA Intel PCH at 0xdc328000 irq 133
I: [pulseaudio] (alsa-lib)parser.c: uknown master file field pcm
I: [pulseaudio] (alsa-lib)parser.c: uknown master file field HDA-Intel
I: [pulseaudio] alsa-ucm.c: UCM available for card HDA Intel PCH
E: [pulseaudio] alsa-ucm.c: No UCM verb is valid for HDA Intel PCH
E: [pulseaudio] module-alsa-card.c: Failed to find a working profile.
E: [pulseaudio] module.c: Failed to load module "module-alsa-card" (argument: "device_id="0" name="pci-0000_00_1f.3" card_name="alsa_card.pci-0000_00_1f.3" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1""): initialization failed.
I: [pulseaudio] module-udev-detect.c: Card /devices/pci0000:00/0000:00:1f.3/sound/card0 (alsa_card.pci-0000_00_1f.3) failed to load module.
I: [pulseaudio] module-udev-detect.c: Found 1 cards.
答案1
有点令人失望的是,以下这些步骤完全解决了我的问题,每个步骤之间都需要两次冷重启(关机 + 手动重新打开电脑)。可能有些重启是没用的。
将 Linux 内核从版本 4.15(?) 升级到版本 5.0.0
通过以下方式卸载 ALSA 和 pulseaudio(以及我能找到的所有相关软件包):
sudo apt-get --purge remove linux-sound-base alsa-base alsa-utils pulseaudio pavucontrol pulseaudio-utils
重新安装这些软件包:
sudo apt-get install linux-sound-base alsa-base alsa-utils pulseaudio pavucontrol pulseaudio-utils
答案2
对我来说也很有用 - 我已经超越了 Linux 5.0,所以我跳过了该步骤。XPS 13 9350 上的另一个提示 - 默认情况下,ubuntu 会发现内部 WiFi 卡。启用它 - 进入关于 -> 软件更新并启用优先驱动程序。在此处输入图片描述