docs: rebuild KB in OKF v0.1 with live-verified facts
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.
This commit is contained in:
@@ -0,0 +1,830 @@
|
||||
<!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 dankware kernel: NVRM: RmHandleDNotifierEvent: Failed to handle ACPI D-Notifier event, status=0x11
|
||||
Jul 22 19:43:43 dankware kernel: spd5118 18-0050: PM: dpm_run_callback(): spd5118_resume [spd5118] returns -6
|
||||
Jul 22 19:43:43 dankware 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 dankware 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>
|
||||
Reference in New Issue
Block a user