Files
hermes-skills/devops/proxmox-ve-administration/references/auto-restart-consumer-hardware-2026-07.md
T

4.0 KiB

Auto-Restart on Power Loss — Consumer Mini PCs (2026-07-04)

Context

n5pro (10.0.20.91) is a Micro Computer N5 PRO (AMD Ryzen, AMI BIOS 1.01, no IPMI/BMC). Needs to auto-restart after power outage for Ceph OSD availability.

Problem

Enterprise servers have IPMI/BMC with "Restore on Power Loss" configurable via ipmitool. Consumer mini PCs lack IPMI — the setting lives in BIOS NVRAM only.

AMI BIOS Limitations

  • The "Restore on AC Power Loss" / "State After G3" setting is stored in AMI proprietary NVRAM variables (AMD_PBS_SETUP, AmdSetup) — not standard EFI vars.
  • These variables are opaque binary blobs; writing them blindly risks bricking the board.
  • efivar / efibootmgr cannot parse or modify AMI setup menus.
  • Conclusion: This setting must be changed manually in BIOS UI.

BIOS Instructions (manual, one-time)

  1. Boot → press Del or F2 → enter BIOS Setup
  2. Navigate to ChipsetSouth Cluster Configuration (or AdvancedPower Management)
  3. Find State After G3 (or Restore on AC Power Loss)
  4. Set to Power On (or S0 / Last State)
  5. Save & exit (F10)

Wake-on-LAN as Fallback

WoL can wake a powered-off machine IF:

  • The NIC receives standby power (machine is plugged in, PSU switch on)
  • WoL is enabled in BOTH BIOS and OS

⚠️ WoL does NOT help after a complete power outage — the NIC has no power. It only helps for soft power-off (S5 state with standby power).

Enabling WoL Persistently

Identify the Physical NIC

Mini PCs often have bond/team interfaces. Check which physical NIC supports WoL:

# List all interfaces
ip link show

# Check WoL support on each physical NIC
ethtool nic0 | grep -i "wake"
# Supports Wake-on: pumbg  ← good
# Wake-on: d         ← disabled

# Enable WoL magic packet
ethtool -s nic0 wol g

⚠️ Bond interfaces (bond0) don't have WoL — enable it on the physical slave (nic0).

Persistent systemd Service

# /etc/systemd/system/wol-enable.service
[Unit]
Description=Enable Wake-on-LAN
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s nic0 wol g
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now wol-enable.service

Triggering WoL Remotely

# From any machine on the same broadcast domain
wakeonlan <MAC_ADDRESS>
# or
etherwake -i <interface> <MAC_ADDRESS>

Node Inventory: n5pro (10.0.20.91)

Property Value
Hardware Micro Computer (HK) Tech N5 PRO
BIOS AMI 1.01 (2025-10-24)
CPU AMD Ryzen
NVMe 128 GB AirDisk SSD (MAP1202 DRAM-less)
SATA Controller JMicron JMB58x AHCI, 5/5 ports implemented
USB Boot SanDisk 3.2Gen1 14.3 GB (Proxmox installer)
Network bond0 (nic0 + eno1), MAC: 38:05:25:37:8e:08
WoL Enabled on nic0, systemd service active
BIOS Auto-Start ⚠️ MANUAL — needs "State After G3 = Power On" in BIOS
Ceph OSDs None yet — prepared for 2x 3TB HDDs

General Decision Matrix: Auto-Restart Methods

Hardware Type Method Remote Config?
Enterprise server with IPMI ipmitool chassis setenv Yes
Consumer PC with AMI BIOS BIOS "State After G3" Manual BIOS
Consumer PC, no BIOS option WoL + external waker Partial (needs power)
PiKVM / BMC add-on Virtual media + IPMI emulation Yes

Pitfalls

  1. Don't write AMI NVRAM vars blindAMD_PBS_SETUP is an opaque binary blob, not a simple key-value store. Writing wrong bytes bricks the board.
  2. Bond interfaces don't support ethtool WoL — target the physical slave interface, not bond0.
  3. WoL after full power outage is useless — NIC has no standby power. Only BIOS "Restore on AC" helps.
  4. AHCI port count misleading — some controllers advertise N ports but implement fewer. Check dmesg | grep "ports implemented" (e.g. OptiPlex 3070: 5 ports shown, only 1 implemented = port mask 0x1).