Copy of the legacy ~/.pi/agent/docs tree rebuilt as the command-center knowledge base: concept files promoted to path identity, index listings stripped of frontmatter, all wikilinks/relative links resolved, every checkable claim verified against the live fleet (Dankserver = Ryzen 7 7700X + RTX 3090; Strix Halo is Dankclaw), unverifiable claims tagged. kb-lint exits 0.
7.7 KiB
type, title, description, tags, timestamp
| type | title | description | tags | timestamp | ||||
|---|---|---|---|---|---|---|---|---|
| guide | Sleep Fix Guide | Fix guide for Alienware M16a2 sleep/wake issues on CachyOS with NVIDIA RTX 40-series GPU. |
|
2026-01-15 |
z
Alienware M16a2 Sleep/Wake Fix Guide
Based on diagnostics from your system (CachyOS, Kernel 7.1.4, NVIDIA RTX 40-series)
Problem Summary
Your system enters sleep when closing the lid, but the screen stays black on wake. Diagnostics show:
- Sleep state: s2idle (Modern Standby) - problematic for NVIDIA hybrid GPUs
- NVIDIA services: Disabled (nvidia-suspend.service, nvidia-resume.service)
- Kernel errors: ACPI D-Notifier failures, spd5118 resume errors
Fix #1: Enable NVIDIA Suspend Services (⚠️ MOST IMPORTANT)
This is the #1 cause of your issue. The NVIDIA GPU state is not being preserved during suspend.
# Enable the NVIDIA suspend/resume services
sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-resume.service
# Verify they're enabled
systemctl status nvidia-suspend.service nvidia-resume.service
Deterministic verification:
# This shows "enabled" for both services when the fixes work
systemctl is-enabled nvidia-suspend.service nvidia-resume.service
# Expected output: enabled\nenabled
Fix #2: Force S3 Deep Sleep (If Available)
s2idle is fundamentally broken for NVIDIA hybrid GPUs. Try forcing S3 deep sleep:
# Check if S3 is supported
cat /sys/power/mem_sleep
# If you see "[s2idle] deep" or "s2idle [deep]", S3 is available
# Temporarily test S3
echo deep | sudo tee /sys/power/mem_sleep
# Test suspend
systemctl suspend
# If this works, make it permanent
Make S3 permanent:
# Create systemd override
sudo mkdir -p /etc/systemd/sleep.d
sudo tee /etc/systemd/sleep.d/deep-sleep.conf > /dev/null <<'EOF'
[Sleep]
MemSleepDefault=deep
EOF
# Or add kernel parameter (alternative method)
# See Fix #4 below
Deterministic verification:
# Should show [deep] instead of [s2idle]
cat /sys/power/mem_sleep
If S3 is NOT available (you only see [s2idle]):
- Check your BIOS for "Deep Sleep", "S3 Support", or "Sleep State" settings
- Update BIOS to latest version (Dell often enables S3 in updates)
- Some newer laptops have S3 disabled in firmware - BIOS update may be required
Fix #3: Blacklist nvidiafb Module
The NVIDIA framebuffer module can cause black screen on resume:
# Create blacklist file
sudo tee /etc/modprobe.d/blacklist-nvidiafb.conf > /dev/null <<'EOF'
blacklist nvidiafb
EOF
# Regenerate initramfs
sudo mkinitcpio -P
# Verify nvidiafb is not loaded
lsmod | grep nvidiafb
# Expected: no output
Deterministic verification:
# Should return non-zero (module not found)
lsmod | grep -q nvidiafb && echo "FAIL: nvidiafb loaded" || echo "PASS: nvidiafb not loaded"
Fix #4: Add Kernel Parameters
Add these parameters to improve ACPI and sleep behavior:
# For GRUB (edit /etc/default/grub):
# GRUB_CMDLINE_LINUX_DEFAULT="... mem_sleep_default=deep acpi_backlight=vendor"
# For systemd-boot (edit /boot/loader/entries/*.conf):
# Add to options line: mem_sleep_default=deep acpi_backlight=vendor
# For your current setup (check your bootloader):
# Add these parameters:
# mem_sleep_default=deep - forces S3 if available
# acpi_backlight=vendor - fixes backlight control on resume
# acpi_enforce_resources=lax - allows ACPI resource access
After editing bootloader config:
# GRUB
sudo update-grub
# systemd-boot - no action needed, changes take effect on next boot
Deterministic verification:
# Check if parameters are active
cat /proc/cmdline | grep -E "mem_sleep_default|acpi_backlight"
# Should show the parameters you added
Fix #5: Disable Problematic Wake Sources
Your diagnostics show XHCI (USB) and RP01/RP05 (PCIe) wake sources enabled. These can cause issues:
# View current wake sources
cat /proc/acpi/wakeup
# Toggle problematic devices (XHCI is common culprit)
# WARNING: This is temporary - resets on reboot
sudo sh -c 'echo XHCI > /proc/acpi/wakeup'
To make permanent, create a systemd service:
sudo tee /etc/systemd/system/disable-wake-devices.service > /dev/null <<'EOF'
[Unit]
Description=Disable problematic wake devices
Before=sleep.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo XHCI > /proc/acpi/wakeup'
ExecStart=/bin/sh -c 'echo RP01 > /proc/acpi/wakeup'
ExecStart=/bin/sh -c 'echo RP05 > /proc/acpi/wakeup'
[Install]
WantedBy=sleep.target
EOF
sudo systemctl enable disable-wake-devices.service
Fix #6: Update BIOS/Firmware
Dell frequently releases BIOS updates that fix ACPI/suspend bugs:
# Check for firmware updates
sudo fwupdmgr get-updates
# If updates available:
sudo fwupdmgr update
Deterministic verification:
# Check current BIOS version
dmidecode -s bios-version
dmidecode -s bios-release-date
# Compare with Dell support site for your M16a2
Fix #7: Configure TLP (If Installed)
If you use TLP for power management, add these settings:
sudo tee -a /etc/tlp.conf > /dev/null <<'EOF'
# NVIDIA power management
RUNTIME_PM_ON_AUTO_SUSPEND=auto
RUNTIME_PM_ON_IDLE_THRESHOLD=30
# PCI Express ASPM
PCIE_ASPM_ON_AC=powersupersave
PCIE_ASPM_ON_BAT=powersupersave
EOF
# Restart TLP
sudo tlp start
Testing Procedure
After applying fixes, test in this order:
Test 1: Manual Suspend
# Simple suspend test
systemctl suspend
# Expected: System sleeps, wakes properly when you press a key/move mouse
Test 2: Lid Close Test
# Check lid trigger setting
cat /etc/systemd/logind.conf | grep HandleLidSwitch
# Should be: HandleLidSwitch=suspend
# Test by physically closing the lid
# Expected: System sleeps, wakes properly when you open the lid
Test 3: Automated Test
# Run 5 suspend/resume cycles
for i in {1..5}; do
echo "Cycle $i"
systemctl suspend
# Wake up when system suspends
done
Emergency Recovery
If you get a black screen after wake:
- Try switching TTY:
Ctrl+Alt+F3- if this works, it is a display issue - SSH into the machine from another device and check logs
- Hard reset: Hold power button for 10 seconds
- Check logs after reboot:
journalctl -b -1 -k | grep -iE "suspend|resume|nvidia|acpi"
Rollback Plan
If a fix breaks something:
- NVIDIA services:
sudo systemctl disable nvidia-suspend.service - S3 sleep: Remove the sleep.d config or kernel parameter
- nvidiafb blacklist: Remove
/etc/modprobe.d/blacklist-nvidiafb.confand regenerate initramfs - Kernel parameters: Edit bootloader config to remove parameters
Summary of Changes to Apply
| Fix | Priority | Command |
|---|---|---|
| Enable NVIDIA services | ⚠️ CRITICAL | sudo systemctl enable nvidia-suspend.service nvidia-resume.service |
| Blacklist nvidiafb | HIGH | Create /etc/modprobe.d/blacklist-nvidiafb.conf + sudo mkinitcpio -P |
| Force S3 sleep | HIGH | echo deep | sudo tee /sys/power/mem_sleep (test first) |
| Kernel parameters | MEDIUM | Add mem_sleep_default=deep acpi_backlight=vendor to bootloader |
| Update BIOS | MEDIUM | sudo fwupdmgr get-updates |
| Disable wake sources | LOW | Create wake device toggle service |
Next Steps
- Start with Fix #1 (enable NVIDIA services) - this is most likely the issue
- Test suspend after each fix
- Apply Fix #2 if s2idle continues to fail
- Apply Fix #3 (blacklist nvidiafb) - low risk, high reward
- Consider Fix #4 (kernel parameters) if issues persist
- Apply Fix #6 (BIOS update) if available
After you apply all fixes, sleep and wake work reliably.