Skip to content

Instantly share code, notes, and snippets.

@kobataiwan
Forked from timrs2998/system-sleep-xhci.sh
Last active May 29, 2023 18:07
Show Gist options
  • Save kobataiwan/d22482e299c01825a9fe51910d6214ee to your computer and use it in GitHub Desktop.
Save kobataiwan/d22482e299c01825a9fe51910d6214ee to your computer and use it in GitHub Desktop.
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 XHCI > /proc/acpi/wakeup
grep XHC.*enable /proc/acpi/wakeup >> /tmp/systemd_suspend_test
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 XHCI > /proc/acpi/wakeup
grep XHC.*disable /proc/acpi/wakeup >> /tmp_systemd_suspend_test
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment