Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Disable broken xhci device before suspend and avoid freeze.
#!/bin/sh
#
# This script should prevent the following suspend errors
# which freezes the Dell Inspiron laptop.
#
# Put it in /usr/lib/systemd/system-sleep/xhci.sh
#
# The PCI 00:14.0 device is the usb xhci controller.
#
# kernel: [67445.560610] pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 returns -16
# kernel: [67445.560619] dpm_run_callback(): pci_pm_suspend+0x0/0x150 returns -16
# kernel: [67445.560624] PM: Device 0000:00:14.0 failed to suspend async: error -16
# kernel: [67445.886961] PM: Some devices failed to suspend, or early wake event detected
if [ "${1}" == "pre" ]; then
# Do the thing you want before suspend here, e.g.:
echo "Disable broken xhci module before suspending at $(date)..." > /tmp/systemd_suspend_test
grep XHC.*enable /proc/acpi/wakeup && echo XHC > /proc/acpi/wakeup
elif [ "${1}" == "post" ]; then
# Do the thing you want after resume here, e.g.:
echo "Enable broken xhci module at wakeup from $(date)" >> /tmp/systemd_suspend_test
grep XHC.*disable /proc/acpi/wakeup && echo XHC > /proc/acpi/wakeup
fi
@timrs2998

This comment has been minimized.

Copy link

commented Mar 1, 2018

Thanks for creating this gist. When I shut my laptop lid, my system would suspend. However, sometimes it would not resume and I would be forced to press and hold the power button to shut it off. With this script, I no longer have the issue.

@Mange

This comment has been minimized.

Copy link

commented Aug 24, 2018

Thank you! This solved my systemd suspend problems with my System76 Oryx Pro running Arch Linux. I too had log entries with

Aug 23 14:03:43 bilquis kernel: pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 [usbcore] returns -16
Aug 23 14:03:43 bilquis kernel: dpm_run_callback(): pci_pm_suspend+0x0/0x120 returns -16
Aug 23 14:03:43 bilquis kernel: PM: Device 0000:00:14.0 failed to suspend async: error -16
Aug 23 14:03:43 bilquis kernel: PM: Some devices failed to suspend, or early wake event detected

(Trying to add as many keywords as possible to help future searchers. 🙈)

@konfiot

This comment has been minimized.

Copy link

commented Jan 9, 2019

Same problem on dell XPS 13, ubuntu 18.10, thanks a lot !

@LexTek

This comment has been minimized.

Copy link

commented Feb 7, 2019

Solved (random) immediate wake-up after suspend on dell XPS 13, ubuntu 18.10, thank you 👍
Edit It seems i have problems for the Device 0000:00:14.0 (Intel Corporation Sunrise Point-LP USB 3.0 xHCI) and with my bluetooth device your script solved the first one (disabling bluetooth makes it sleep normally).

The edit of your script posted here https://askubuntu.com/questions/1089067/wakes-from-suspend-immediately-when-bluetooth-device-disconnected/1092933 solved both problems for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.