---
updatedAt: 2026-09-16T21:53:45.000Z
agentTools:
  projectIndex: https://docs.sixfab.com/llms.txt
---

# Troubleshooting

<HTMLBlock>{`
<style>
/* ════════════════════════════════════════════════════════════════════════
   ALPON X5 AI — Troubleshooting
   Built on Sixfab Documentation Design Language v4.0
   Tier 1 (Sixfab Teal) default · Tier 3 (ALPON Gradient) for product header
   Tier 3 (AI Iris) reserved for AI runtime issues only · Two-Purples Rule
   ════════════════════════════════════════════════════════════════════════ */

/* === FONTS ============================================================== */
@font-face { font-family:'Gilroy'; src:url('https://sixfab.com/wp-content/fonts/Gilroy-Regular.woff2')   format('woff2'); font-weight:400; font-display:swap; }
@font-face { font-family:'Gilroy'; src:url('https://sixfab.com/wp-content/fonts/Gilroy-Medium.woff2')    format('woff2'); font-weight:500; font-display:swap; }
@font-face { font-family:'Gilroy'; src:url('https://sixfab.com/wp-content/fonts/Gilroy-SemiBold.woff2')  format('woff2'); font-weight:600; font-display:swap; }
@font-face { font-family:'Gilroy'; src:url('https://sixfab.com/wp-content/fonts/Gilroy-Bold.woff2')      format('woff2'); font-weight:700; font-display:swap; }
@font-face { font-family:'Gilroy'; src:url('https://sixfab.com/wp-content/fonts/Gilroy-ExtraBold.woff2') format('woff2'); font-weight:800; font-display:swap; }
@font-face { font-family:'JetBrains Mono'; src:url('https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono@2.304/fonts/webfonts/JetBrainsMono-Regular.woff2') format('woff2'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'JetBrains Mono'; src:url('https://cdn.jsdelivr.net/gh/JetBrains/JetBrainsMono@2.304/fonts/webfonts/JetBrainsMono-Medium.woff2') format('woff2'); font-weight:500; font-style:normal; font-display:swap; }

/* === DESIGN TOKENS — TIER 1-5 (light) ================================== */
.sf-doc {
  /* Tier 1 — Core Brand */
  --primary:       #034860;
  --secondary:     #00E0B8;
  --tertiary:      #1B2D45;
  --neutral:       #E8F5F0;

  /* Tier 2 — Neutral & Interface */
  --white:         #FFFFFF;
  --light:         #F6F8F9;
  --line:          #DDE6EC;
  --slate-light:   #94A8B5;
  --slate:         #52667A;
  --deep-ink:      #10202E;

  /* Tier 3 — AI / Product Accent */
  --ai-iris:       #6B47F0;
  --ai-mist:       #F0EDFF;
  --alpon-purple:  #4F008E;
  --alpon-cyan:    #00A6C8;

  /* Tier 4 — Campaign / Event (not used here) */
  --ember:         #FF6B35;

  /* Tier 5 — Semantic / Status */
  --success:       #00B894;
  --warning:       #F59E0B;
  --danger:        #DC2626;
  --info:          #429CBF;
  --success-text:  #047857;
  --warning-text:  #92400E;
  --danger-text:   #B91C1C;
  --info-text:     #0E4A66;
  --success-bg:    #E0F5EE;
  --warning-bg:    #FDF1DC;
  --danger-bg:     #FBE5E5;
  --info-bg:       #DCEFF7;

  /* On-colors */
  --on-primary:    #FFFFFF;
  --on-secondary:  #1B2D45;

  /* Spacing (4px base) */
  --xs: 4px;  --sm: 8px;  --md: 16px;  --lg: 24px;
  --xl: 32px; --2xl: 48px; --3xl: 64px;

  /* Radius */
  --r-sm: 4px;  --r-md: 6px;  --r-lg: 8px;
  --r-xl: 12px; --r-2xl: 16px; --r-full: 9999px;

  /* Gradients */
  --grad-alpon: linear-gradient(135deg, var(--alpon-purple) 0%, var(--alpon-cyan) 100%);

  /* Fonts */
  --font-sans: 'Gilroy', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace;

  /* Shadows */
  --shadow-sm: 0 1px 2px rgba(10, 23, 33, 0.04);
  --shadow-md: 0 4px 12px rgba(10, 23, 33, 0.06);

  font-family: var(--font-sans);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--deep-ink);
  -webkit-font-smoothing: antialiased;
}
.sf-doc * { box-sizing: border-box; }

/* === BASE TYPOGRAPHY — aligned with FAQ / design language §4.4 ========= */
.sf-doc h1 {
  font-size: 2.25rem;
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.15;
  color: var(--deep-ink);
  margin: 0 0 14px;
}
/* H2 — section heading, FAQ category-band scale (calmer, more readable
   than 2.25rem hero h2 — better fit for a long diagnostic page) */
.sf-doc h2 {
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
  color: var(--deep-ink);
  margin: 56px 0 18px;
  padding: 0 0 14px;
  border-bottom: 1px solid var(--line);
  display: flex; align-items: center; gap: 12px;
  scroll-margin-top: 16px;
}
.sf-doc h2:first-of-type { margin-top: 8px; }
.sf-doc h2 .sf-h2-icon {
  width: 32px; height: 32px;
  border-radius: var(--r-md);
  background: var(--light);
  color: var(--primary);
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.sf-doc h2 .sf-h2-icon svg { width: 18px; height: 18px; }
.sf-doc h3 {
  font-size: 1.125rem;
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.35;
  color: var(--deep-ink);
  margin: 28px 0 10px;
}
.sf-doc h4 {
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.4;
  color: var(--deep-ink);
  margin: 20px 0 8px;
}
.sf-doc p {
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.6;
  color: var(--deep-ink);
  margin: 0 0 16px;
}
.sf-doc a {
  color: var(--primary);
  text-decoration: none;
  font-weight: 600;
  transition: color .15s, opacity .15s;
}
.sf-doc a:hover { color: var(--deep-ink); text-decoration: underline; }
.sf-doc ul, .sf-doc ol { padding-left: 24px; margin: 8px 0 16px; }
.sf-doc li {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--deep-ink);
  margin-bottom: 6px;
}
.sf-doc ul li::marker { color: var(--primary); }
.sf-doc ol li::marker { color: var(--primary); font-weight: 700; }
.sf-doc strong { color: var(--deep-ink); font-weight: 700; }
.sf-doc code {
  font-family: var(--font-mono);
  font-size: 0.875rem;
  background: var(--light);
  color: var(--primary);
  padding: 1px 5px;
  border-radius: var(--r-sm);
  border: 0;
}
.sf-doc hr { border: 0; height: 1px; background: var(--line); margin: 48px 0; }

/* === EYEBROW — §4.3 ==================================================== */
.sf-eyebrow {
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--primary);
  display: block;
  margin-bottom: 12px;
}

/* === HERO — §6.5, compact single-column (System Monitoring / AI HAT+ pattern)
   Default Tier 1 surface: --light background, deep-ink type.
   No gradient (gradient hero is reserved per §3.4 governance). */
.sf-hero {
  padding: 32px;
  margin: 0 0 24px;
  background: var(--light);
  border: 1px solid var(--line);
  border-radius: var(--r-2xl);
}
.sf-hero__copy { min-width: 0; }
.sf-doc .sf-hero__title {
  font-family: var(--font-sans);
  font-size: 2.5rem; font-weight: 800;
  letter-spacing: -0.03em; line-height: 1.08;
  color: var(--deep-ink);
  margin: 0 0 14px;
}
.sf-doc .sf-hero__lead {
  font-size: 1.0625rem; line-height: 1.6;
  color: var(--deep-ink); margin: 0 0 18px;
}
.sf-hero__lead code { background: var(--white); }
.sf-hero__chips { display: flex; flex-wrap: wrap; gap: 6px; }

@media (max-width: 820px) {
  .sf-hero { padding: 24px; }
  .sf-doc .sf-hero__title { font-size: 1.875rem; }
  .sf-doc .sf-hero__lead { font-size: 1rem; }
}

/* === PILL — §6.2 factual chip (used inside hero) */
.sf-pill {
  display: inline-flex; align-items: center; gap: 4px;
  font-family: var(--font-sans);
  font-size: 0.75rem; font-weight: 600;
  padding: 3px 8px;
  border-radius: var(--r-sm);
  background: var(--white);
  color: var(--deep-ink);
  border: 1px solid var(--line);
  white-space: nowrap;
  line-height: 1.4;
}

/* === META BAR — §6.6, Quickstart / System Monitoring / AI HAT+ pattern */
.sf-meta {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: 8px;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: var(--slate);
  margin: 0 0 24px;
}
.sf-meta__badge {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 0.75rem;
  padding: 3px 8px;
  border-radius: var(--r-sm);
  background: var(--light);
  color: var(--primary);
  border: 1px solid var(--line);
}
.sf-meta__badge--mint {
  background: var(--neutral); color: var(--primary); border-color: var(--neutral);
}
.sf-meta__sep { color: var(--line); }

/* === LEAD — full container width (override any inherited max-width) ==== */
.sf-lead {
  font-size: 1.125rem;
  font-weight: 400;
  line-height: 1.6;
  color: var(--deep-ink);
  margin: 0 0 28px;
  max-width: none !important;
  width: auto;
}

/* === AEO BLOCK — §6.1
   Default Tier 1 (Sixfab Teal) — body, navigation, structural pages.
   --ai variant (Tier 3, AI Iris) — pages where the page subject IS
   the NPU / runtime / model itself. Troubleshooting opens onto the
   NPU layer (dxtop, /dev/dxrt0, journalctl), so the AEO block uses
   --ai for visual harmony with System Monitoring and the X5 AI Quickstart. */
.sf-aeo {
  position: relative;
  background: var(--light);
  border: 1px solid var(--line);
  border-left: 4px solid var(--primary);
  border-radius: var(--r-md);
  padding: 24px 32px;
  margin: 0 0 32px;
}
.sf-aeo--ai {
  background: var(--ai-mist);
  border-color: rgba(107,71,240,0.20);
  border-left-color: var(--ai-iris);
}
/* The question itself is the heading — readable display type, larger than
   the answer paragraph below it (System Monitoring / AI HAT+ pattern). */
.sf-aeo__label {
  display: block;
  font-family: var(--font-sans);
  font-size: 1.375rem; font-weight: 700;
  line-height: 1.25; letter-spacing: -0.015em;
  text-transform: none;
  color: var(--primary);
  margin: 0 0 8px;
}
.sf-aeo--ai .sf-aeo__label { color: var(--ai-iris); }
.sf-aeo__text {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--deep-ink);
  margin: 0;
}
.sf-aeo__text strong { color: var(--primary); font-weight: 600; }
.sf-aeo--ai .sf-aeo__text strong { color: var(--ai-iris); }

/* === CALLOUT (Tier 5 + Tier 3 AI variant) ============================== */
.sf-callout {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border-radius: var(--r-md);
  padding: 14px 18px;
  margin: 18px 0;
  border-left: 4px solid;
}
.sf-callout__header {
  display: flex; align-items: center; gap: 10px;
  font-size: 0.9375rem; font-weight: 700; line-height: 1.2;
}
.sf-callout__header svg { flex-shrink: 0; }
.sf-callout__content { font-size: 1rem; line-height: 1.6; color: var(--deep-ink); }
.sf-callout__content p { margin: 0 0 8px; font-size: 1rem; color: inherit; }
.sf-callout__content p:last-child { margin-bottom: 0; }
.sf-callout__content code { background: rgba(0, 0, 0, 0.06); }

.sf-callout--info     { background: var(--info-bg);    border-left-color: var(--info); }
.sf-callout--info     .sf-callout__header { color: var(--info-text); }
.sf-callout--success  { background: var(--success-bg); border-left-color: var(--success); }
.sf-callout--success  .sf-callout__header { color: var(--success-text); }
.sf-callout--warning  { background: var(--warning-bg); border-left-color: var(--warning); }
.sf-callout--warning  .sf-callout__header { color: var(--warning-text); }
.sf-callout--danger   { background: var(--danger-bg);  border-left-color: var(--danger); }
.sf-callout--danger   .sf-callout__header { color: var(--danger-text); }
/* Tier 3 — AI feature note ONLY when the note concerns NPU / dxrt / DXNN */
.sf-callout--ai       { background: var(--ai-mist);    border-left-color: var(--ai-iris); }
.sf-callout--ai       .sf-callout__header { color: var(--ai-iris); }

/* === ISSUE CARD (AI HAT+ accordion pattern) ============================
   §6.19 — collapsed-by-default <details> accordion.
   Summary is a single 56px row with category dot · pill · title · chevron.
   All issues sit inside one sf-issue-group shell so borders collapse
   between siblings and the block reads as one coherent component.
   ======================================================================== */
.sf-issue-group {
  border: 1px solid var(--line);
  border-radius: var(--r-xl);
  overflow: hidden;
  background: var(--white);
  box-shadow: var(--shadow-sm);
  margin: 16px 0 32px;
}
[data-color-mode="dark"] .sf-doc .sf-issue-group { background: rgba(255,255,255,0.03); border-color: var(--line); }

.sf-issue {
  position: relative;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: transparent;
  margin: 0;
}
.sf-issue:last-child { border-bottom: 0; }
.sf-issue::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--primary);
  opacity: 0;
  transition: opacity .15s ease;
  pointer-events: none;
}
.sf-issue[open]::before,
.sf-issue:hover::before { opacity: 1; }

/* Summary row — always visible. Specificity-bumped to beat ReadMe globals. */
.sf-doc details.sf-issue > summary.sf-issue__head,
.sf-issue > summary.sf-issue__head,
.sf-issue__head {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  gap: 14px !important;
  padding: 14px 24px 14px 30px;
  cursor: pointer;
  user-select: none;
  list-style: none !important;
  transition: background .15s ease;
  outline: 0;
}
.sf-doc details.sf-issue > summary.sf-issue__head > .sf-issue__dot,
.sf-issue > summary.sf-issue__head > .sf-issue__dot {
  flex: 0 0 10px !important;
  display: block !important;
  align-self: center !important;
}
.sf-doc details.sf-issue > summary.sf-issue__head > .sf-issue__cat,
.sf-issue > summary.sf-issue__head > .sf-issue__cat {
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  align-self: center !important;
}
.sf-doc details.sf-issue > summary.sf-issue__head > .sf-issue__title,
.sf-issue > summary.sf-issue__head > .sf-issue__title {
  flex: 1 1 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  align-self: center !important;
  height: 24px !important;
  margin: 0 !important;
  padding: 0 !important;
}
.sf-doc details.sf-issue > summary.sf-issue__head > .sf-issue__chev,
.sf-issue > summary.sf-issue__head > .sf-issue__chev {
  flex: 0 0 20px !important;
  display: block !important;
  align-self: center !important;
}
.sf-issue__head::-webkit-details-marker { display: none !important; }
.sf-issue__head::marker { content: '' !important; display: none !important; }
.sf-issue:hover .sf-issue__head { background: var(--light); }
.sf-issue[open] .sf-issue__head { background: var(--light); border-bottom: 1px solid var(--line); }
[data-color-mode="dark"] .sf-doc .sf-issue:hover .sf-issue__head,
[data-color-mode="dark"] .sf-doc .sf-issue[open] .sf-issue__head { background: rgba(255,255,255,0.04); }
.sf-issue__head:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: -2px;
}

/* Category dot — first visual signal */
.sf-issue__dot {
  width: 10px; height: 10px;
  border-radius: var(--r-full);
  background: var(--primary);
  flex-shrink: 0;
}

/* Category pill — secondary signal, machine-readable */
.sf-issue__cat {
  font-family: var(--font-mono);
  font-size: 0.6875rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase;
  padding: 5px 10px !important;
  border-radius: var(--r-sm);
  white-space: nowrap;
  line-height: 1 !important;
  background: var(--light);
  color: var(--slate);
  display: inline-flex !important;
  align-items: center !important;
  height: 24px !important;
  border: 0;
}

/* Title — typography only */
.sf-issue__title {
  font-family: var(--font-sans);
  font-size: 0.9375rem !important;
  font-weight: 600;
  letter-spacing: -0.005em;
  line-height: 1 !important;
  color: var(--deep-ink);
  min-width: 0;
  white-space: nowrap;
  transition: color .15s ease;
}
.sf-issue[open] .sf-issue__title { font-weight: 700; color: var(--primary); }
.sf-issue__title code {
  font-size: 0.8125rem;
  vertical-align: baseline;
  padding: 1px 6px;
  white-space: nowrap;
  line-height: 1;
}

/* Chevron — rotates on open */
.sf-issue__chev {
  width: 20px; height: 20px;
  color: var(--slate);
  flex-shrink: 0;
  transition: transform .2s ease, color .15s ease;
}
.sf-issue[open] .sf-issue__chev {
  transform: rotate(180deg);
  color: var(--primary);
}

/* Body — only rendered while [open] */
.sf-issue__body {
  padding: 24px 24px 32px 30px;
  background: var(--white);
}
[data-color-mode="dark"] .sf-doc .sf-issue__body { background: transparent; }

/* H4 inside body — Symptom / Cause / Fix beats */
.sf-issue__body h4 {
  font-family: var(--font-sans);
  font-size: 0.75rem; font-weight: 800;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--slate);
  margin: 24px 0 10px;
  display: flex; align-items: center; gap: 10px;
  line-height: 1;
}
.sf-issue__body h4:first-child { margin-top: 0; }
.sf-issue__body h4::before {
  content: '';
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: var(--r-full);
  background: var(--primary);
  flex-shrink: 0;
}
.sf-issue__body p {
  font-size: 0.9375rem;
  line-height: 1.65;
  color: var(--deep-ink);
}
.sf-issue__body ol,
.sf-issue__body ul {
  margin: 8px 0 12px;
  padding-left: 22px;
}
.sf-issue__body ol li,
.sf-issue__body ul li {
  font-size: 0.9375rem;
  line-height: 1.65;
  margin-bottom: 8px;
}
.sf-issue__body ol li:last-child,
.sf-issue__body ul li:last-child { margin-bottom: 0; }
.sf-issue__body > .sf-callout:last-child { margin-bottom: 0; }
.sf-issue__body .sf-terminal { margin: 10px 0 14px; }

/* Category modifiers */
.sf-issue--ai::before        { background: var(--ai-iris); }
.sf-issue--ai .sf-issue__dot { background: var(--ai-iris); }
.sf-issue--ai .sf-issue__cat { color: var(--ai-iris); background: var(--ai-mist); }
.sf-issue--ai[open] .sf-issue__title { color: var(--ai-iris); }
.sf-issue--ai[open] .sf-issue__chev  { color: var(--ai-iris); }
.sf-issue--ai .sf-issue__body h4::before { background: var(--ai-iris); }

.sf-issue--sw::before        { background: var(--info); }
.sf-issue--sw .sf-issue__dot { background: var(--info); }
.sf-issue--sw .sf-issue__cat { color: var(--info-text); background: var(--info-bg); }
.sf-issue--sw[open] .sf-issue__title { color: var(--info-text); }
.sf-issue--sw[open] .sf-issue__chev  { color: var(--info); }
.sf-issue--sw .sf-issue__body h4::before { background: var(--info); }

.sf-issue--hw::before        { background: var(--warning); }
.sf-issue--hw .sf-issue__dot { background: var(--warning); }
.sf-issue--hw .sf-issue__cat { color: var(--warning-text); background: var(--warning-bg); }
.sf-issue--hw[open] .sf-issue__title { color: var(--warning-text); }
.sf-issue--hw[open] .sf-issue__chev  { color: var(--warning); }
.sf-issue--hw .sf-issue__body h4::before { background: var(--warning); }

.sf-issue--info::before        { background: var(--info); }
.sf-issue--info .sf-issue__dot { background: var(--info); }
.sf-issue--info .sf-issue__cat { color: var(--info-text); background: var(--info-bg); }
.sf-issue--info[open] .sf-issue__title { color: var(--info-text); }
.sf-issue--info[open] .sf-issue__chev  { color: var(--info); }
.sf-issue--info .sf-issue__body h4::before { background: var(--info); }

.sf-issue--pwr::before        { background: var(--danger); }
.sf-issue--pwr .sf-issue__dot { background: var(--danger); }
.sf-issue--pwr .sf-issue__cat { color: var(--danger-text); background: var(--danger-bg); }
.sf-issue--pwr[open] .sf-issue__title { color: var(--danger-text); }
.sf-issue--pwr[open] .sf-issue__chev  { color: var(--danger); }
.sf-issue--pwr .sf-issue__body h4::before { background: var(--danger); }

/* Dark mode category pills */
[data-color-mode="dark"] .sf-doc .sf-issue--ai   .sf-issue__cat { color: #B49AFF; background: rgba(107,71,240,0.14); }
[data-color-mode="dark"] .sf-doc .sf-issue--sw   .sf-issue__cat { color: #79C0FF; background: rgba(66,156,191,0.14); }
[data-color-mode="dark"] .sf-doc .sf-issue--hw   .sf-issue__cat { color: #FFCB66; background: rgba(245,158,11,0.14); }
[data-color-mode="dark"] .sf-doc .sf-issue--info .sf-issue__cat { color: #79C0FF; background: rgba(66,156,191,0.14); }
[data-color-mode="dark"] .sf-doc .sf-issue--pwr  .sf-issue__cat { color: #FF8888; background: rgba(220,38,38,0.14); }

@media (max-width: 600px) {
  .sf-doc details.sf-issue > summary.sf-issue__head,
  .sf-issue__head {
    gap: 10px !important;
    padding: 12px 16px 12px 22px;
  }
  .sf-doc details.sf-issue > summary.sf-issue__head > .sf-issue__cat,
  .sf-issue__head .sf-issue__cat { display: none !important; }
  .sf-issue__title { font-size: 0.9375rem; white-space: normal; }
  .sf-issue__title code { font-size: 0.75rem; white-space: normal; }
  .sf-issue__body { padding: 16px 16px 24px 22px; }
}

/* === TERMINAL (always dark, theme-independent) ========================= */
.sf-terminal {
  --t-bg: #0d1117; --t-hd: #161b22; --t-bdc: #30363d; --t-tx: #e6edf3;
  --t-dm: #8b949e; --t-gn: #56d364; --t-bl: #79c0ff; --t-yl: #e3b341;
  --t-pp: #d2a8ff; --t-rd: #ff7b72;
  background: var(--t-bg) !important;
  border: 1px solid var(--t-bdc) !important;
  border-radius: var(--r-lg) !important;
  overflow: hidden;
  margin: 12px 0 16px;
  max-width: 100%;
}
.sf-terminal__head {
  display: flex; align-items: center; gap: 8px;
  padding: 9px 14px;
  background: var(--t-hd) !important;
  border-bottom: 1px solid var(--t-bdc) !important;
}
.sf-terminal__dot {
  width: 11px; height: 11px;
  border-radius: var(--r-full);
  display: inline-block;
}
.sf-terminal__title {
  margin-left: 6px;
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  color: var(--t-dm) !important;
  font-weight: 500;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.sf-terminal__lang {
  margin-left: auto;
  font-family: var(--font-sans);
  font-size: 0.6875rem;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: var(--r-sm);
  background: rgba(86,211,100,0.15);
  color: var(--t-gn) !important;
  border: 1px solid rgba(86,211,100,0.30);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.sf-terminal pre {
  margin: 0 !important;
  padding: 14px 16px !important;
  background: transparent !important;
  border: 0 !important;
  color: var(--t-tx) !important;
  font-family: var(--font-mono) !important;
  font-size: 0.8125rem !important;
  line-height: 1.7 !important;
  white-space: pre;
  overflow-x: auto;
  max-width: 100%;
}
.sf-terminal .t-dim { color: var(--t-dm) !important; }
.sf-terminal .t-cmd { color: var(--t-bl) !important; font-weight: 600; }
.sf-terminal .t-str { color: #a5d6ff !important; }
.sf-terminal .t-flag { color: var(--t-yl) !important; }
.sf-terminal .t-key { color: var(--t-rd) !important; }
.sf-terminal .t-num { color: var(--t-bl) !important; }
.sf-terminal .t-ok { color: var(--t-gn) !important; }
.sf-terminal .t-pp { color: var(--t-pp) !important; }

/* === LED LEGEND ======================================================== */
.sf-led-legend {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin: 14px 0 18px;
}
.sf-led-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 5px 12px;
  border-radius: var(--r-full);
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  background: var(--white);
  border: 1px solid var(--line);
  color: var(--deep-ink);
}
.sf-led-pill__dot {
  width: 10px; height: 10px;
  border-radius: var(--r-full);
  flex-shrink: 0;
}
.sf-led-pill--green .sf-led-pill__dot { background: var(--success); box-shadow: 0 0 8px rgba(0,184,148,0.55); }
.sf-led-pill--red   .sf-led-pill__dot { background: var(--danger);  box-shadow: 0 0 8px rgba(220,38,38,0.55); }
.sf-led-pill--blue  .sf-led-pill__dot { background: #3B82F6; box-shadow: 0 0 8px rgba(59,130,246,0.55); }
.sf-led-pill--yellow .sf-led-pill__dot { background: #F59E0B; box-shadow: 0 0 8px rgba(245,158,11,0.55); }
.sf-led-pill--off   .sf-led-pill__dot { background: var(--slate); }
.sf-led-pill--blink .sf-led-pill__dot { background: var(--success); animation: sfBlink 1.2s linear infinite; }
@keyframes sfBlink {
  0%, 49%   { opacity: 1; }
  50%, 100% { opacity: .25; }
}

/* === TABLE ============================================================= */
.sf-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--white);
  margin: 12px 0 18px;
}
.sf-table {
  display: table !important;
  width: 100% !important;
  max-width: none !important;
  table-layout: fixed !important;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 0.9375rem;
}
.sf-doc .sf-table thead { display: table-header-group !important; }
.sf-doc .sf-table tbody { display: table-row-group !important; }
.sf-doc .sf-table tr { display: table-row !important; }
.sf-doc .sf-table th, .sf-doc .sf-table td { display: table-cell !important; }
.sf-table th {
  padding: 12px 16px;
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--slate);
  background: var(--light);
  text-align: left;
  border-bottom: 1px solid var(--line);
}
.sf-table td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  font-size: 0.875rem;
  color: var(--deep-ink);
  vertical-align: top;
  line-height: 1.55;
}
.sf-table tr:last-child td { border-bottom: 0; }

/* === SPEC CARD — modern card layout (from alpon-x5-ai-specifications) ===
   Bordered card with optional head (icon + title) + body containing rows
   of key→value separated by dashed dividers. Used here for LED reference
   so the page stays visually aligned with the Specifications page.
   ======================================================================== */
.sf-spec-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 16px;
  margin: 0 0 24px;
}
.sf-spec-card {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--r-xl);
  padding: 20px 22px;
  display: flex; flex-direction: column;
  margin: 16px 0 24px;
  transition: border-color .15s;
}
.sf-spec-grid .sf-spec-card { margin: 0; }
.sf-spec-card:hover { border-color: var(--slate-light); }
.sf-spec-card__head {
  display: flex; align-items: center; gap: 10px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 14px;
}
.sf-spec-card__icon {
  width: 32px; height: 32px;
  border-radius: var(--r-md);
  background: var(--light); color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.sf-spec-card__icon svg { width: 18px; height: 18px; }
.sf-spec-card__title {
  font-size: 1rem; font-weight: 700;
  color: var(--primary);
  letter-spacing: -0.01em;
}
.sf-spec-card__body { display: flex; flex-direction: column; }
.sf-spec-row {
  display: grid;
  grid-template-columns: minmax(160px, 30%) 1fr;
  gap: 24px;
  align-items: baseline;
  padding: 11px 0;
  border-bottom: 1px dashed var(--line);
}
.sf-spec-row:first-child { padding-top: 4px; }
.sf-spec-row:last-child { border-bottom: 0; padding-bottom: 4px; }
.sf-spec-row__key {
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--deep-ink);
  line-height: 1.5;
  display: flex; align-items: center; gap: 10px;
}
.sf-spec-row__val {
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--deep-ink);
  line-height: 1.55;
  text-align: left;
  min-width: 0;
}
.sf-spec-row__val code { font-size: 0.875rem; }
[data-color-mode="dark"] .sf-doc .sf-spec-card { background: rgba(255,255,255,0.04); border-color: var(--line); }
[data-color-mode="dark"] .sf-doc .sf-spec-card:hover { border-color: var(--secondary); }
[data-color-mode="dark"] .sf-doc .sf-spec-card__head { border-bottom-color: var(--line); }
[data-color-mode="dark"] .sf-doc .sf-spec-card__icon { background: rgba(0, 224, 184, 0.10); color: var(--secondary); }
[data-color-mode="dark"] .sf-doc .sf-spec-card__title { color: var(--secondary); }
[data-color-mode="dark"] .sf-doc .sf-spec-row { border-bottom-color: var(--line); }
[data-color-mode="dark"] .sf-doc .sf-spec-row__key { color: #FFFFFF; }
[data-color-mode="dark"] .sf-doc .sf-spec-row__val { color: var(--deep-ink); }
[data-color-mode="dark"] .sf-doc .sf-spec-row__val code { background: rgba(255,255,255,0.06); color: var(--secondary); }
@media (max-width: 640px) {
  .sf-spec-row { grid-template-columns: 1fr; gap: 4px; }
  .sf-spec-row__key { padding-top: 0; margin-bottom: 4px; }
}

/* === PRE-SUPPORT CHECKLIST — AI Iris accented compact rows =============
   Single-column vertical list. Each row:
     [AI Iris border-left]  [AI Iris num circle]  Title · Cmd chip (right)
                                                  Description (muted, below)
   Chip color carries the check type:
     · Dark terminal chip  → command (something to run)
     · AI Mist chip        → visual (something to observe)
   No more redundant "Command/Visual" pill — the chip IS the signal.
   Heavy .sf-doc scoping + !important on layout primitives because
   ReadMe's global stylesheet overrides plain display declarations.
   ====================================================================== */
.sf-doc .sf-checklist {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  margin: 20px 0 24px !important;
  padding: 0 !important;
  list-style: none !important;
}
.sf-doc .sf-check {
  display: flex !important;
  flex-direction: row !important;
  align-items: flex-start !important;
  gap: 14px !important;
  padding: 14px 18px !important;
  background: var(--white) !important;
  border: 1px solid var(--line) !important;
  border-left: 3px solid var(--ai-iris) !important;
  border-radius: var(--r-lg) !important;
  margin: 0 !important;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.sf-doc .sf-check:hover {
  border-color: var(--ai-iris) !important;
  box-shadow: 0 2px 10px rgba(107,71,240,0.08) !important;
  transform: translateY(-1px);
}
[data-color-mode="dark"] .sf-doc .sf-check { background: rgba(255,255,255,0.04) !important; border-color: var(--line) !important; border-left-color: var(--ai-iris) !important; }
[data-color-mode="dark"] .sf-doc .sf-check:hover { border-color: var(--ai-iris) !important; box-shadow: 0 2px 10px rgba(107,71,240,0.20) !important; }

.sf-doc .sf-check__num {
  flex: 0 0 32px !important;
  width: 32px !important;
  height: 32px !important;
  border-radius: var(--r-full) !important;
  background: var(--ai-iris) !important;
  color: #FFFFFF !important;
  font-family: var(--font-mono) !important;
  font-size: 0.75rem !important;
  font-weight: 700 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  letter-spacing: 0.02em !important;
  margin: 0 !important;
  padding: 0 !important;
}

.sf-doc .sf-check__body {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  margin: 0 !important;
  padding: 2px 0 0 !important;
}
.sf-doc .sf-check__row {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px 16px !important;
  margin: 0 !important;
  padding: 0 !important;
}
.sf-doc .sf-check__title {
  font-family: var(--font-sans) !important;
  font-size: 0.9375rem !important;
  font-weight: 700 !important;
  color: var(--deep-ink) !important;
  letter-spacing: -0.005em !important;
  line-height: 1.3 !important;
  margin: 0 !important;
  padding: 0 !important;
}
[data-color-mode="dark"] .sf-doc .sf-check__title { color: var(--deep-ink) !important; }

.sf-doc .sf-check__desc {
  font-size: 0.8125rem !important;
  line-height: 1.5 !important;
  color: var(--slate) !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: left !important;
  hyphens: manual !important;
}
[data-color-mode="dark"] .sf-doc .sf-check__desc { color: var(--slate) !important; }

/* Command chip — dark terminal with AI Iris prompt character */
.sf-doc .sf-check__cmd {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  font-family: var(--font-mono) !important;
  font-size: 0.75rem !important;
  font-weight: 500 !important;
  padding: 5px 10px !important;
  background: #0d1117 !important;
  color: #e6edf3 !important;
  border: 1px solid #30363d !important;
  border-radius: var(--r-md) !important;
  margin: 0 !important;
  line-height: 1.4 !important;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
  overflow: hidden !important;
}

/* Visual hint chip — AI Mist surface, AI Iris ink */
.sf-doc .sf-check__cmd--hint {
  background: var(--ai-mist) !important;
  color: #5B3AD6 !important;
  border-color: rgba(107,71,240,0.22) !important;
  font-weight: 600 !important;
  white-space: normal !important;
}
[data-color-mode="dark"] .sf-doc .sf-check__cmd--hint {
  background: rgba(107,71,240,0.18) !important;
  color: #B299FF !important;
  border-color: rgba(107,71,240,0.32) !important;
}

/* Prompt character ($ for command, → for visual) */
.sf-doc .sf-check__cmd-prompt {
  color: #B299FF !important;
  font-weight: 700 !important;
  flex-shrink: 0 !important;
}
.sf-doc .sf-check__cmd--hint .sf-check__cmd-prompt { color: #5B3AD6 !important; }
[data-color-mode="dark"] .sf-doc .sf-check__cmd--hint .sf-check__cmd-prompt { color: #B299FF !important; }

@media (max-width: 600px) {
  .sf-doc .sf-check { padding: 12px 14px !important; gap: 12px !important; }
  .sf-doc .sf-check__num { flex-basis: 28px !important; width: 28px !important; height: 28px !important; font-size: 0.6875rem !important; }
  .sf-doc .sf-check__title { font-size: 0.875rem !important; }
  .sf-doc .sf-check__desc { font-size: 0.75rem !important; }
  .sf-doc .sf-check__cmd { font-size: 0.6875rem !important; padding: 4px 8px !important; }
}

/* === CTA CARD (AI HAT+ pattern) — page-end dual-action layout =========
   Left-side context block + two action tiles on the right. No washed
   background; tile borders carry visual weight. Each action tile is a
   self-contained interactive surface with icon + label + helper + arrow.
   ====================================================================== */
.sf-cta-card {
  margin-top: 24px;
  padding: 0;
  background: transparent;
  border: 0;
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(260px, 1fr);
  gap: 16px;
  align-items: stretch;
}
.sf-cta-card__copy {
  min-width: 0;
  padding: 24px;
  background: var(--light);
  border: 1px solid var(--line);
  border-left: 3px solid var(--primary);
  border-radius: var(--r-lg);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
[data-color-mode="dark"] .sf-doc .sf-cta-card__copy { background: rgba(255,255,255,0.04); }
.sf-cta-card__eyebrow {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.6875rem; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--primary);
  margin-bottom: 8px;
}
.sf-cta-card__title {
  font-family: var(--font-sans);
  font-size: 1.0625rem; font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--deep-ink);
  margin: 0 0 6px;
  line-height: 1.3;
}
.sf-cta-card__lead {
  font-size: 0.875rem;
  color: var(--slate);
  margin: 0;
  line-height: 1.55;
  text-align: left;
  hyphens: manual;
}
.sf-cta-card__lead code {
  font-size: 0.75rem;
}

.sf-cta-card__actions {
  display: grid;
  grid-template-rows: 1fr 1fr;
  gap: 8px;
  min-width: 0;
}

.sf-cta-action {
  display: grid !important;
  grid-template-columns: 40px 1fr auto;
  gap: 14px;
  align-items: center;
  padding: 14px 18px !important;
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  text-decoration: none !important;
  color: var(--deep-ink) !important;
  transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
  min-width: 0;
}
[data-color-mode="dark"] .sf-doc .sf-cta-action { background: rgba(255,255,255,0.04); }
.sf-cta-action:hover {
  border-color: var(--primary);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
  text-decoration: none !important;
}
.sf-cta-action__icon {
  width: 40px; height: 40px;
  border-radius: var(--r-md);
  background: var(--neutral);
  color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.sf-cta-action__icon svg { width: 20px; height: 20px; }
[data-color-mode="dark"] .sf-doc .sf-cta-action__icon { background: rgba(0,224,184,0.14); color: var(--secondary); }
.sf-cta-action__body { min-width: 0; }
.sf-cta-action__label {
  font-family: var(--font-sans);
  font-size: 0.9375rem; font-weight: 700;
  letter-spacing: -0.005em;
  line-height: 1.3;
  color: var(--deep-ink);
  margin: 0 0 2px;
  display: block;
}
.sf-cta-action__hint {
  font-size: 0.75rem;
  color: var(--slate);
  line-height: 1.4;
  display: block;
}
.sf-cta-action__arrow {
  width: 18px; height: 18px;
  color: var(--slate);
  flex-shrink: 0;
  transition: transform .15s ease, color .15s ease;
}
.sf-cta-action:hover .sf-cta-action__arrow {
  transform: translateX(2px);
  color: var(--primary);
}

@media (max-width: 820px) {
  .sf-cta-card { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
  .sf-cta-action { grid-template-columns: 36px 1fr auto; padding: 12px 14px !important; gap: 12px; }
  .sf-cta-action__icon { width: 36px; height: 36px; }
  .sf-cta-action__icon svg { width: 18px; height: 18px; }
}

/* === DARK MODE ========================================================= */
[data-color-mode="dark"] .sf-doc {
  --primary:       #034860;
  --secondary:     #00E0B8;
  --tertiary:      #1B2D45;
  --neutral:       #1B2D45;
  --white:         #14222F;
  --light:         #14222F;
  --line:          #2A3A4D;
  --slate-light:   #94A8B5;
  --slate:         #B5C3CE;
  --deep-ink:      #E8F5F0;
  --success-bg:    #052E1B;
  --warning-bg:    #2A1F05;
  --danger-bg:     #2A0E0E;
  --info-bg:       #0A2E3F;
  --success-text:  #34D399;
  --warning-text:  #FBBF24;
  --danger-text:   #F87171;
  --info-text:     #5CD3EE;
  --ai-mist:       #1A1530;
}
[data-color-mode="dark"] .sf-doc h2 { color: var(--secondary); border-bottom-color: var(--line); }
[data-color-mode="dark"] .sf-doc h2 .sf-h2-icon { background: var(--tertiary); color: var(--secondary); }
[data-color-mode="dark"] .sf-doc a { color: var(--secondary); }
[data-color-mode="dark"] .sf-doc code { background: rgba(0, 224, 184, 0.08); color: var(--secondary); border-color: rgba(0, 224, 184, 0.18); }
[data-color-mode="dark"] .sf-doc strong { color: var(--deep-ink); }
[data-color-mode="dark"] .sf-aeo { background: rgba(0, 224, 184, 0.06); border-left-color: var(--secondary); }
[data-color-mode="dark"] .sf-aeo__label { color: var(--secondary); }
[data-color-mode="dark"] .sf-aeo__text strong { color: var(--secondary); }
[data-color-mode="dark"] .sf-doc .sf-aeo--ai { background: rgba(107,71,240,0.12); border-left-color: var(--ai-iris); }
[data-color-mode="dark"] .sf-doc .sf-aeo--ai .sf-aeo__label { color: #B299FF; }
[data-color-mode="dark"] .sf-doc .sf-aeo--ai .sf-aeo__text strong { color: #B299FF; }
[data-color-mode="dark"] .sf-callout--ai       .sf-callout__header { color: #B49AFF; }
[data-color-mode="dark"] .sf-table-wrap { background: var(--tertiary); border-color: var(--line); }
[data-color-mode="dark"] .sf-table th { background: rgba(255,255,255,0.03); color: var(--slate); border-bottom-color: var(--line); }
[data-color-mode="dark"] .sf-table td { color: var(--deep-ink); border-bottom-color: var(--line); }
[data-color-mode="dark"] .sf-led-pill { background: var(--tertiary); border-color: var(--line); color: var(--deep-ink); }
[data-color-mode="dark"] .sf-doc .sf-meta__badge { background: rgba(255,255,255,0.06); color: var(--secondary); border-color: var(--line); }
[data-color-mode="dark"] .sf-doc .sf-meta__badge--mint { background: rgba(0,224,184,0.14); color: var(--secondary); border-color: rgba(0,224,184,0.30); }
[data-color-mode="dark"] .sf-doc .sf-eyebrow,
[data-color-mode="dark"] .sf-doc .sf-cta-card__eyebrow { color: var(--secondary); }
[data-color-mode="dark"] .sf-doc .sf-issue--ai[open] .sf-issue__title,
[data-color-mode="dark"] .sf-doc .sf-issue--ai[open] .sf-issue__chev { color: #B59CFF; }

@media (prefers-color-scheme: dark) {
  html:not([data-color-mode="light"]) .sf-doc {
    --primary:       #034860;
    --secondary:     #00E0B8;
    --tertiary:      #1B2D45;
    --neutral:       #1B2D45;
    --white:         #14222F;
    --light:         #14222F;
    --line:          #2A3A4D;
    --slate-light:   #94A8B5;
    --slate:         #B5C3CE;
    --deep-ink:      #E8F5F0;
    --success-bg:    #052E1B;
    --warning-bg:    #2A1F05;
    --danger-bg:     #2A0E0E;
    --info-bg:       #0A2E3F;
    --success-text:  #34D399;
    --warning-text:  #FBBF24;
    --danger-text:   #F87171;
    --info-text:     #5CD3EE;
    --ai-mist:       #1A1530;
  }
  html:not([data-color-mode="light"]) .sf-doc h2 { color: var(--secondary); border-bottom-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-doc h2 .sf-h2-icon { background: var(--tertiary); color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc a { color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc code { background: rgba(0, 224, 184, 0.08); color: var(--secondary); border-color: rgba(0, 224, 184, 0.18); }
  html:not([data-color-mode="light"]) .sf-doc strong { color: var(--deep-ink); }
  html:not([data-color-mode="light"]) .sf-aeo { background: rgba(0, 224, 184, 0.06); border-left-color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-aeo__label,
  html:not([data-color-mode="light"]) .sf-aeo__text strong { color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc .sf-aeo--ai { background: rgba(107,71,240,0.12); border-left-color: var(--ai-iris); }
  html:not([data-color-mode="light"]) .sf-doc .sf-aeo--ai .sf-aeo__label { color: #B299FF; }
  html:not([data-color-mode="light"]) .sf-doc .sf-aeo--ai .sf-aeo__text strong { color: #B299FF; }
  html:not([data-color-mode="light"]) .sf-doc .sf-meta__badge { background: rgba(255,255,255,0.06); color: var(--secondary); border-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-doc .sf-meta__badge--mint { background: rgba(0,224,184,0.14); color: var(--secondary); border-color: rgba(0,224,184,0.30); }
  html:not([data-color-mode="light"]) .sf-callout--ai .sf-callout__header { color: #B49AFF; }
  html:not([data-color-mode="light"]) .sf-table-wrap { background: var(--tertiary); border-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-table th { background: rgba(255,255,255,0.03); color: var(--slate); border-bottom-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-table td { color: var(--deep-ink); border-bottom-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-led-pill { background: var(--tertiary); border-color: var(--line); color: var(--deep-ink); }
  html:not([data-color-mode="light"]) .sf-doc .sf-eyebrow,
  html:not([data-color-mode="light"]) .sf-doc .sf-cta-card__eyebrow { color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue--ai[open] .sf-issue__title,
  html:not([data-color-mode="light"]) .sf-doc .sf-issue--ai[open] .sf-issue__chev { color: #B59CFF; }
  /* Mirrors of the [data-color-mode="dark"] component rules declared beside their light rules above */
  html:not([data-color-mode="light"]) .sf-doc .sf-issue-group { background: rgba(255,255,255,0.03); border-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue:hover .sf-issue__head,
  html:not([data-color-mode="light"]) .sf-doc .sf-issue[open] .sf-issue__head { background: rgba(255,255,255,0.04); }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue__body { background: transparent; }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue--ai   .sf-issue__cat { color: #B49AFF; background: rgba(107,71,240,0.14); }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue--sw   .sf-issue__cat { color: #79C0FF; background: rgba(66,156,191,0.14); }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue--hw   .sf-issue__cat { color: #FFCB66; background: rgba(245,158,11,0.14); }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue--info .sf-issue__cat { color: #79C0FF; background: rgba(66,156,191,0.14); }
  html:not([data-color-mode="light"]) .sf-doc .sf-issue--pwr  .sf-issue__cat { color: #FF8888; background: rgba(220,38,38,0.14); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-card { background: rgba(255,255,255,0.04); border-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-card:hover { border-color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-card__head { border-bottom-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-card__icon { background: rgba(0, 224, 184, 0.10); color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-card__title { color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-row { border-bottom-color: var(--line); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-row__key { color: #FFFFFF; }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-row__val { color: var(--deep-ink); }
  html:not([data-color-mode="light"]) .sf-doc .sf-spec-row__val code { background: rgba(255,255,255,0.06); color: var(--secondary); }
  html:not([data-color-mode="light"]) .sf-doc .sf-check { background: rgba(255,255,255,0.04) !important; border-color: var(--line) !important; border-left-color: var(--ai-iris) !important; }
  html:not([data-color-mode="light"]) .sf-doc .sf-check:hover { border-color: var(--ai-iris) !important; box-shadow: 0 2px 10px rgba(107,71,240,0.20) !important; }
  html:not([data-color-mode="light"]) .sf-doc .sf-check__title { color: var(--deep-ink) !important; }
  html:not([data-color-mode="light"]) .sf-doc .sf-check__desc { color: var(--slate) !important; }
  html:not([data-color-mode="light"]) .sf-doc .sf-check__cmd--hint { background: rgba(107,71,240,0.18) !important; color: #B299FF !important; border-color: rgba(107,71,240,0.32) !important; }
  html:not([data-color-mode="light"]) .sf-doc .sf-check__cmd--hint .sf-check__cmd-prompt { color: #B299FF !important; }
  html:not([data-color-mode="light"]) .sf-doc .sf-cta-card__copy { background: rgba(255,255,255,0.04); }
  html:not([data-color-mode="light"]) .sf-doc .sf-cta-action { background: rgba(255,255,255,0.04); }
  html:not([data-color-mode="light"]) .sf-doc .sf-cta-action__icon { background: rgba(0,224,184,0.14); color: var(--secondary); }
}

/* === RESPONSIVE ======================================================== */
@media (max-width: 820px) {
  .sf-doc h1 { font-size: 2rem; }
  .sf-doc h2 { font-size: 1.375rem; margin-top: 44px; gap: 10px; padding-bottom: 12px; }
  .sf-doc h2 .sf-h2-icon svg { width: 16px; height: 16px; }
  .sf-doc h3 { font-size: 1.0625rem; }
  .sf-lead { font-size: 1rem; }
}
@media (max-width: 640px) {
  .sf-doc h1 { font-size: 1.75rem; }
  .sf-doc h2 { font-size: 1.25rem; padding-bottom: 10px; }
  .sf-terminal pre { font-size: 0.75rem !important; }
}

/* === RELATED GUIDES (§6.18) ============================================= */
.sf-doc .sf-related { margin: 56px 0 0; }
.sf-doc .sf-related h2 { margin-top: 0; }
.sf-doc .sf-related__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 16px;
}
.sf-doc .sf-related__card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  text-decoration: none !important;
  padding: var(--lg);
  /* Border drawn via inset box-shadow so it survives ReadMe's
     anchor border-bottom reset (sf-doc a { border-bottom:0 !important; }). */
  border: 0 !important;
  box-shadow: inset 0 0 0 1px var(--line);
  border-radius: var(--r-xl);
  background: var(--white);
  transition: box-shadow .15s, transform .15s;
}
.sf-doc .sf-related__card:hover {
  box-shadow: inset 0 0 0 1px var(--primary), 0 4px 14px rgba(3, 72, 96, 0.08);
  transform: translateY(-2px);
}
.sf-doc .sf-related__icon {
  width: 36px; height: 36px;
  border-radius: var(--r-md);
  background: var(--light);
  color: var(--primary);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 6px;
}
.sf-doc .sf-related__icon svg { width: 18px; height: 18px; }
.sf-doc .sf-related__title {
  font-family: var(--font-sans);
  font-size: 1rem;
  font-weight: 700;
  color: var(--deep-ink);
  letter-spacing: -0.005em;
}
.sf-doc .sf-related__desc {
  font-size: 0.8125rem;
  color: var(--slate);
  line-height: 1.55;
  font-weight: 500;
}
@media (max-width: 820px) {
  .sf-doc .sf-related__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .sf-doc .sf-related__grid { grid-template-columns: 1fr; }
}
</style>

<div class="sf-doc">


  
  <header class="sf-hero">
    <div class="sf-hero__copy">
      <p class="sf-hero__title">Troubleshooting</p>
      <p class="sf-hero__lead">
        Diagnostic reference for the ALPON X5 AI edge AI computer: power, LEDs and boot,
        connectivity (LTE, Wi-Fi, Ethernet), the <code>DEEPX DX-M1</code> NPU, ALPON X5 AI OS,
        and the ALPON Cloud agent. Each issue lists the symptom, the most likely cause, and
        the verified fix.
      </p>
      <div class="sf-hero__chips">
        <span class="sf-pill">DEEPX DX-M1</span>
        <span class="sf-pill">Raspberry Pi CM5</span>
        <span class="sf-pill">25 TOPS @ INT8</span>
        <span class="sf-pill">ALPON X5 AI OS</span>
      </div>
    </div>
  </header>


  
  <div class="sf-meta">
    <span class="sf-meta__badge">ALPON X5 AI</span>
    <span class="sf-meta__sep">·</span>
    <span class="sf-meta__badge sf-meta__badge--mint">Reference</span>
    <span class="sf-meta__sep">·</span>
    <span>Troubleshooting</span>
    <span class="sf-meta__sep">·</span>
    <span>Power, LEDs, connectivity, NPU, OS, and ALPON Cloud</span>
  </div>


  
  <div class="sf-aeo sf-aeo--ai">
    <span class="sf-aeo__label">How do I troubleshoot the ALPON X5 AI?</span>
    <p class="sf-aeo__text">
      Start from the physical layer and move up. Verify power first
      (<strong>15 V / 27 W USB-C PD</strong>, DC 12 V to 24 V, or PoE+), confirm the
      <strong>Status LED</strong> reports a healthy state, check network links
      (LTE, Wi-Fi, Ethernet) in that order, verify the <strong>DEEPX DX-M1</strong> NPU
      enumerates at <code>/dev/dxrt0</code> with <code>dxtop</code>, and finally inspect
      ALPON X5 AI OS logs with <code>journalctl -xe</code>.
    </p>
  </div>


  
  <div class="sf-callout sf-callout--info">
    <div class="sf-callout__header">
      <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
      <span>Before you troubleshoot</span>
    </div>
    <div class="sf-callout__content">
      <p>Most "dead on arrival" reports resolve with a <strong>15 V / 27 W USB-C PD adapter</strong> or a <strong>12 V to 24 V DC supply on the terminal block</strong>. Standard 5 V phone chargers do not negotiate enough voltage to boot the Raspberry Pi CM5 and DEEPX DX-M1 NPU. Start every diagnostic here.</p>
    </div>
  </div>


  
  <section class="sf-section" aria-labelledby="led-reference-h">

    <h2 id="led-reference-h">
      <span class="sf-h2-icon">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>
      </span>
      LED reference
    </h2>
    <p class="sf-lead">
      The <strong>Status</strong> and <strong>Cellular</strong> LEDs surface device health without
      requiring shell access. Read these two indicators first; they narrow most issues to a single
      category in the accordion below. The full four-LED map (Power, Status, Cellular, User RGB) is in
      <a href="/docs/alpon-x5-ai-edge-computer-physical-layout-io#leds" target="_blank" rel="noopener">Physical Layout &amp; I/O</a>.
    </p>

    <div class="sf-led-legend">
      <span class="sf-led-pill sf-led-pill--green"><span class="sf-led-pill__dot"></span>Green</span>
      <span class="sf-led-pill sf-led-pill--blink"><span class="sf-led-pill__dot"></span>Blinking green</span>
      <span class="sf-led-pill sf-led-pill--blue"><span class="sf-led-pill__dot"></span>Blue</span>
      <span class="sf-led-pill sf-led-pill--yellow"><span class="sf-led-pill__dot"></span>Yellow</span>
      <span class="sf-led-pill sf-led-pill--red"><span class="sf-led-pill__dot"></span>Red</span>
      <span class="sf-led-pill sf-led-pill--off"><span class="sf-led-pill__dot"></span>Off</span>
    </div>

    
    <div class="sf-spec-card">
      <div class="sf-spec-card__head">
        <span class="sf-spec-card__icon">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="3"/></svg>
        </span>
        <span class="sf-spec-card__title">Status LED</span>
      </div>
      <div class="sf-spec-card__body">
        <div class="sf-spec-row">
          <span class="sf-spec-row__key"><span class="sf-led-pill sf-led-pill--green"><span class="sf-led-pill__dot"></span>Solid green</span></span>
          <span class="sf-spec-row__val">Device is online and reachable in <a href="https://connect.sixfab.com" target="_blank" rel="noopener">Sixfab Connect</a>. No action needed.</span>
        </div>
        <div class="sf-spec-row">
          <span class="sf-spec-row__key"><span class="sf-led-pill sf-led-pill--blink"><span class="sf-led-pill__dot"></span>Blinking green</span></span>
          <span class="sf-spec-row__val">Boot or provisioning in progress while ALPON Cloud is reached and credentials are issued.</span>
        </div>
        <div class="sf-spec-row">
          <span class="sf-spec-row__key"><span class="sf-led-pill sf-led-pill--red"><span class="sf-led-pill__dot"></span>Solid red</span></span>
          <span class="sf-spec-row__val">Cannot reach ALPON Cloud. Check LTE antenna torque, move the device for better RF, or connect <code>ETHERNET 0</code> to an upstream router.</span>
        </div>
        <div class="sf-spec-row">
          <span class="sf-spec-row__key"><span class="sf-led-pill sf-led-pill--off"><span class="sf-led-pill__dot"></span>Off</span></span>
          <span class="sf-spec-row__val">No power or the Raspberry Pi CM5 has not completed early boot. Open the <em>Power</em> rows in the accordion below.</span>
        </div>
      </div>
    </div>

    
    <div class="sf-spec-card">
      <div class="sf-spec-card__head">
        <span class="sf-spec-card__icon">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12.55a11 11 0 0 1 14 0"/><path d="M1.42 9a16 16 0 0 1 21.16 0"/><path d="M8.53 16.11a6 6 0 0 1 6.95 0"/><line x1="12" y1="20" x2="12.01" y2="20"/></svg>
        </span>
        <span class="sf-spec-card__title">Cellular LED</span>
      </div>
      <div class="sf-spec-card__body">
        <div class="sf-spec-row">
          <span class="sf-spec-row__key"><span class="sf-led-pill sf-led-pill--blue"><span class="sf-led-pill__dot"></span>Blue</span></span>
          <span class="sf-spec-row__val">Strong LTE signal. No action needed.</span>
        </div>
        <div class="sf-spec-row">
          <span class="sf-spec-row__key"><span class="sf-led-pill sf-led-pill--yellow"><span class="sf-led-pill__dot"></span>Yellow</span></span>
          <span class="sf-spec-row__val">Moderate LTE signal; the device is still online. Reposition or upgrade to a higher-gain LTE antenna if throughput matters.</span>
        </div>
        <div class="sf-spec-row">
          <span class="sf-spec-row__key"><span class="sf-led-pill sf-led-pill--red"><span class="sf-led-pill__dot"></span>Red</span></span>
          <span class="sf-spec-row__val">Weak or no LTE signal. Reposition the device, fall back to Ethernet, and check eSIM activation, LTE band availability, and antenna connections.</span>
        </div>
      </div>
    </div>

  </section>


  
  <section class="sf-section" aria-labelledby="common-issues-h">

    <h2 id="common-issues-h">
      <span class="sf-h2-icon">
        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
          <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/>
        </svg>
      </span>
      Common issues
    </h2>
    <p class="sf-lead">
      Each row below is one symptom. Click a row to open it; the body covers what you see, why
      it happens, and the verified fix. Rows are colour-coded by category, with the dot, the
      category pill, and the left rail all matching, so you can scan the list by category at a
      glance.
    </p>

    <div class="sf-issue-group">

      
      <details class="sf-issue sf-issue--pwr">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Power</span>
          <h3 class="sf-issue__title">The device does not power on (no LEDs)</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Symptom</h4>
          <p>Nothing lights up when power is connected.</p>
          <h4>Cause</h4>
          <p>The adapter does not negotiate a <strong>12 V or 15 V USB-C PD profile (27 W minimum)</strong>. Standard USB-C phone chargers deliver 5 V only and the ALPON X5 AI will not boot.</p>
          <h4>Fix</h4>
          <ol>
            <li>Use the <strong>27 W USB-C PD adapter</strong> shipped with the device.</li>
            <li>If unavailable, power the DC terminal block from a <strong>12 V to 24 V</strong> supply (27 W minimum; 45 W recommended for sustained AI load).</li>
            <li>Confirm wire polarity: <code>Pin 1 = Chassis Ground</code>, <code>Pin 2 = DC Negative</code>, <code>Pin 3 = DC Positive</code>.</li>
            <li>Try a different USB-C cable. Long or low-quality cables often drop PD negotiation.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--pwr">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Power</span>
          <h3 class="sf-issue__title">The device boots but the NPU, NVMe SSD, or USB ports are dead</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Symptom</h4>
          <p>The Raspberry Pi CM5 comes up and Ethernet links, but <code>/dev/dxrt0</code> is missing, the NVMe SSD does not appear, USB devices are not detected, and the ADDON port is inactive.</p>
          <h4>Cause</h4>
          <p>The device has entered <strong>restricted mode</strong>. Input voltage is below <strong>12 V</strong>, so the PCIe bus and peripheral rails are disabled by design.</p>
          <h4>Fix</h4>
          <ol>
            <li>Replace the 5 V source with a <strong>12 V or 15 V USB-C PD adapter</strong> or a <strong>12 V to 24 V DC supply</strong> on the terminal block.</li>
            <li>For long DC cable runs, prefer a <strong>24 V adapter</strong> with thicker conductors to compensate for voltage drop.</li>
            <li>Reboot after restoring nominal voltage so the PCIe bus re-enumerates.</li>
          </ol>
          <div class="sf-callout sf-callout--info">
            <div class="sf-callout__header">
              <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
              <span>Restricted mode is by design</span>
            </div>
            <div class="sf-callout__content">
              <p>Restricted mode prevents brownouts at low input voltage. The Raspberry Pi CM5 and both Ethernet ports stay alive; USB, PCIe (NVMe + DEEPX DX-M1), ADDON, and camera rails are disabled. <strong>AI inference is not available</strong> until the device leaves restricted mode. Supply options and sizing are covered in <a href="/docs/alpon-x5-ai-edge-computer-power-mounting" target="_blank" rel="noopener">Power &amp; Mounting</a>.</p>
            </div>
          </div>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--pwr">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Power</span>
          <h3 class="sf-issue__title">The device resets or throttles under heavy AI load</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Symptom</h4>
          <p>The Raspberry Pi CM5 logs voltage or thermal warnings during sustained NPU inference and occasionally reboots.</p>
          <h4>Cause</h4>
          <p>The adapter delivers the <strong>minimum</strong> 27 W but cannot hold it under peak load, or the enclosure is mounted so airflow across the aluminum heatsink is blocked.</p>
          <h4>Fix</h4>
          <ol>
            <li>Switch to the recommended <strong>45 W (15 V / 3.0 A) USB-C PD adapter</strong> or a DC supply sized for 45 W continuous.</li>
            <li>Mount the device with the cooling surface facing up and leave at least <strong>25 mm</strong> clearance in enclosed cabinets.</li>
            <li>Verify with <code>vcgencmd get_throttled</code> that the Raspberry Pi CM5 is not hitting the under-voltage bit.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--hw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Hardware</span>
          <h3 class="sf-issue__title">The device boots in a reset loop</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Symptom</h4>
          <p>The Raspberry Pi CM5 starts and powers down every few minutes without reaching a login prompt.</p>
          <h4>Cause</h4>
          <p>The hardware <strong>watchdog (SW1)</strong> is enabled but no userspace service is feeding it, so it resets the device every <strong>5 minutes</strong>.</p>
          <h4>Fix</h4>
          <ol>
            <li>Disconnect all power from the device.</li>
            <li>Move <strong>SW1 to ON</strong> to disable the hardware watchdog (OFF = enabled, the default) while you finish bring-up.</li>
            <li>Reapply power and verify the device stays up. Re-enable the watchdog once your application actively pets it.</li>
          </ol>
          <div class="sf-callout sf-callout--warning">
            <div class="sf-callout__header">
              <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2L1 21h22L12 2zm0 6l7.53 13H4.47L12 8zm-1 5v2h2v-2h-2zm0 3v2h2v-2h-2z"/></svg>
              <span>Toggle switches with the device off</span>
            </div>
            <div class="sf-callout__content">
              <p>Always disconnect all power before flipping <strong>SW1 (Watchdog)</strong> or <strong>SW2 (Boot/Burn)</strong>. Changing SW2 while powered can corrupt the Raspberry Pi CM5 eMMC.</p>
            </div>
          </div>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--info">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Connectivity</span>
          <h3 class="sf-issue__title">The Status LED stays red</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The Sixfab Connect agent cannot reach the cloud. Cellular and Ethernet are both down, or the device has not completed provisioning.</p>
          <h4>Fix</h4>
          <ol>
            <li>Plug a cable from <code>ETHERNET 0</code> into an internet-connected router to give the device a known-good path.</li>
            <li>Hand-tighten the two <strong>LTE antennas</strong> on the SMA connectors labeled <code>L</code>.</li>
            <li>If it stays red, open the remote terminal or HDMI shell and run <code>systemctl status sixfab-connect</code> to inspect the agent.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--info">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Connectivity</span>
          <h3 class="sf-issue__title">The Cellular LED is red or yellow</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>Weak LTE signal, missing or loose antenna, or the eSIM (eUICC) profile has not activated on the local network.</p>
          <h4>Fix</h4>
          <ol>
            <li>Hand-tighten both antennas on the SMA connectors labeled <code>L</code> (<strong>LTE Main</strong> and <strong>LTE Diversity</strong>). Never connect the Wi-Fi antenna (RP-SMA male) to an LTE port.</li>
            <li>Move the device near a window or use an external high-gain antenna.</li>
            <li>Confirm the modem is attached and check signal quality:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">terminal</span>
                  <span class="sf-terminal__lang">shell</span>
                </div>
<pre><span class="t-cmd">mmcli</span> <span class="t-flag">-L</span>
<span class="t-cmd">mmcli</span> <span class="t-flag">-m</span> <span class="t-num">0</span> <span class="t-flag">--signal-get</span></pre>
              </div>
            </li>
            <li>If the modem reports <code>registered</code> but throughput is low, switch carriers from the ALPON Cloud console.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--info">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Connectivity</span>
          <h3 class="sf-issue__title">Wi-Fi does not connect or keeps dropping</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The Wi-Fi antenna is missing, the SSID uses an unsupported security mode, or the device is on the edge of the access point's coverage.</p>
          <h4>Fix</h4>
          <ol>
            <li>Install the supplied Wi-Fi antenna on the <strong>RP-SMA male</strong> port labeled <code>W</code>.</li>
            <li>Use <strong>WPA2-PSK</strong> or <strong>WPA3-Personal</strong>. Enterprise EAP profiles require extra setup via <code>nmcli</code> or Sixfab Connect.</li>
            <li>Connect from Sixfab Connect (<em>Connect to Wi-Fi</em>), or over SSH:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">terminal</span>
                  <span class="sf-terminal__lang">shell</span>
                </div>
<pre><span class="t-cmd">nmcli</span> device wifi list
<span class="t-cmd">nmcli</span> device wifi connect <span class="t-str">"YOUR_SSID"</span> password <span class="t-str">"YOUR_PASS"</span></pre>
              </div>
            </li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--info">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Connectivity</span>
          <h3 class="sf-issue__title"><code>ETHERNET 1</code> does not link up or shows low throughput</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p><code>ETHERNET 1</code> is a <strong>USB-bridged Gigabit Ethernet port</strong>, not a native Raspberry Pi CM5 PHY. It shares the <code>TUSB8020</code> hub upstream with one of the USB 3.0 ports. Heavy concurrent USB traffic reduces its throughput.</p>
          <h4>Fix</h4>
          <ol>
            <li>Use <code>ETHERNET 0</code> for performance-sensitive traffic. It is the native Raspberry Pi CM5 Gigabit Ethernet and the only PoE-capable port.</li>
            <li>If you must use <code>ETHERNET 1</code>, avoid attaching high-bandwidth USB 3.0 devices to the shared hub.</li>
            <li>Never connect a PoE source to <code>ETHERNET 1</code>. It does not accept PoE.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--pwr">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Power</span>
          <h3 class="sf-issue__title">PoE+ does not power the device</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The injector is legacy <strong>IEEE 802.3af</strong> (not 802.3at Class 4), the cable is connected to <code>ETHERNET 1</code> instead of <code>ETHERNET 0</code>, or your variant does not include the PoE module.</p>
          <h4>Fix</h4>
          <ol>
            <li>Use an <strong>IEEE 802.3at (PoE+) Class 4</strong> injector or switch that delivers 37 V to 57 V.</li>
            <li>Connect PoE to <code>ETHERNET 0</code> only. <code>ETHERNET 1</code> cannot accept power.</li>
            <li>Check the sticker on the enclosure; the PoE module is a factory option and cannot be field-added.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--ai">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">NPU</span>
          <h3 class="sf-issue__title"><code>/dev/dxrt0</code> is missing or <code>dxtop</code> reports no device</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The device is in <strong>restricted mode</strong> (PCIe disabled), the kernel driver failed to load, or the DEEPX DX-M1 M.2 module is not seated correctly.</p>
          <h4>Fix</h4>
          <ol>
            <li>Verify you are running at 12 V DC or a 12 V / 15 V USB-C PD profile. Open the <em>Power</em> rows above.</li>
            <li>Check the driver and PCIe enumeration:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">terminal</span>
                  <span class="sf-terminal__lang">shell</span>
                </div>
<pre><span class="t-cmd">lspci</span> | <span class="t-cmd">grep</span> <span class="t-flag">-i</span> deepx
<span class="t-cmd">lsmod</span> | <span class="t-cmd">grep</span> dxrt
<span class="t-cmd">ls</span> <span class="t-flag">-l</span> /dev/dxrt*</pre>
              </div>
            </li>
            <li>If PCIe enumerates but the driver is missing, reinstall it:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">terminal</span>
                  <span class="sf-terminal__lang">shell</span>
                </div>
<pre><span class="t-cmd">sudo apt</span> update
<span class="t-cmd">sudo apt</span> install <span class="t-flag">--reinstall -y</span> libdxrt</pre>
              </div>
            </li>
            <li>If <code>lspci</code> does not list the DEEPX device, power down, open the enclosure, and reseat the <strong>DEEPX DX-M1 M.2 module</strong>. Apply ESD precautions.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--ai">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">NPU</span>
          <h3 class="sf-issue__title">Python raises <code>ImportError: No module named dx_engine</code></h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The script is running under the system Python. The <code>dx_engine</code> binding lives inside the bundled virtual environment at <code>/usr/lib/libdxrt/dxrt-venv</code>.</p>
          <h4>Fix</h4>
          <div class="sf-terminal">
            <div class="sf-terminal__head">
              <span class="sf-terminal__dot" style="background:#ff5f57"></span>
              <span class="sf-terminal__dot" style="background:#febc2e"></span>
              <span class="sf-terminal__dot" style="background:#28c840"></span>
              <span class="sf-terminal__title">terminal</span>
              <span class="sf-terminal__lang">shell</span>
            </div>
<pre><span class="t-cmd">source</span> /usr/lib/libdxrt/dxrt-venv/bin/activate
<span class="t-cmd">python</span> <span class="t-flag">-c</span> <span class="t-str">"import dx_engine; print(dx_engine.__version__)"</span></pre>
          </div>
          <p>For scripts, invoke the venv Python directly: <code>/usr/lib/libdxrt/dxrt-venv/bin/python my_script.py</code>.</p>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--ai" id="docker-dxrt0">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">NPU</span>
          <h3 class="sf-issue__title"><code>Cannot open /dev/dxrt0</code> inside a Docker container</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The container was started without the NPU character device mapped in, or without the privileges needed to attach to it.</p>
          <h4>Fix</h4>
          <p>ALPON X5 AI OS does not include Docker; install it first (see the <a href="/docs/alpon-x5-ai-edge-computer-operating-system" target="_blank" rel="noopener">ALPON X5 AI OS</a> page).</p>
          <p>Start the container with the device and <code>--privileged</code>:</p>
          <div class="sf-terminal">
            <div class="sf-terminal__head">
              <span class="sf-terminal__dot" style="background:#ff5f57"></span>
              <span class="sf-terminal__dot" style="background:#febc2e"></span>
              <span class="sf-terminal__dot" style="background:#28c840"></span>
              <span class="sf-terminal__title">terminal</span>
              <span class="sf-terminal__lang">shell</span>
            </div>
<pre><span class="t-cmd">docker run</span> <span class="t-flag">--rm --privileged</span> &#92;
  <span class="t-flag">--device</span> /dev/dxrt0 &#92;
  <span class="t-flag">-v</span> /opt/models:/models &#92;
  alpon-infer:latest</pre>
          </div>
          <p>For <code>docker-compose</code>, set <code>privileged: true</code> and <code>devices: ["/dev/dxrt0"]</code>.</p>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--ai">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">NPU</span>
          <h3 class="sf-issue__title">Model fails to load with an out-of-memory error</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The compiled <code>.dxnn</code> footprint exceeds the DEEPX DX-M1's <strong>4 GB on-chip memory</strong>. The NPU has its own dedicated memory pool, independent of Raspberry Pi CM5 system RAM.</p>
          <h4>Fix</h4>
          <ol>
            <li>Recompile with a lower input resolution (for example 640×640 instead of 1280×1280).</li>
            <li>Switch to a lighter model variant (<code>nano</code> or <code>small</code> instead of <code>large</code> or <code>x</code>).</li>
            <li>Quantize or prune the model before re-exporting to ONNX, then recompile with <code>dxcom</code>.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--ai">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">NPU</span>
          <h3 class="sf-issue__title">YOLO inference runs at a very low FPS on the ALPON X5 AI</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The model was compiled without <strong>PPU</strong> (post-processing unit) support. Post-processing (NMS, box decoding) then runs on the Raspberry Pi CM5 CPU and becomes the bottleneck.</p>
          <h4>Fix</h4>
          <ol>
            <li>Recompile the ONNX graph with a config that enables the PPU. Run <code>dxcom</code> on a host PC:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">terminal (host PC)</span>
                  <span class="sf-terminal__lang">shell</span>
                </div>
<pre><span class="t-cmd">dxcom</span> &#92;
  <span class="t-flag">-m</span> /path/to/yolov8n.onnx &#92;
  <span class="t-flag">-c</span> yolov8n_config.json &#92;
  <span class="t-flag">-o</span> yolov8n-output</pre>
              </div>
            </li>
            <li>Use a config with a <code>ppu</code> block, calibration settings, and the matching preprocessing pipeline:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">yolov8n_config.json</span>
                  <span class="sf-terminal__lang">json</span>
                </div>
<pre>{
  <span class="t-key">"inputs"</span>: {
    <span class="t-key">"images"</span>: [<span class="t-num">1</span>, <span class="t-num">3</span>, <span class="t-num">640</span>, <span class="t-num">640</span>]
  },
  <span class="t-key">"calibration_num"</span>: <span class="t-num">100</span>,
  <span class="t-key">"calibration_method"</span>: <span class="t-str">"ema"</span>,
  <span class="t-key">"train_batchsize"</span>: <span class="t-num">32</span>,
  <span class="t-key">"num_samples"</span>: <span class="t-num">1024</span>,
  <span class="t-key">"default_loader"</span>: {
    <span class="t-key">"dataset_path"</span>: <span class="t-str">"./calibration_dataset"</span>,
    <span class="t-key">"file_extensions"</span>: [<span class="t-str">"jpeg"</span>, <span class="t-str">"jpg"</span>, <span class="t-str">"png"</span>, <span class="t-str">"JPEG"</span>],
    <span class="t-key">"preprocessings"</span>: [
      { <span class="t-key">"resize"</span>: { <span class="t-key">"mode"</span>: <span class="t-str">"pad"</span>, <span class="t-key">"size"</span>: <span class="t-num">640</span>,
                    <span class="t-key">"pad_location"</span>: <span class="t-str">"edge"</span>,
                    <span class="t-key">"pad_value"</span>: [<span class="t-num">114</span>, <span class="t-num">114</span>, <span class="t-num">114</span>] } },
      { <span class="t-key">"div"</span>: { <span class="t-key">"x"</span>: <span class="t-num">255</span> } },
      { <span class="t-key">"convertColor"</span>: { <span class="t-key">"form"</span>: <span class="t-str">"BGR2RGB"</span> } },
      { <span class="t-key">"transpose"</span>: { <span class="t-key">"axis"</span>: [<span class="t-num">2</span>, <span class="t-num">0</span>, <span class="t-num">1</span>] } },
      { <span class="t-key">"expandDim"</span>: { <span class="t-key">"axis"</span>: <span class="t-num">0</span> } }
    ]
  },
  <span class="t-key">"ppu"</span>: {
    <span class="t-key">"type"</span>: <span class="t-num">1</span>,
    <span class="t-key">"conf_thres"</span>: <span class="t-num">0.25</span>,
    <span class="t-key">"num_classes"</span>: <span class="t-num">80</span>,
    <span class="t-key">"layer"</span>: [
      { <span class="t-key">"bbox"</span>: <span class="t-str">"Mul_441"</span>, <span class="t-key">"cls_conf"</span>: <span class="t-str">"Sigmoid_442"</span> }
    ]
  }
}</pre>
              </div>
            </li>
            <li>Redeploy the resulting <code>.dxnn</code>. PPU-compiled nano-class YOLO models reach roughly <strong>50 FPS at 1280×720</strong> and <strong>20 to 25 FPS at 1920×1080</strong>.</li>
            <li>Monitor with <code>dxtop</code> to confirm the NPU is saturated rather than the CPU.</li>
          </ol>
          <div class="sf-callout sf-callout--ai">
            <div class="sf-callout__header">
              <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M9 21h6v-1H9zM12 2C7.58 2 4 5.58 4 10c0 3.54 2.04 6.61 5 8.08V19h6v-.92c2.96-1.47 5-4.54 5-8.08 0-4.42-3.58-8-8-8z"/></svg>
              <span>Output node names depend on your ONNX export</span>
            </div>
            <div class="sf-callout__content">
              <p>The <code>bbox</code> and <code>cls_conf</code> layer names (<code>Mul_441</code>, <code>Sigmoid_442</code>) come from the YOLOv8 ONNX graph and will differ across exports. Open the model in <a href="https://netron.app" target="_blank" rel="noopener">Netron</a> to confirm the correct node names before compiling.</p>
            </div>
          </div>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--ai">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">NPU</span>
          <h3 class="sf-issue__title"><code>dxcom</code> reports an unsupported operator</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The ONNX graph contains an attention block, transformer layer, or another operator outside the DEEPX DX-M1 supported set. The current <code>dxrt-runtime</code> targets <strong>image-based CNNs</strong>; transformers are not yet supported.</p>
          <h4>Fix</h4>
          <ol>
            <li>Switch to a CNN-based equivalent (YOLOv5/v7/v8, SSD, ResNet, MobileNet, EfficientNet, U-Net).</li>
            <li>If you must keep a transformer head, run it on the Raspberry Pi CM5 CPU and offload only the CNN backbone to the NPU.</li>
            <li>Check the DEEPX release notes for the current supported-operator list before compiling.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--sw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">OS</span>
          <h3 class="sf-issue__title">I cannot SSH into the device</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>Wrong username, wrong IP or hostname, firewall blocking port 22, or the device is on a different subnet than your workstation.</p>
          <h4>Fix</h4>
          <ol>
            <li>Connect with the correct user: <code>ssh alpon@&lt;DEVICE_IP&gt;</code> or <code>ssh alpon@alpon-&lt;MAC&gt;.local</code>.</li>
            <li>If the local network is unreachable, use the browser-based <strong>remote terminal in Sixfab Connect</strong>. It works even when only cellular is up.</li>
            <li>As a last resort, attach HDMI and a USB keyboard for local login.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--sw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">OS</span>
          <h3 class="sf-issue__title">I forgot the password or locked myself out</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Fix</h4>
          <ol>
            <li>Open the <strong>Sixfab Connect remote terminal</strong>. It authenticates through the cloud agent and does not require your local password.</li>
            <li>From that shell, run <code>sudo passwd alpon</code> to set a new password.</li>
            <li>If the remote terminal is unreachable and you have no HDMI access, <a href="https://sixfab.com/contact/" target="_blank" rel="noopener">contact Sixfab support</a> with the device serial number for a recovery procedure. Do not attempt to re-flash the eMMC without guidance.</li>
          </ol>
          <div class="sf-callout sf-callout--warning">
            <div class="sf-callout__header">
              <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2L1 21h22L12 2zm0 5.5L19.53 19H4.47L12 7.5z"/></svg>
              <span>Do not delete the alpon user</span>
            </div>
            <div class="sf-callout__content">
              <p>The <code>alpon</code> account is used internally by Sixfab Connect and other system services. Change the password and, if you need a separate admin identity, create a new user with <code>sudo</code> rights. Deleting <code>alpon</code> breaks core system functions.</p>
            </div>
          </div>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--sw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">OS</span>
          <h3 class="sf-issue__title"><code>apt update</code> or <code>apt upgrade</code> fails</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>No internet path, broken GPG key for the Sixfab or DEEPX repositories, or a partial upgrade that left <code>dpkg</code> in an inconsistent state.</p>
          <h4>Fix</h4>
          <div class="sf-terminal">
            <div class="sf-terminal__head">
              <span class="sf-terminal__dot" style="background:#ff5f57"></span>
              <span class="sf-terminal__dot" style="background:#febc2e"></span>
              <span class="sf-terminal__dot" style="background:#28c840"></span>
              <span class="sf-terminal__title">terminal</span>
              <span class="sf-terminal__lang">shell</span>
            </div>
<pre><span class="t-dim"># Verify connectivity first</span>
<span class="t-cmd">ping</span> <span class="t-flag">-c</span> <span class="t-num">3</span> deb.debian.org

<span class="t-dim"># Repair any half-configured packages</span>
<span class="t-cmd">sudo dpkg</span> <span class="t-flag">--configure -a</span>
<span class="t-cmd">sudo apt</span> <span class="t-flag">-f</span> install

<span class="t-dim"># Refresh and retry</span>
<span class="t-cmd">sudo apt</span> update
<span class="t-cmd">sudo apt</span> upgrade <span class="t-flag">-y</span></pre>
          </div>
          <p>If a repository's GPG key is missing, reinstall it from the Sixfab or DEEPX documentation before running <code>apt update</code> again. Reboot when a kernel or firmware package was upgraded.</p>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--hw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">Hardware</span>
          <h3 class="sf-issue__title">Nothing appears on HDMI</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The HDMI display was connected after boot, the cable does not support the negotiated mode, or the Raspberry Pi CM5 has not completed early boot.</p>
          <h4>Fix</h4>
          <ol>
            <li>Plug HDMI before powering on. Hot-plug detection is best-effort on the Raspberry Pi CM5.</li>
            <li>Use a certified HDMI cable and a monitor that supports 1080p at 60 Hz.</li>
            <li>If the monitor stays blank, verify over SSH that the device booted, then reboot with HDMI already connected.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--sw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">ALPON Cloud</span>
          <h3 class="sf-issue__title">The device appears <code>Offline</code> in Sixfab Connect</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>No upstream path is currently reachable, or the agent lost its session and has not re-attached.</p>
          <h4>Fix</h4>
          <ol>
            <li>Check the LED reference above. If the Cellular LED is red, fall back to Ethernet by plugging <code>ETHERNET 0</code> into a wired router.</li>
            <li>From a local shell, inspect the agent:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">terminal</span>
                  <span class="sf-terminal__lang">shell</span>
                </div>
<pre><span class="t-cmd">systemctl</span> status sixfab-connect
<span class="t-cmd">journalctl</span> <span class="t-flag">-u</span> sixfab-connect <span class="t-flag">-n</span> <span class="t-num">200</span></pre>
              </div>
            </li>
            <li>If the agent is stuck, restart it:
              <div class="sf-terminal">
                <div class="sf-terminal__head">
                  <span class="sf-terminal__dot" style="background:#ff5f57"></span>
                  <span class="sf-terminal__dot" style="background:#febc2e"></span>
                  <span class="sf-terminal__dot" style="background:#28c840"></span>
                  <span class="sf-terminal__title">terminal</span>
                  <span class="sf-terminal__lang">shell</span>
                </div>
<pre><span class="t-cmd">sudo systemctl</span> restart sixfab-connect</pre>
              </div>
            </li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--sw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">ALPON Cloud</span>
          <h3 class="sf-issue__title">The QR code on the label does not scan</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Fix</h4>
          <ol>
            <li>In Sixfab Connect, choose <strong>Manual registration</strong>.</li>
            <li>Enter the <strong>serial number</strong> printed next to the QR code.</li>
            <li>Follow the on-screen prompts to bind the device to your organization.</li>
          </ol>
        </div>
      </details>

      
      <details class="sf-issue sf-issue--sw">
        <summary class="sf-issue__head">
          <span class="sf-issue__dot" aria-hidden="true"></span>
          <span class="sf-issue__cat">ALPON Cloud</span>
          <h3 class="sf-issue__title">Deployments queued in ALPON Cloud do not reach the device</h3>
          <svg class="sf-issue__chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
        </summary>
        <div class="sf-issue__body">
          <h4>Cause</h4>
          <p>The device is offline, the container image exceeds available NVMe free space, or the image was not built for <strong>ARM64</strong>.</p>
          <h4>Fix</h4>
          <ol>
            <li>Confirm the device is <code>Online</code> and the Sixfab Connect agent is healthy.</li>
            <li>Rebuild your image for ARM64: <code>docker buildx build --platform linux/arm64 -t my-image .</code></li>
            <li>Check available disk with <code>df -h /</code>. Prune unused images: <code>docker image prune -a</code>.</li>
          </ol>
        </div>
      </details>

    </div>

  </section>


  
  <section class="sf-section" aria-labelledby="pre-support-h">

    <h2 id="pre-support-h">
      <span class="sf-h2-icon">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 11 12 14 22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg>
      </span>
      Before you contact support
    </h2>
    <p class="sf-lead">
      Seven quick checks that resolve more than 90&nbsp;% of field issues. Each takes under a minute.
      The chip on the right of each row tells you what to do — <code>$</code> means a shell command
      to run, <code>→</code> means a visual or label to confirm.
    </p>

    <div class="sf-checklist">

      <div class="sf-check">
        <span class="sf-check__num">01</span>
        <div class="sf-check__body">
          <div class="sf-check__row">
            <span class="sf-check__title">Power source</span>
            <code class="sf-check__cmd"><span class="sf-check__cmd-prompt">$</span>vcgencmd get_throttled</code>
          </div>
          <p class="sf-check__desc">15 V / 27 W USB-C PD or 12 V to 24 V DC. No under-voltage flag set.</p>
        </div>
      </div>

      <div class="sf-check">
        <span class="sf-check__num">02</span>
        <div class="sf-check__body">
          <div class="sf-check__row">
            <span class="sf-check__title">Switch positions</span>
            <code class="sf-check__cmd sf-check__cmd--hint"><span class="sf-check__cmd-prompt">→</span>SW1 · SW2 · OFF</code>
          </div>
          <p class="sf-check__desc">SW1 OFF = watchdog enabled (default); SW2 (Boot/Burn) OFF. Toggle only with all power disconnected.</p>
        </div>
      </div>

      <div class="sf-check">
        <span class="sf-check__num">03</span>
        <div class="sf-check__body">
          <div class="sf-check__row">
            <span class="sf-check__title">LED state</span>
            <code class="sf-check__cmd sf-check__cmd--hint"><span class="sf-check__cmd-prompt">→</span>Status · Cellular</code>
          </div>
          <p class="sf-check__desc">Note the exact state of <strong>Status</strong> and <strong>Cellular</strong>. See the <a href="#led-reference-h">LED reference</a>.</p>
        </div>
      </div>

      <div class="sf-check">
        <span class="sf-check__num">04</span>
        <div class="sf-check__body">
          <div class="sf-check__row">
            <span class="sf-check__title">Antennas seated</span>
            <code class="sf-check__cmd sf-check__cmd--hint"><span class="sf-check__cmd-prompt">→</span>L · L · W · G</code>
          </div>
          <p class="sf-check__desc">Four SMA connectors hand-tight. Wi-Fi/Bluetooth = RP-SMA male; LTE Main, LTE Diversity, GNSS/GPS = SMA female.</p>
        </div>
      </div>

      <div class="sf-check">
        <span class="sf-check__num">05</span>
        <div class="sf-check__body">
          <div class="sf-check__row">
            <span class="sf-check__title">Network path</span>
            <code class="sf-check__cmd"><span class="sf-check__cmd-prompt">$</span>ping -c 3 8.8.8.8</code>
          </div>
          <p class="sf-check__desc">At least one of LTE, Wi-Fi, or <code>ETHERNET 0</code> reaches the internet.</p>
        </div>
      </div>

      <div class="sf-check">
        <span class="sf-check__num">06</span>
        <div class="sf-check__body">
          <div class="sf-check__row">
            <span class="sf-check__title">NPU enumeration</span>
            <code class="sf-check__cmd"><span class="sf-check__cmd-prompt">$</span>dxtop</code>
          </div>
          <p class="sf-check__desc"><code>dxtop</code> shows <code>/dev/dxrt0</code> with live utilization and temperature.</p>
        </div>
      </div>

      <div class="sf-check">
        <span class="sf-check__num">07</span>
        <div class="sf-check__body">
          <div class="sf-check__row">
            <span class="sf-check__title">Device serial number</span>
            <code class="sf-check__cmd sf-check__cmd--hint"><span class="sf-check__cmd-prompt">→</span>SN-XXXXXXXX</code>
          </div>
          <p class="sf-check__desc">Read it from the enclosure label, next to the QR code. Include it in the support ticket.</p>
        </div>
      </div>

    </div>

    <h3>Optional: collect a support bundle</h3>

    <p>If you can run a shell on the device (SSH or HDMI), this single block captures the journal, kernel ring buffer, PCIe topology, and OS release into one archive. Attach it to your ticket if you can; otherwise the checks above are enough to start.</p>

    <div class="sf-terminal">
      <div class="sf-terminal__head">
        <span class="sf-terminal__dot" style="background:#ff5f57"></span>
        <span class="sf-terminal__dot" style="background:#febc2e"></span>
        <span class="sf-terminal__dot" style="background:#28c840"></span>
        <span class="sf-terminal__title">terminal (on the ALPON X5 AI)</span>
        <span class="sf-terminal__lang">shell</span>
      </div>
<pre><span class="t-dim"># Single-shot bundle, run on the device over SSH</span>
<span class="t-cmd">sudo journalctl</span> <span class="t-flag">-b -n</span> <span class="t-num">2000</span> &gt; ~/alpon-journal.log
<span class="t-cmd">dmesg</span> &gt; ~/alpon-dmesg.log
<span class="t-cmd">lspci</span> <span class="t-flag">-vv</span> &gt; ~/alpon-lspci.log
<span class="t-cmd">cat</span> /etc/os-release &gt; ~/alpon-os.log
<span class="t-cmd">tar</span> czf ~/alpon-support.tar.gz ~/alpon-*.log
<span class="t-ok"># Copy the archive to your computer with scp, WinSCP, or Cyberduck.</span></pre>
    </div>

    <div class="sf-callout sf-callout--info">
      <div class="sf-callout__header">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
        <span>No shell access?</span>
      </div>
      <div class="sf-callout__content">
        <p>Send a plain-text email with the <strong>device serial number</strong>, the <strong>observed LED state</strong>, and a one-line description of <strong>what you were doing when the issue appeared</strong>. Sixfab support can guide you through log collection from there.</p>
      </div>
    </div>

  </section>


  
  <section class="sf-section" aria-labelledby="still-need-help-h">

    <h2 id="still-need-help-h">
      <span class="sf-h2-icon">
        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
          <circle cx="12" cy="12" r="10"/>
          <circle cx="12" cy="12" r="4"/>
          <path d="M4.93 4.93l4.24 4.24M14.83 14.83l4.24 4.24M14.83 9.17l4.24-4.24M14.83 9.17l3.53-3.53M4.93 19.07l4.24-4.24"/>
        </svg>
      </span>
      Still need help?
    </h2>
    <p class="sf-lead">
      If your symptom is not covered above, contact Sixfab support. Including the seven checks from
      the section above (or the support bundle) in your ticket turns a multi-day debugging cycle
      into a single round-trip.
    </p>

    <div class="sf-cta-card">
      <div class="sf-cta-card__copy">
        <span class="sf-cta-card__eyebrow">Sixfab support</span>
        <p class="sf-cta-card__title">Couldn't fix it with the cards above?</p>
        <p class="sf-cta-card__lead">
          Attach the support bundle (<code>~/alpon-support.tar.gz</code>) along with the
          observed LED state and the device serial number. Typical first response in one
          business day.
        </p>
      </div>
      <div class="sf-cta-card__actions">

        <a href="https://sixfab.com/contact" target="_blank" rel="noopener" class="sf-cta-action">
          <span class="sf-cta-action__icon" aria-hidden="true">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
              <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/>
              <path d="m22 6-10 7L2 6"/>
            </svg>
          </span>
          <span class="sf-cta-action__body">
            <span class="sf-cta-action__label">Open a support ticket</span>
            <span class="sf-cta-action__hint">One-on-one with the Sixfab team. Best for blocking issues.</span>
          </span>
          <svg class="sf-cta-action__arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <path d="M5 12h14M13 6l6 6-6 6"/>
          </svg>
        </a>

        <a href="https://community.sixfab.com" target="_blank" rel="noopener" class="sf-cta-action">
          <span class="sf-cta-action__icon" aria-hidden="true">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
              <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
            </svg>
          </span>
          <span class="sf-cta-action__body">
            <span class="sf-cta-action__label">Ask the community</span>
            <span class="sf-cta-action__hint">Browse threads or post a question on the Sixfab forum.</span>
          </span>
          <svg class="sf-cta-action__arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <path d="M5 12h14M13 6l6 6-6 6"/>
          </svg>
        </a>

      </div>
    </div>

  </section>

  
  <section class="sf-related">
    <h2>Related guides</h2>
    <div class="sf-related__grid">
      <a class="sf-related__card" href="/docs/alpon-x5-ai-edge-computer-power-mounting" target="_blank" rel="noopener">
        <div class="sf-related__icon">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h9l-1 8 10-12h-9l1-8z"/></svg>
        </div>
        <div class="sf-related__title">Power &amp; Mounting</div>
        <div class="sf-related__desc">Supply sizing, USB-C PD, DC terminal, PoE+ limits, and mounting clearance.</div>
      </a>
      <a class="sf-related__card" href="/docs/alpon-x5-ai-edge-computer-physical-layout-io" target="_blank" rel="noopener">
        <div class="sf-related__icon">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></svg>
        </div>
        <div class="sf-related__title">Physical Layout &amp; I/O</div>
        <div class="sf-related__desc">Every port, LED, button, and DIP switch on the enclosure.</div>
      </a>
      <a class="sf-related__card" href="/docs/alpon-x5-ai-edge-computer-operating-system" target="_blank" rel="noopener">
        <div class="sf-related__icon">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>
        </div>
        <div class="sf-related__title">ALPON X5 AI OS</div>
        <div class="sf-related__desc">The Debian-based OS image, NPU runtime, and how to install Docker.</div>
      </a>
    </div>
  </section>


</div>


`}</HTMLBlock>

<br />