luc*_*rot 8 sound volume-control drivers 18.04
我在 Lenovo Yoga ThinkPad X1 Gen4 上运行 Ubuntu 18.04。与相同硬件在 Windows 上显示的音频质量相比,音频质量明显较差。Ubuntu 上的最大音量比 Windows 上的 30% 音量要安静。
\n我该如何改进?理想情况下,同时保持音量键的功能。
增加主音量确实alsamixer会稍微提高笔记本电脑的音量,但还不够。而且,它不会持续存在。
alsamixer当我按下时,仅报告一个声卡选项F6(这是合理的),并且不为经常提到的“pcm”提供滑块,一些答案建议修改该滑块。例如这个答案。
有趣的是,当我使用键盘上的音量键增大/减小音量时,alsamixer 滑块都不会移动,尽管它们显然会影响音量级别。
\n声音设置有一个“过度放大”切换按钮,可将音量最大提高 50%,但会降低音频质量。这不仅声音不够大,而且音质也比以前更差。
\n扬声器是唯一列出的设备,称为Speaker-sof-skl_hda_card。
增加 中的音量pavucontrol似乎与增加 中的主音量级别做了同样的事情alsamixer。
我卸载了 PulseAudio v11(apt 中最新的)并尝试自己构建最新的 PulseAudio。成功后收到有关太旧或不可用的../configure警告。d-bus我认为这些都不是真的,所以我因为不确定而没有继续。
使用此答案中建议的 PPA,我可以成功安装 PulseAudio v12 和 PulseEffects。
\n重启后,更新本身似乎没有任何明显的效果。
我按照另一个答案的评论autogain中的建议在 PulseEffects GUI 中激活,但虽然它确实有效果,并且可能稍微提高了质量,但激活此选项会降低音量。
联想只列出了适用于 Windows 的驱动程序,尽管联想声称该笔记本电脑已“经过 Linux 认证”。这包括“音频”下的“设备的正常功能”。
\n也许值得注意的是,联想网站谈论“ Realtek Audio Driver”,而lspci只向我报告“Intel Corporation Device 9dc8 (rev 11)”。
\n\n6.0.8854.1(瑞昱音频)/ 10.23.0.3672(英特尔智能声音技术)
\n
根据Certification.ubuntu.com,音频硬件是
\n\n\n声音的
\n英特尔公司 Cannon Point-LP 高清音频控制器 (8086:9dc8)
\n英特尔公司 未知
\n
对于另一个问题,我使用nomodesetgrub 参数启动,这反过来又破坏了我的音量键。但这似乎已在最近的内核更新中得到修复。有和没有nomodeset,声音本身的质量都很低。
uname -ageneric@motorbrot:~$ uname -a\nLinux motorbrot 5.3.0-62-generic #56~18.04.1-Ubuntu SMP Wed Jun 24 16:17:03 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux\nRun Code Online (Sandbox Code Playgroud)\nlspcigeneric@motorbrot:~$ lspci | grep -i Audio\n00:1f.3 Audio device: Intel Corporation Device 9dc8 (rev 11)\nRun Code Online (Sandbox Code Playgroud)\naplay -lgeneric@motorbrot:~$ aplay -l\n**** List of PLAYBACK Hardware Devices ****\ncard 0: sofsklhdacard [sof-skl_hda_card], device 0: HDA Analog (*) []\n Subdevices: 1/1\n Subdevice #0: subdevice #0\ncard 0: sofsklhdacard [sof-skl_hda_card], device 1: HDA Digital (*) []\n Subdevices: 1/1\n Subdevice #0: subdevice #0\ncard 0: sofsklhdacard [sof-skl_hda_card], device 3: HDMI1 (*) []\n Subdevices: 1/1\n Subdevice #0: subdevice #0\ncard 0: sofsklhdacard [sof-skl_hda_card], device 4: HDMI2 (*) []\n Subdevices: 1/1\n Subdevice #0: subdevice #0\ncard 0: sofsklhdacard [sof-skl_hda_card], device 5: HDMI3 (*) []\n Subdevices: 1/1\n Subdevice #0: subdevice #0\nRun Code Online (Sandbox Code Playgroud)\n/etc/modprobe.d/alsa-base.conf# autoloader aliases\ninstall sound-slot-0 /sbin/modprobe snd-card-0\ninstall sound-slot-1 /sbin/modprobe snd-card-1\ninstall sound-slot-2 /sbin/modprobe snd-card-2\ninstall sound-slot-3 /sbin/modprobe snd-card-3\ninstall sound-slot-4 /sbin/modprobe snd-card-4\ninstall sound-slot-5 /sbin/modprobe snd-card-5\ninstall sound-slot-6 /sbin/modprobe snd-card-6\ninstall sound-slot-7 /sbin/modprobe snd-card-7\n\n# Cause optional modules to be loaded above generic modules\ninstall snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }\n#\n# Workaround at bug #499695 (reverted in Ubuntu see LP #319505)\ninstall snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }\ninstall snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; }\ninstall snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; }\n#\ninstall snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; }\n# Cause optional modules to be loaded above sound card driver modules\ninstall snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; }\ninstall snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; }\n\n# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)\ninstall saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; }\n# Prevent abnormal drivers from grabbing index 0\noptions bt87x index=-2\noptions cx88_alsa index=-2\noptions saa7134-alsa index=-2\noptions snd-atiixp-modem index=-2\noptions snd-intel8x0m index=-2\noptions snd-via82xx-modem index=-2\noptions snd-usb-audio index=-2\noptions snd-usb-caiaq index=-2\noptions snd-usb-ua101 index=-2\noptions snd-usb-us122l index=-2\noptions snd-usb-usx2y index=-2\n# Ubuntu #62691, enable MPU for snd-cmipci\noptions snd-cmipci mpu_port=0x330 fm_port=0x388\n# Keep snd-pcsp from being loaded as first soundcard\noptions snd-pcsp index=-2\n# Keep snd-usb-audio from beeing loaded as first soundcard\noptions snd-usb-audio index=-2\n\n# sound fix 03. Jun 2020\n# did help when combined with running "pulseaudio --start" after reboot.\n# But broke birghtness keys.\n# See askubuntu.com/questions/1245587/sound-card-not-detected-on-ubuntu-18.04/1246476\n# options snd-hda-intel dmic_detect=0\nRun Code Online (Sandbox Code Playgroud)\n根据这个问题,我加载的声音驱动程序是:
\ngeneric@motorbrot:~$ /sbin/lsmod | grep snd\nsnd_soc_skl_hda_dsp 24576 5\nsnd_soc_hdac_hdmi 32768 1 snd_soc_skl_hda_dsp\nsnd_soc_dmic 16384 1\nsnd_hda_codec_hdmi 57344 1\nsnd_hda_codec_realtek 118784 1\nsnd_hda_codec_generic 81920 1 snd_hda_codec_realtek\nsnd_sof_intel_hda_common 73728 1 sof_pci_dev\nsnd_soc_hdac_hda 24576 1 snd_sof_intel_hda_common\nsnd_sof_intel_hda 20480 1 snd_sof_intel_hda_common\nsnd_sof_intel_byt 24576 1 sof_pci_dev\nsnd_sof_intel_ipc 20480 1 snd_sof_intel_byt\nsnd_sof 98304 4 snd_sof_intel_hda_common,snd_sof_intel_byt,snd_sof_intel_ipc,sof_pci_dev\nsnd_sof_xtensa_dsp 16384 1 sof_pci_dev\nsnd_hda_ext_core 28672 4 snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_sof_intel_hda\nsnd_soc_acpi_intel_match 32768 2 snd_sof_intel_hda_common,sof_pci_dev\nsnd_soc_acpi 16384 2 snd_soc_acpi_intel_match,sof_pci_dev\nsnd_soc_core 241664 6 snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_soc_dmic,snd_soc_skl_hda_dsp\nsnd_compress 24576 1 snd_soc_core\nac97_bus 16384 1 snd_soc_core\nsnd_pcm_dmaengine 16384 1 snd_soc_core\nsnd_hda_intel 53248 0\nsnd_intel_dspcfg 24576 2 snd_hda_intel,sof_pci_dev\nsnd_hda_codec 131072 6 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda,snd_soc_skl_hda_dsp\nsnd_hda_core 90112 11 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_sof_intel_hda,snd_soc_skl_hda_dsp\nsnd_hwdep 20480 1 snd_hda_codec\nsnd_pcm 102400 11 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_core,snd_hda_core,snd_pcm_dmaengine\nledtrig_audio 16384 3 snd_hda_codec_generic,snd_hda_codec_realtek,thinkpad_acpi\nsnd_seq_midi 20480 0\nsnd_seq_midi_event 16384 1 snd_seq_midi\nsnd_rawmidi 36864 1 snd_seq_midi\nsnd_seq 69632 2 snd_seq_midi,snd_seq_midi_event\nsnd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi\nsnd_timer 36864 2 snd_seq,snd_pcm\nsnd 86016 23 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,thinkpad_acpi,snd_soc_core,snd_pcm,snd_rawmidi\nsoundcore 16384 1 snd\nRun Code Online (Sandbox Code Playgroud)\n\n\n从bugzilla.kernel.org/show_bug.cgi?id=207407您可以测试文件的补丁
\n/usr/share/alsa/ucm2/sof-hda-dsp/HiFi.conf(注释 #16)\xe2\x80\x93 laugeo
我的机器上不存在该文件。然而,确实存在的是一个文件/usr/share/alsa/ucm/sof-skl_hda_card/HiFi.conf。显着差异:
ucm它不是ucm2aplay -l链接的差异建议将“扬声器”和“耳机”的PlaybackMixerElem和条目更改为和。\n在我的文件中,情况已经如此。这是我的完整文件:PlaybackVolumePlaybackMixerElem "Master"PlaybackVolume "Master Playback Volume"
# Use case Configuration for skl-hda-card\n\nSectionVerb {\n\n EnableSequence [\n cdev "hw:sofsklhdacard"\n ]\n\n DisableSequence [\n cdev "hw:sofsklhdacard"\n ]\n}\n\nSectionDevice."Speaker" {\n Comment "Speaker"\n\n EnableSequence [\n cdev "hw:sofsklhdacard"\n cset "name=\'Speaker Playback Switch\' on"\n ]\n\n DisableSequence [\n cdev "hw:sofsklhdacard"\n cset "name=\'Speaker Playback Switch\' off"\n ]\n\n Value {\n PlaybackPCM "hw:sofsklhdacard,0"\n PlaybackVolume "Master"\n PlaybackSwitch "Master Playback Switch"\n JackHWMute "Headphone"\n PlaybackChannels "2"\n PlaybackPriority "100"\n }\n}\n\nSectionDevice."Headphone" {\n Comment "Headphone"\n\n EnableSequence [\n cdev "hw:sofsklhdacard"\n cset "name=\'Headphone Playback Switch\' on"\n ]\n\n DisableSequence [\n cdev "hw:sofsklhdacard"\n cset "name=\'Headphone Playback Switch\' off"\n ]\n\n Value {\n PlaybackPCM "hw:sofsklhdacard,0"\n PlaybackVolume "Master"\n PlaybackSwitch "Master Playback Switch"\n PlaybackChannels "2"\n JackName "sof-skl_hda_card Headphone"\n JackType "gpio"\n JackSwitch "12"\n JackControl "Headphone Mic Jack"\n PlaybackPriority "200"\n }\n}\n\n<ucm/sof-skl_hda_card/Mics.conf>\nRun Code Online (Sandbox Code Playgroud)\n该声明
\n\n\n我认为固件和 EC 不是这里的问题,因为在内核 5.4.10 之前一切正常。
\n
让我有点困惑,因为我的内核目前只是5.4.0在那之前的。
\n\n然而,从 Arch 上的内核 5.4.10(最近为 5.6.6)开始,当机器直接启动到 Linux 时,底部的两个扬声器不起作用。Ubuntu 20.04 beta 上也存在同样的问题。但是,如果我先启动到 Windows 10,然后重新启动到 Linux,则所有扬声器都可以正常工作。我正在使用 SOF 固件和 PulseAudio 13.99.1,但如果我使用“snd_intel_dspcfg.dsp_driver=1”或“snd_hda_intel.dmic_detect=0”启动,问题仍然存在。
\n
来自 bugtracker 的评论表明更新 PulseAudio 并升级到 Ubuntu 20.04 并不能解决该问题。但更重要的是,它表示从 Windows 重新启动到 Linux 时,声音适用于所有扬声器,而不是冷启动。
\n我可以重现这一点 - 但经过进一步检查,我很确定所有四个扬声器从一开始就为我工作。问题只是音质和音量。
在内核 bugtracker 上,还有另一个问题,标记为重复。Thinkpad X1 Yoga gen 4 声音问题:没有低音、最大音量太低、PA 只能看到立体声通道
\n\n\n使用 Thinkpad X1 Yoga gen 4、Kernel 5.6.14 和 PulseAudio 14,声音情况如下:
\n好的:
\n\n
\n- 麦克风阵列开箱即可正常工作
\n- 前置和后置扬声器均发出开箱即用的声音
\n坏的:
\n\n
\n- 最大音量有点小
\n- 低音扬声器根本不工作
\n- 扬声器系统在 PulseAudio 中显示为立体声设备,而不是 4.1 声道音频设备(另请参阅https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/914)
\n- PulseAudio 可以看到 DisplayPort 和 HDMI 音频设备的无用断开设备,从而使显示屏变得混乱(另请参阅https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/913)
\n可能相关有用:如果我设置
\nsnd_hda_intel.dmic_detect=0内核参数,则不再检测到麦克风阵列,而是检测到https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/914和https://gitlab.freedesktop.org /pulseaudio/pulseaudio/-/issues/913已修复。
snd_hda_intel.dmic_detect=0所以我尝试了一下对我的笔记本电脑有什么影响。(set -u && aplay -l && pacmd list-cards) &> out.txt添加此内核启动参数之前和之后之间的差异由github 上的着色托管
\n该profiles:部分有相当多的更改,但我不知道它是否相关,而且我很难判断是否这一修改完全改变了音质。现在似乎声音更大了,但如果没有客观的衡量标准,这很难说。
\n发生的变化之一是它现在是 aHDA Intel PCH而不是alsa.card_name = "sof-hda-dsp".
我已经通过他们的客户支持票证系统联系了联想,他们的回复是
\n\n\n我们很遗憾地通知您,我们只能为运行 Windows 操作系统的设备提供支持。
\n
\n如果设备在 Windows 中正常工作,我们无法提供任何进一步的服务。
我很失望,因为 lenovo 网站明确指出这台笔记本电脑是“linux 认证的”并且一般来说
\n\n\n联想还将把设备驱动程序直接上游到 Linux 内核,以帮助在工作站的整个生命周期中保持稳定性和兼容性。
\n
\n news.lenovo.com
但似乎还没有为 Linux 建立任何支持团队。
\n(编辑:)我现在收到了联想的另一条回复,表示我可以联系他们在我国的服务合作伙伴。他们给了我两个电话号码,我一联系就打电话。
\n(编辑:)bugtracker 上有一篇新帖子,我还无法验证。
\n\n\n在带有 SOF 固件的内核 5.8.12 上,该问题似乎已得到解决。非常感谢所有参与人员!
\n
| 归档时间: |
|
| 查看次数: |
3105 次 |
| 最近记录: |