#!/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.