自 10 月 22 日起,运行 Arch Linux 的 Lenovo Thinkpad X1 Carbon 于 12 月 15 日更新了其软件包。重新启动后,麦克风静音和扬声器静音键的 LED 指示灯停止工作。
我通过简单地搜索“静音 LED 不工作”之类的短语开始了我的调查,但找不到任何最近的内容。我知道这一定是最近发生的,因为症状是在更新后恰好出现的。
其他按钮工作正常,Caps Lock、Fn Lock,但只有静音按钮不起作用。
我检查/var/log/pacman.log/了已更新的软件包。虽然有很多,但除了 PulseAudio、ALSA 和 Linux 内核的更新之外,没有任何东西可以干扰我的 Thinkpad 按钮。
我决定先检查内核。将内核降级到我执行的先前版本
~ # pacman -U /var/cache/pacman/linux-4.18.16.arch1-1-x86_64.pkg.tar.xz
Run Code Online (Sandbox Code Playgroud)
重新启动后灯又亮了。我现在确信问题出在 Linux 内核的更新中。
我现在知道内核 4.18.16 可以工作,而我知道 4.19.8 不能!
我从 Arch Linux Package Archive ( https://archive.archlinux.org/ ) 下载了版本 4.19 到 4.19.8,因为我知道内核在中间的某个地方出现了问题。
因为我是2016年4月18日,所以升级到4.19.4。19.4 的工作方式与 18.16 类似,因此该错误是在 19.4 之后但 19.8 之前引入的
接下来是 19.6。这个版本也运行得很好,所以我现在知道这个 bug 是在 19.7 中引入的。再次升级后,果然,4.19.7 是第一个发生这种“回归”(他们称之为)的版本。
由于 Linux 是开源的,您可以在https://kernel.org上查找每个 Linux 版本的变更日志
以下是版本 4.19.7 的变更日志:https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.9
警告,它非常大!为了找到问题开始的地方的一些迹象,我决定在文件中按 CTRL+F 一些关键字。首先我尝试了“led”,但没有任何看起来有希望的提交。然后我搜索“静音”,但再次没有找到。
在使用其他几个关键字之后,我尝试了“carbon”,然后发现了一个名为:
dcd51305cd41e77bf775992e6d6cee52f83426b7
ALSA: hda/realtek - fix the pop noise on headphone for lenovo laptops
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是“哦,太棒了,他们解决了这个问题!”,但由于这也是唯一提到联想的提交,而且这是回归内核的变更日志,所以我最好的选择是进行调查。
值得庆幸的是,这个提交包含了一个到 launchpad.net 的 BugLink:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1805079
我想我可以问开发商他们的 LED 灯是否也有问题。但我什至不需要问,因为另一个用户已经描述了我遇到的问题:(链接)
I'm on Lenovo ThinkPad X1 Carbon 6th, model 20KH006JGE.
After upgrading to Linux 4.19.7, the audio mute and
microphone mute LEDs (on F1 and F4 keys) stopped working.
Run Code Online (Sandbox Code Playgroud)
提交的创建者已经做出了回应,甚至提供了解决方案!很棒的东西,但现在怎么办?我不想编译自己的内核...哎呀!我需要知道此修复何时实施。
幸运的是,整个 Linux 内核都在 GitHub 上!https://github.com/torvalds/linux
我深入研究了提交历史记录,并按 CTRL+F 键选择“LED”,果然,在第 4 页上我找到了修复提交!(关联)
6ba189c5c1a4bda70dc1e4826c58b0246068bb8d
ALSA: hda/realtek - Fix the mute LED regresion on Lenovo X1 Carbon
Run Code Online (Sandbox Code Playgroud)
太棒了,看来这个提交已经发布并经过审核了,那么它现在在哪里呢?修复程序什么时候发布?
因此 Linux 的发行版由 Greg Kroah-Hartman 维护。您可能已经在我们之前查看的变更日志顶部看到了他的名字。每隔几天,他就会从存储库中收集有用的提交,并将它们捆绑到一个新的稳定版本中。
您可以在 kernel.org 的稳定邮件列表中跟踪发布周期的进度和讨论。如果您不想订阅,而只是阅读,您可以在这里找到存档: https: //www.spinics.net/lists/stable/
在那里,我只是再次拿出我值得信赖的 CTRL+F 并搜索“LED”,是的,果然:[PATCH 4.19 140/142] 就是我正在寻找的提交。
Greg 已经包含了我们想要的提交,目前正在审查它的发布。距离我结束讨论以及发布 4.19.10 只剩几天了。
要解决此问题,请将内核降级至最高版本 4.19.6。
您也可以等待几天,因为 4.19.10 版本将修复回归问题,预计将于 12 月 16 日或 17 日发布。
我希望我的旅程读起来有点有趣,并且可以帮助您解决将来的问题。我了解了变更日志、提交、存储库、发布、邮件列表等等,所以我不得不分享。
亲切的问候,祝你玩得开心!