我对诊断 Linux 系统上的硬件问题并不陌生。尽管过去几年我的大部分专业工作都涉及虚拟化,但我仍然喜欢蹲在桌子底下,摆弄设备和内存模块。好吧,除了“蹲在桌子底下”的部分。但这并不意味着持久而神秘的错误不会令人沮丧。最近,我在我的 Ubuntu 18.04 工作站上遇到了一个这样的错误,这个问题持续了数月未解决。
在这里,我将分享我的问题以及我为解决问题所做的多次尝试。即使您可能永远不会遇到我的具体问题,但故障排除过程可能会有所帮助。此外,您还可以享受沾沾自喜的感觉,因为我浪费了大量时间和精力去追寻无用的线索。
这一切都始于我注意到我的工作站上的网络延迟和下载速度非常糟糕。好吧,让我回溯一下。实际上,这一切始于几年前,当我搬家并且懒得在我新家的所有需要连接的房间里铺设电缆时。相反,我买了一堆 USB WiFi 适配器。性能不如以太网,但已经足够好了——通常在机器之间为 2Mbps 到 4Mbps。
但是,在某个阴沉的冬日,我的工作站连接恶化了。据我所知,它似乎是在我短暂地将我的接口置于监听模式以尝试网络嗅探时发生的。延迟现在很高,我常常很幸运能获得 300kbps 的下载速度,并且 ifconfig 报告了大量的传输错误。情况太糟糕了,我经常将较大的基于互联网的软件包下载到笔记本电脑上,然后使用 USB 将它们传输到我的工作站。这是什么世纪?
排除不可能
我的 USB WiFi 接口会随着时间的推移而退化吗?没问题:房子里可能散落着 10 个——所有不同的型号。所以我尝试了其他两三个,但结果同样令人沮丧。
虽然可能性不大,但检查我的 ISP 服务连接并没有什么坏处。多个 DSL 速度测试网站都证实,我的提供商正在提供他们承诺的一切。也许是我的 ISP 提供的 WiFi 路由器出了问题。不是的。笔记本电脑即使坐在工作站旁边也能很好地连接到同一路由器。
我确定是 WiFi 问题吗?也许是普通的网络问题。为了找出答案,我将两条旧的 CAT5 电缆组合在一起,然后将它们从路由器拉出,穿过餐厅桌子底下、客厅、走廊,然后进入我的办公室。即时连接的快乐:25Mbps 下载速度。但我感觉到,从长远来看,妻子可能不会对餐厅里的电缆做出很好的反应。这不是一个解决方案,但它确实证实了问题是特定于 WiFi 的。
我短暂切换到监听模式是否以某种方式搞乱了一些晦涩的 WPA_supplicant 设置?(WPA_supplicant 是一个用于管理使用 WPA(WiFi Protected Access)协议的客户端连接的软件包。) 最快确定答案的方法是将我的工作站启动到 live USB Ubuntu 会话,以获得全新的、开箱即用的操作系统体验。结果呢?即使使用 live 会话,我仍然获得很差的连接性。这几乎排除了软件配置,不是吗?
那么还剩下什么?在绝望中,我给一位老朋友发了电子邮件,他给了我一些合理的建议,包括检查 dmesg 中是否有错误,lsmod 中是否有冲突的驱动程序,以及我的无线芯片组的固件版本。考虑到过去几年在将如此广泛的 WiFi 芯片组整合到 Linux 内核中所取得的进展,以及深入研究固件版本兔子洞可能会有多么复杂,我跳过了最后一项,并寄希望于最好的结果。
最后,我的朋友建议我清除 wpa_supplicant 并重新安装它。“重新安装”这一步可能会很棘手,因为在那个阶段我将没有 WiFi 连接。但这还是可行的。所以我做了,而且,我的连接确实有所改善……持续了一周左右。然后又回到了 250kbps 的黑暗时代。
绝望之下,我尝试卸载 NetworkManager 并用 Wicd 软件包替换它。关于这一点,有两个有趣的观察结果
- 您是否知道在 GNOME 3 中卸载 NetworkManager 会自动导致 gnome-control-center 也被卸载?顺便说一句,这被认为是一项功能,而不是一个错误。
- 您是否知道为什么 Wicd 不是任何我熟悉的 Linux 发行版中使用的默认 WiFi 工具?我现在非常确定——虽然它可以在某些边缘情况下成为救星——但这是因为该模块更有可能引入许多恼人的错误行为。
新硬件,老问题依旧
事情就这样僵持了几周令人不安的时间,直到,主要是出于不相关的原因,我决定构建一个替代工作站。
令人高兴的是,我与新机器的连接很稳健。直到它不再稳健。
几天之内,我又回到了在浓雾中看互联网的状态。速度测试显示我的延迟在 100 毫秒范围内,传输速度非常慢。到底是怎么回事?两台机器唯一共享的硬件是电源,但这绝不可能是这里的因素。
事实上,工作站升级让事情变得更简单,因为它几乎排除了所有可能性。而且,正如夏洛克·福尔摩斯所说,当您排除了不可能的事情后,剩下的就是可能的事情。
那么还剩下什么?实际上只有一件事,但它花费了所有那些死胡同和失败才让我意识到它。因为我的工作站放在桌子底下,而且由于过多的物理障碍物,WiFi 接收可能会受到影响,所以我希望尽可能地抬高我的 USB WiFi 适配器。为此,我通过三英尺长的 USB 延长线将其连接到我的工作站,并将其放在我的桌面上。凭直觉,我拔掉了延长线,并将适配器直接插入其中一个集成的 USB 端口。
立即成功。也许从一开始使用延长线就是一个坏主意,或者更可能的是,它随着时间的推移而退化了,但现在一切都愉快地运行着。我敢打赌你没有猜到这个结局。我当然没有。
7 条评论