If bluetooth is disabled in the BIOS, the bluetoothd process won't be running. bluetoothctl waits for that process to launch, which means it timeouts indefinitly, breaking suspend entirely. By checking if bluetoothd is running before calling bluetoothctl suspend works fine even if bluetooth is disabled in the BIOS. Signed-off-by: Dorian Stoll <dorian.stoll@tmsp.io>
60 lines
1.8 KiB
Bash
60 lines
1.8 KiB
Bash
#!/bin/bash
|
|
case $1 in
|
|
pre) # unload the modules before going to sleep
|
|
|
|
# Disable bluetooth if no device is connected
|
|
if ps cax | grep bluetoothd && ! 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
|
|
if ps cax | grep bluetoothd; then
|
|
bluetoothctl power on
|
|
fi
|
|
|
|
# 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.
|