我在戴尔 XPS 15 9550(16 GB RAM、FHD 屏幕、512 GB SSD、Intel i7-6700HQ)上运行 Ubuntu 16.04 LTS。它与 Windows 双重启动,为此我遵循了此主题。
几乎所有功能都运行良好。但是,当我通过合上盖子或使用systemctl suspend
某些功能(大约 50% 的时间)暂停时,Ubuntu 不会暂停。屏幕变暗,好像即将暂停,但随后直接闪回到登录屏幕。
我认为该问题一定与我的 Broadcom wifi 卡/驱动程序有关。挂起失败期间 dmesg 的输出为:
[36482.669029] PM: Syncing filesystems ... done.
[36482.697429] PM: Preparing system for sleep (mem)
[36482.698220] vgaarb: this pci device is not a vga device
[36483.937858] Freezing user space processes ... (elapsed 0.002 seconds) done.
[36483.940227] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[36483.941564] PM: Suspending system (mem)
[36483.941623] Suspending console(s) (use no_console_suspend to debug)
[36487.637784] brcmf_pcie_suspend: Timeout on response for entering D3 substate
[36487.637802] pci_legacy_suspend(): brcmf_pcie_suspend+0x0/0x1b0 [brcmfmac] returns -5
[36487.637808] dpm_run_callback(): pci_pm_suspend+0x0/0x140 returns -5
[36487.637813] PM: Device 0000:02:00.0 failed to suspend async: error -5
[36487.637902] PM: Some devices failed to suspend, or early wake event detected
[36487.641932] rtc_cmos 00:02: System wakeup disabled by ACPI
[36488.017866] ata2: SATA link down (SStatus 4 SControl 300)
[36488.149475] PM: resume of devices complete after 511.560 msecs
[36488.158754] PM: Finishing wakeup.
还有消息
brcmfmac 0000:02:00.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
每当我启动或从 [成功] 暂停状态恢复时。还要注意:当暂停失败时,我的 wifi 会停止工作(我相信它显示“无设备”)。让它再次工作的唯一方法是重新启动,或者:
sudo rmmod brcmfmac
sudo modprobe brcmfmac
这里是 wifi 信息脚本的输出。任何帮助都将不胜感激!提前谢谢您,如果有任何有用的信息请告诉我。
编辑:升级到 18.04 后问题再次出现。之前接受的答案似乎不再有效,因为systemd
在暂停之前不会从建议的文件中卸载模块。
答案1
我遇到了完全相同的问题。解决方案是在以下位置创建一个文件/etc/pm/config.d/
:
sudo -e /etc/pm/config.d/suspend_broardcom/suspend_broadcom
添加以下内容:
SUSPEND_MODULES="brcmfmac"
并设置文件的权限:
sudo chmod 775 /etc/pm/config.d/suspend_broadcom
答案2
SUSPEND_MODULES="brcmfmac"
对于我来说,添加一个带有的文件/etc/pm/config.d/
不起作用,这可能是systemd
和之间的问题pm
,但我能够通过创建一个systemd
在挂起之前和之后运行的简单脚本来使 Broadcom wifi 卡的挂起正常工作。
/usr/lib/systemd/system-sleep/
在(或您的systemd
单元文件所在的任何位置,可能必须是)中创建一个文件,/lib/systemd/system-sleep/
其中包含以下内容:
#!/bin/sh
case $1 in
pre) modprobe -r brcmfmac ;;
post) modprobe brcmfmac ;;
esac
您可以为其命名,例如10-brcmfmac.sh
- 脚本名称并不重要,只要它位于此目录中并且设置了可执行位(例如sudo chmod +x /usr/lib/systemd/system-sleep/10-brcmfmac.sh
)。
systemd
有关暂停钩子的更多信息:https://wiki.archlinux.org/index.php/Power_management#Hooks_in_/usr/lib/systemd/system-sleep