109 lines · 3.6 KB · executable
#!/usr/bin/env bash

#
# Configure deep sleep and AMDGPU suspend/resume fixes for ASUS ROG Flow Z13
# (Strix Halo). Safe to re-run — idempotent, no-ops if already configured.
#
# Usage: sudo ./setup-sleep-state
#

set -euo pipefail

if [[ $EUID -ne 0 ]]; then
    echo "This script must be run as root (sudo)." >&2
    exit 1
fi

SLEEP_DROPIN="/etc/systemd/sleep.conf.d/deep-sleep.conf"
AMDGPU_MODPROBE="/etc/modprobe.d/amdgpu-suspend.conf"
SLEEP_HOOK="/usr/lib/systemd/system-sleep/amdgpu-resume"
BOOTLOADER_CONF="/etc/default/grub"
NEEDS_UPDATE=false

echo "=== Sleep State Setup for ASUS ROG Flow Z13 ==="
echo ""

# 1. Enable deep sleep (S3) instead of s2idle
if [[ -f "$SLEEP_DROPIN" ]] && grep -q 'SuspendState=deep' "$SLEEP_DROPIN" 2>/dev/null; then
    echo "[✓] Deep sleep already configured"
else
    mkdir -p /etc/systemd/sleep.conf.d
    cat > "$SLEEP_DROPIN" <<EOF
[Sleep]
SuspendState=mem standby freeze
EOF
    echo "[+] Created $SLEEP_DROPIN"
    NEEDS_UPDATE=true
fi

# 2. AMDGPU module options for suspend stability
#    - runpm=0: disable runtime PM (prevents dGPU power-down crashes on Strix Halo)