我有一块较旧的主板,上面有一块 PCIe USB 3.0 卡。主板上插着一个 WiFi 适配器,可以提供网络连接。在机器进入睡眠/挂起状态之前,一切都运行正常。唤醒后,网络无法启动,因为我认为机器试图在 USB 卡重新启动之前启动网络。之后我可以重新启动网络,这样就可以正常工作,因为那时 USB 接口已经启动,但如果操作系统先等待 USB 接口启动,然后再尝试打开网络,那就更好了。我可以做些什么来优先启动 USB 或以其他方式使其按预期工作?
编辑:WiFi 驱动程序是联发科驱动程序,因为 WiFi 适配器使用支持良好的 MT7612U 芯片。使用主板上的内置 USB 2.0 端口时,我没有遇到此问题。此外,卡上的 USB 3.0 芯片是 Renesas/NEC 芯片,但我现在记不起实际型号了。关键是这些都是 Linux 上支持良好的硬件,所以我不确定为什么会发生这种情况。
答案1
如果我理解正确的话,该命令
sudo systemctl restart network-manager.service
可以解决问题。
解决方案就是将其添加为唤醒脚本。
只需将任意名称的可执行脚本放在 /usr/lib/systemd/system-sleep/ 下,检查第一个参数是 pre (系统挂起之前)还是 post (系统从挂起唤醒之后)。
如果是
pre
,则执行暂停前要执行的操作;如果是,post
则执行恢复后要执行的操作。很简单!这是一个无用的例子:
#!/bin/sh if [ "${1}" == "pre" ]; then # Do the thing you want before suspend here, e.g.: echo "we are suspending at $(date)..." > /tmp/systemd_suspend_test elif [ "${1}" == "post" ]; then # Do the thing you want after resume here, e.g.: echo "...and we are back from $(date)" >> /tmp/systemd_suspend_test fi