linux-surface/root/lib/systemd/system-sleep/sleep
Dorian Stoll aee8e310e0
Remove hard systemd dependency from the sleep script
By using nmcli, users who don't use a systemd based distribution (Gentoo etc.),
can run the sleep script manually, or hook it up to their service manager manually.

This also removes the forced restart if people willingly disabled NetworkManager.

Signed-off-by: Dorian Stoll <dorian.stoll@tmsp.io>
2019-10-01 12:13:59 +02:00

58 lines
1.7 KiB
Bash

#!/bin/bash
case $1 in
pre) # unload the modules before going to sleep
# Disable bluetooth if no device is connected
if ! bluetoothctl info; then
bluetoothctl power off
fi
# handle wifi issues
modprobe -r mwifiex_pcie;
modprobe -r mwifiex;
modprobe -r cfg80211;
## IPTS: see notes below
## > Remove IPTS from ME side
#modprobe -r intel_ipts
#modprobe -r mei_hdcp
#modprobe -r mei_me
#modprobe -r mei
## > Remove IPTS from i915 side
#for i in $(find /sys/kernel/debug/dri -name i915_intel_ipts_cleanup); do echo 1 > $i; done
;;
post) # re-load modules after resume
## IPTS: see notes below
## > Load IPTS from i915 side
#for i in $(find /sys/kernel/debug/dri -name i915_intel_ipts_init); do echo 1 > $i; done
## > Load IPTS from ME side
#modprobe mei
#modprobe mei_me
#modprobe mei_hdcp
#modprobe intel_ipts
# Restart bluetooth
bluetoothctl power on
# handle wifi issues: complete cycle
modprobe cfg80211;
modprobe mwifiex;
modprobe mwifiex_pcie;
echo 1 > /sys/bus/pci/rescan
if [ -x "$(command -v nmcli)" ] && [ "$(nmcli net)" = "enabled" ]; then
nmcli net off
nmcli net on
fi
;;
esac
# Notes:
# - For IPTS, see
# > https://github.com/jakeday/linux-surface/issues/544#issuecomment-519126757
# for an explanation/discussion. We do not unload/reload modules for now as
# the IPTS drivers should be able to resume/suspend without this. If you
# experience any issues on suspend/resume, please file an appropriate issue or
# join the discussion linked above so that we can fix it. As a temporary
# workaround, you may want to uncomment the IPTS-related lines above.