Files
command-center/omp-docs/reports/sleep-wake-investigation-report.html
Frank 689228e60d docs: purge the retired workstation from the knowledge base
Second half of the purge (the first covered the persona, AGENTS.md, README.md,
and the distillation of the per-host pages). Every remaining identifier is
gone: hostname, both LAN addresses, and the Wi-Fi SSID.

34 count-checked substitutions across 22 files — indexes, tool/research pages,
the inventory census, the changelog, one generated HTML report, and five
managed skills. Facts kept, names dropped: a history entry keeps its four-page
listing as a nameless summary, the syslog excerpts keep every timestamp and
line, and the census keeps the .zcompdump rows (the zsh version stamps are the
useful part, the hostname was not).

Deliberately unchanged: install.sh's --host case list and the
packages/<hostname>.pkgs filename, where the hostname is the lookup key.

Left out of scope by Frank's call: agent/memories/** — past-session records the
learn pipeline rewrites.

kb-lint: 0 violations. Residual grep for the hostname, its two IPs, and the
SSID across omp-docs/ and agent/managed-skills/: no hits.
2026-09-28 16:37:38 -07:00

831 lines
28 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Alienware M16 R2 Sleep/Wake Issue Report</title>
<style>
:root {
--primary: #2563eb;
--secondary: #64748b;
--success: #16a34a;
--warning: #ca8a04;
--danger: #dc2626;
--background: #f8fafc;
--card: #ffffff;
--border: #e2e8f0;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
line-height: 1.6;
background: var(--background);
color: #1e293b;
}
header {
background: linear-gradient(135deg, var(--primary), #1e40af);
color: white;
padding: 2rem 1rem;
text-align: center;
}
header h1 {
font-size: 1.75rem;
font-weight: 600;
margin-bottom: 0.5rem;
}
header .subtitle {
opacity: 0.9;
font-size: 0.95rem;
}
header .date {
margin-top: 0.75rem;
font-size: 0.85rem;
opacity: 0.8;
}
.container {
max-width: 1000px;
margin: 0 auto;
padding: 1.5rem;
}
section {
background: var(--card);
border-radius: 12px;
padding: 1.5rem;
margin-bottom: 1.5rem;
box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
section h2 {
color: var(--primary);
font-size: 1.25rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--border);
display: flex;
align-items: center;
gap: 0.5rem;
}
section h2 .badge {
font-size: 0.75rem;
padding: 0.25rem 0.6rem;
border-radius: 20px;
font-weight: 500;
}
.badge.system { background: #dbeafe; color: #1e40af; }
.badge.issue { background: #fee2e2; color: #991b1b; }
.badge.fix { background: #dcfce7; color: #166534; }
.badge.research { background: #fef3c7; color: #92400e; }
h3 {
font-size: 1rem;
color: #334155;
margin: 1.25rem 0 0.75rem;
font-weight: 500;
}
h3:first-child {
margin-top: 0;
}
p {
margin-bottom: 0.75rem;
color: #475569;
}
ul, ol {
margin: 0.75rem 0 0.75rem 1.25rem;
color: #475569;
}
li {
margin-bottom: 0.5rem;
}
code {
font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
background: #f1f5f9;
padding: 0.15rem 0.4rem;
border-radius: 4px;
font-size: 0.9em;
color: #0f172a;
}
pre {
background: #1e293b;
color: #e2e8f0;
padding: 1rem;
border-radius: 8px;
overflow-x: auto;
margin: 0.75rem 0;
font-size: 0.85rem;
line-height: 1.5;
}
pre code {
background: transparent;
padding: 0;
color: inherit;
}
.status-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin: 1rem 0;
}
.status-card {
background: var(--background);
border-radius: 8px;
padding: 1rem;
border-left: 4px solid var(--secondary);
}
.status-card.critical { border-left-color: var(--danger); }
.status-card.warning { border-left-color: var(--warning); }
.status-card.ok { border-left-color: var(--success); }
.status-card h4 {
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--secondary);
margin-bottom: 0.5rem;
}
.status-card .value {
font-size: 1.1rem;
font-weight: 600;
color: #1e293b;
}
.status-card .value.error { color: var(--danger); }
.status-card .value.success { color: var(--success); }
.status-card .value.warn { color: var(--warning); }
table {
width: 100%;
border-collapse: collapse;
margin: 1rem 0;
font-size: 0.9rem;
}
th, td {
padding: 0.75rem;
text-align: left;
border-bottom: 1px solid var(--border);
}
th {
background: var(--background);
font-weight: 600;
color: #334155;
}
tr:hover {
background: #f8fafc;
}
.priority {
display: inline-block;
padding: 0.25rem 0.75rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 500;
}
.priority.critical {
background: #fee2e2;
color: #991b1b;
}
.priority.high {
background: #fef3c7;
color: #92400e;
}
.priority.medium {
background: #e0f2fe;
color: #075985;
}
.priority.low {
background: #f1f5f9;
color: #475569;
}
.timeline {
position: relative;
padding-left: 2rem;
margin: 1.5rem 0;
}
.timeline::before {
content: '';
position: absolute;
left: 0.75rem;
top: 0;
bottom: 0;
width: 2px;
background: var(--border);
}
.timeline-item {
position: relative;
margin-bottom: 1.5rem;
}
.timeline-item::before {
content: '';
position: absolute;
left: -1.75rem;
top: 0.4rem;
width: 1rem;
height: 1rem;
border-radius: 50%;
background: var(--primary);
border: 2px solid white;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.timeline-item .date {
font-size: 0.8rem;
color: var(--secondary);
margin-bottom: 0.25rem;
}
.timeline-item .title {
font-weight: 600;
color: #1e293b;
}
.timeline-item .desc {
font-size: 0.9rem;
color: #64748b;
margin-top: 0.25rem;
}
.callout {
padding: 1rem 1.25rem;
border-radius: 8px;
margin: 1rem 0;
}
.callout.note {
background: #eff6ff;
border-left: 4px solid var(--primary);
}
.callout.warning {
background: #fefce8;
border-left: 4px solid var(--warning);
}
.callout.error {
background: #fef2f2;
border-left: 4px solid var(--danger);
}
.callout.success {
background: #f0fdf4;
border-left: 4px solid var(--success);
}
.callout h4 {
margin: 0 0 0.5rem;
font-size: 0.9rem;
}
.callout p {
margin: 0;
font-size: 0.9rem;
}
.action-list {
list-style: none;
margin: 1rem 0;
}
.action-list li {
display: flex;
align-items: flex-start;
gap: 0.75rem;
margin-bottom: 1rem;
}
.action-list li .icon {
flex-shrink: 0;
width: 1.5rem;
height: 1.5rem;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.85rem;
font-weight: 600;
}
.action-list li.critical .icon {
background: var(--danger);
color: white;
}
.action-list li.high .icon {
background: var(--warning);
color: white;
}
.action-list li.medium .icon {
background: var(--primary);
color: white;
}
.action-list li.low .icon {
background: var(--secondary);
color: white;
}
.action-list li .content {
flex: 1;
}
.action-list li .content .title {
font-weight: 500;
color: #1e293b;
}
.action-list li .content .desc {
font-size: 0.85rem;
color: #64748b;
margin-top: 0.25rem;
}
footer {
text-align: center;
padding: 2rem 1rem;
color: var(--secondary);
font-size: 0.85rem;
}
footer a {
color: var(--primary);
text-decoration: none;
}
@media (max-width: 768px) {
.container {
padding: 1rem;
}
section {
padding: 1.25rem;
}
header h1 {
font-size: 1.4rem;
}
}
</style>
</head>
<body>
<header>
<h1>Sleep/Wake Issue Investigation Report</h1>
<p class="subtitle">Alienware M16 R2 • CachyOS (Kernel 7.1.4) • NVIDIA RTX 4070</p>
<p class="date">Generated: July 22, 2026</p>
</header>
<div class="container">
<!-- Executive Summary -->
<section>
<h2><span class="badge system">Overview</span>Executive Summary</h2>
<div class="status-grid">
<div class="status-card critical">
<h4>Sleep State</h4>
<div class="value error">s2idle only</div>
</div>
<div class="status-card warning">
<h4>GPU Driver</h4>
<div class="value warn">Notifiers enabled</div>
</div>
<div class="status-card ok">
<h4>NVIDIA Services</h4>
<div class="value success">Enabled</div>
</div>
<div class="status-card warning">
<h4>ACPI Issues</h4>
<div class="value warn">Multiple errors</div>
</div>
</div>
<h3>Problem Description</h3>
<p>Your machine enters sleep when closing the lid, but exhibits issues properly waking from sleep. The screen may remain black, or the system may exhibit partial wake behavior.</p>
<div class="callout error">
<h4>🔴 Root Cause Identified</h4>
<p>The primary issue is that the system only supports <code>s2idle</code> (Modern Standby) sleep state, which is fundamentally broken for NVIDIA hybrid GPU configurations on Linux. Deep S3 sleep is available but not enabled by default.</p>
</div>
</section>
<!-- System Configuration -->
<section>
<h2><span class="badge system">Hardware</span>System Configuration</h2>
<h3>Hardware Specifications</h3>
<table>
<tr>
<th>Property</th>
<th>Value</th>
</tr>
<tr>
<td>Machine</td>
<td>Alienware m16 R2 (Model 01HV0T)</td>
</tr>
<tr>
<td>BIOS</td>
<td>v1.15.0 (08/06/2025)</td>
</tr>
<tr>
<td>CPU</td>
<td>Intel Core Ultra 7 155H (Meteor Lake-H)</td>
</tr>
<tr>
<td>GPU</td>
<td>NVIDIA RTX 4070 Max-Q (PRIME hybrid)</td>
</tr>
<tr>
<td>Kernel</td>
<td>7.1.4-1-cachyos</td>
</tr>
<tr>
<td>Display Manager</td>
<td>SDDM with niri Wayland compositor</td>
</tr>
</table>
<h3>Current Power Settings</h3>
<pre><code>/sys/power/mem_sleep: [s2idle] ← ONLY s2idle available
/sys/power/state: freeze mem disk
NVIDIA Driver: 610.43.03 (proprietary)
PreserveVideoMemoryAllocations: 2 ← Enabled
UseKernelSuspendNotifiers: 1 ← Enabled</code></pre>
</section>
<!-- Known Issues -->
<section>
<h2><span class="badge issue">Diagnosis</span>Identified Issues</h2>
<h3>Primary Issues</h3>
<ul class="action-list">
<li class="critical">
<div class="icon">1</div>
<div class="content">
<div class="title">s2idle (Modern Standby) is broken</div>
<div class="desc">Only <code>s2idle</code> sleep state is active. Deep S3 sleep is not available. This is the #1 cause of NVIDIA suspend issues on Dell/Alienware laptops.</div>
</div>
</li>
<li class="high">
<div class="icon">2</div>
<div class="content">
<div class="title">ACPI BIOS errors</div>
<div class="desc">Multiple unresolved ACPI symbols in DSDT (<code>_SB.PC00.XHCI.RHUB.SS03</code>, <code>SS04</code>, method <code>TUPC</code> missing arguments).</div>
</div>
</li>
<li class="high">
<div class="icon">3</div>
<div class="content">
<div class="title">NVIDIA ACPI D-Notifier failures</div>
<div class="desc"><code>Failed to handle ACPI D-Notifier event, status=0x11</code> during wake indicates driver cannot properly handle ACPI power state transitions.</div>
</div>
</li>
<li class="medium">
<div class="icon">4</div>
<div class="content">
<div class="title">spd5118 resume failures</div>
<div class="desc">DDR5 SPD EEPROM I2C devices failing to resume (error -6), indicating hardware-level power state corruption.</div>
</div>
</li>
<li class="medium">
<div class="icon">5</div>
<div class="content">
<div class="title">Intel iGPU GSC proxy timeout</div>
<div class="desc">Intel iGPU's Graphics Security Controller fails to initialize, causing display output issues after wake.</div>
</div>
</li>
</ul>
<h3>Kernel Error Logs</h3>
<pre><code>Jul 22 19:43:43 workstation kernel: NVRM: RmHandleDNotifierEvent: Failed to handle ACPI D-Notifier event, status=0x11
Jul 22 19:43:43 workstation kernel: spd5118 18-0050: PM: dpm_run_callback(): spd5118_resume [spd5118] returns -6
Jul 22 19:43:43 workstation kernel: spd5118 18-0050: PM: failed to resume async: error -6
Jul 22 19:49:48 cachyos kernel: ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PC00.XHCI.RHUB.SS03], AE_NOT_FOUND
Jul 22 19:50:08 workstation kernel: i915 0000:00:02.0: [drm] *ERROR* GT1: GSC proxy component didn't bind within expected timeout</code></pre>
</section>
<!-- Previous Work -->
<section>
<h2><span class="badge research">History</span>Previous Work Completed</h2>
<h3>Documentation Created</h3>
<div class="timeline">
<div class="timeline-item">
<div class="date">July 9, 2026</div>
<div class="title">Diagnostic script created</div>
<div class="desc"><code>/home/dank/.pi/scripts/diagnose-sleep-wake.sh</code> — 700+ line comprehensive diagnostic tool</div>
</div>
<div class="timeline-item">
<div class="date">July 18, 2026</div>
<div class="title">Research documentation written</div>
<div class="desc"><code>Alienware-M16a2-Linux-sleep-wake-issues.md</code> (424 lines) and <code>Sleep-Fix-Guide.md</code> (260 lines)</div>
</div>
<div class="timeline-item">
<div class="date">July 20, 2026</div>
<div class="title">Repository reorganized</div>
<div class="desc">Split documentation into <code>docs/research/</code> and <code>docs/tools/</code> directories with proper OKF structure</div>
</div>
</div>
<h3>Files Created</h3>
<table>
<tr>
<th>File</th>
<th>Purpose</th>
<th>Status</th>
</tr>
<tr>
<td><code>scripts/diagnose-sleep-wake.sh</code></td>
<td>Comprehensive diagnostic tool</td>
<td><span class="priority ok">Ready to run</span></td>
</tr>
<tr>
<td><code>docs/research/Alienware-M16a2-Linux-sleep-wake-issues.md</code></td>
<td>Root cause research</td>
<td><span class="priority success">Complete</span></td>
</tr>
<tr>
<td><code>docs/research/Sleep-Fix-Guide.md</code></td>
<td>Step-by-step fix implementation guide</td>
<td><span class="priority success">Complete</span></td>
</tr>
<tr>
<td><code>docs/tools/linux-power-management/index.md</code></td>
<td>Configuration reference</td>
<td><span class="priority success">Complete</span></td>
</tr>
</table>
<h3>What Has Been Done</h3>
<div class="callout note">
<h4>📚 Extensive Research Completed</h4>
<p>Comprehensive research was conducted on NVIDIA GPU driver state corruption during suspend/resume, documenting 10+ GitHub issues from the NVIDIA/open-gpu-kernel-modules repository, identifying patterns across Dell/Alienware systems, and tracking kernel regressions affecting s2idle with NVIDIA hybrid GPUs.</p>
</div>
<h3>What Has NOT Been Done</h3>
<div class="callout warning">
<h4>⚠️ None of the documented fixes have been applied yet</h4>
<p>Despite comprehensive documentation and research, the actual system configuration changes remain pending.</p>
</div>
</section>
<!-- Fixes Summary -->
<section>
<h2><span class="badge fix">Solution</span>Recommended Fixes</h2>
<h3>Implementation Priority</h3>
<table>
<tr>
<th>Priority</th>
<th>Fix</th>
<th>Rationale</th>
</tr>
<tr>
<td><span class="priority critical">CRITICAL</span></td>
<td>Force S3 deep sleep</td>
<td>s2idle is fundamentally broken for NVIDIA hybrid GPUs</td>
</tr>
<tr>
<td><span class="priority high">HIGH</span></td>
<td>Blacklist nvidiafb module</td>
<td>Known to cause black screen on resume</td>
</tr>
<tr>
<td><span class="priority high">HIGH</span></td>
<td>Add kernel parameters</td>
<td>Improve ACPI and sleep behavior</td>
</tr>
<tr>
<td><span class="priority medium">MEDIUM</span></td>
<td>Update BIOS/firmware</td>
<td>Dell frequently fixes ACPI/suspend bugs in updates</td>
</tr>
<tr>
<td><span class="priority medium">MEDIUM</span></td>
<td>Disable problematic wake sources</td>
<td>8 wake sources enabled, including XHCI (USB)</td>
</tr>
</table>
<h3>Detailed Fix Instructions</h3>
<h4>Fix #1: Force S3 Deep Sleep (CRITICAL)</h4>
<pre><code># Check if S3 is supported
cat /sys/power/mem_sleep
# Current: [s2idle] — need to enable "deep"
# Test S3 temporarily
echo deep | sudo tee /sys/power/mem_sleep
# If successful, make permanent by adding to bootloader:
# GRUB: GRUB_CMDLINE_LINUX_DEFAULT="... mem_sleep_default=deep"
# systemd-boot: Add "mem_sleep_default=deep" to options line</code></pre>
<h4>Fix #2: Blacklist nvidiafb Module</h4>
<pre><code># Create blacklist file
sudo tee /etc/modprobe.d/blacklist-nvidiafb.conf > /dev/null <<'EOF'
blacklist nvidiafb
EOF
# Regenerate initramfs
sudo mkinitcpio -P
# Verify
lsmod | grep -q nvidiafb && echo "FAIL" || echo "PASS"</code></pre>
<h4>Fix #3: Add Kernel Parameters</h4>
<pre><code># Edit your bootloader config and add these parameters:
mem_sleep_default=deep acpi_backlight=vendor acpi_enforce_resources=lax
# For GRUB, edit /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mem_sleep_default=deep acpi_backlight=vendor acpi_enforce_resources=lax nvidia-drm.modeset=1 pcie_aspm=off"
# Then update:
sudo update-grub</code></pre>
<h4>Fix #4: Update BIOS/Firmware</h4>
<pre><code># Check current version
sudo dmidecode -s bios-version
# Current: v1.15.0 (08/06/2025)
# Check for updates
sudo fwupdmgr get-updates
sudo fwupdmgr update
# Or download from Dell Support</code></pre>
<h4>Fix #5: Disable Problematic Wake Sources</h4>
<pre><code># View current wake sources
cat /proc/acpi/wakeup
# XHCI, RP01, RP05, RP07, RP08, RP09, RP12 are enabled (8 total)
# Toggle problematic devices (temporary - resets on reboot)
sudo sh -c 'echo XHCI > /proc/acpi/wakeup'
# For permanent fix, create systemd service:</code></pre>
<pre><code>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</code></pre>
</section>
<!-- Testing -->
<section>
<h2><span class="badge fix">Verify</span>Testing Procedure</h2>
<h3>Test After Each Fix</h3>
<ol>
<li><strong>Manual Suspend:</strong> <code>systemctl suspend</code> — System should sleep and wake properly</li>
<li><strong>Lid Close Test:</strong> Close lid physically — Should sleep and wake on lid open</li>
<li><strong>Automated Test:</strong> Run 5 suspend/resume cycles to verify reliability</li>
</ol>
<h3>Verification Commands</h3>
<pre><code># After applying fixes, verify configuration:
# 1. Check sleep state (should show [deep])
cat /sys/power/mem_sleep
# 2. Verify kernel parameters
cat /proc/cmdline | grep -E "mem_sleep_default|acpi_backlight"
# 3. Check NVIDIA services status
systemctl status nvidia-suspend.service nvidia-resume.service
# 4. Verify nvidiafb not loaded
lsmod | grep -q nvidiafb && echo "FAIL" || echo "PASS"</code></pre>
</section>
<!-- Next Steps -->
<section>
<h2><span class="badge system">Action</span>Next Steps</h2>
<ol class="action-list">
<li class="critical">
<div class="icon">1</div>
<div class="content">
<div class="title">Force S3 Deep Sleep</div>
<div class="desc">Test with <code>echo deep | sudo tee /sys/power/mem_sleep</code>, then make permanent via bootloader</div>
</div>
</li>
<li class="high">
<div class="icon">2</div>
<div class="content">
<div class="title">Blacklist nvidiafb</div>
<div class="desc">Create <code>/etc/modprobe.d/blacklist-nvidiafb.conf</code> and run <code>sudo mkinitcpio -P</code></div>
</div>
</li>
<li class="medium">
<div class="icon">3</div>
<div class="content">
<div class="title">Add kernel parameters</div>
<div class="desc">Edit bootloader config to add <code>mem_sleep_default=deep acpi_backlight=vendor acpi_enforce_resources=lax</code></div>
</div>
</li>
<li class="medium">
<div class="icon">4</div>
<div class="content">
<div class="title">Check for BIOS update</div>
<div class="desc">Run <code>sudo fwupdmgr get-updates</code> and compare with Dell support site</div>
</div>
</li>
<li class="low">
<div class="icon">5</div>
<div class="content">
<div class="title">Disable wake sources</div>
<div class="desc">Create systemd service to toggle XHCI, RP01, RP05 on suspend</div>
</div>
</li>
</ol>
<div class="callout success">
<h4>✅ Expected Outcome</h4>
<p>After applying these fixes, your system should properly enter and exit sleep mode without black screen issues. The s2idle→S3 transition is the most critical change, as Modern Standby is known to be incompatible with NVIDIA hybrid GPU configurations on Linux.</p>
</div>
</section>
<!-- References -->
<section>
<h2><span class="badge research">Learn</span>Reference Documents</h2>
<table>
<tr>
<th>Document</th>
<th>Location</th>
<th>Description</th>
</tr>
<tr>
<td><code>Sleep-Fix-Guide.md</code></td>
<td><code>docs/research/</code></td>
<td>Step-by-step implementation guide with verification commands</td>
</tr>
<tr>
<td><code>Alienware-M16a2-*.md</code></td>
<td><code>docs/research/</code></td>
<td>Comprehensive root cause research and community reports</td>
</tr>
<tr>
<td><code>diagnose-sleep-wake.sh</code></td>
<td><code>scripts/</code></td>
<td>Diagnostic script for collecting system state</td>
</tr>
<tr>
<td><code>linux-power-management/index.md</code></td>
<td><code>docs/tools/</code></td>
<td>Configuration reference for power management tools</td>
</tr>
</table>
</section>
</div>
<footer>
<p>Generated by pi agent coordination system • Using frank-default-small model</p>
<p>Reference: <a href="docs/research/Sleep-Fix-Guide.md">Sleep-Fix-Guide.md</a> • <a href="docs/research/Alienware-M16a2-Linux-sleep-wake-issues.md">Research</a></p>
</footer>
</body>
</html>