唤醒后,插入 USB WiFi 加密狗的 PCIe USB 卡出现故障,因为网络在 USB 接口之前启动

唤醒后,插入 USB WiFi 加密狗的 PCIe USB 卡出现故障,因为网络在 USB 接口之前启动

我有一块较旧的主板,上面有一块 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 可以解决问题。

解决方案就是将其添加为唤醒脚本。

使用 systemd 在挂起之前和之后运行脚本

只需将任意名称的可执行脚本放在 /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

相关内容