Files

2.3 KiB

Wake-on-LAN

Wake-on-LAN is available on aquamarine and the three 12kingdoms mini PCs (shoryu, shushou, and youko). Firmware prerequisites are recorded in BIOS settings.

NixOS configuration

The three mini PCs share lib/genVmHostModule.nix, which adds a systemd.network.links entry that arms WakeOnLan = "magic" on their physical eno1 NIC after every boot. aquamarine has the equivalent entry for its en* NIC in hosts/idols-aquamarine/default.nix.

The MAC addresses used by the wake command live in scripts/wake.py.

Verify

After a boot, confirm the physical NIC reports Wake-on: g:

Host Command
12kingdoms ethtool eno1 | grep -E 'Supports Wake-on|Wake-on'
aquamarine ethtool enp133s0 | grep -E 'Supports Wake-on|Wake-on'

Wake hosts

Wake every Wake-on-LAN-capable homelab host from another L2 host:

just wake

Pass one or more host names to wake only those machines; aqua is an alias for aquamarine:

just wake youko
just wake aqua shoryu

The command retries the magic packet every few seconds and exits when every selected host answers ICMP and accepts an SSH connection. The SSH check prevents a host that is still shutting down or partway through boot from being mistaken for online. It prints a progress line every five seconds while waiting. Run just wake --help for all options:

--timeout SECONDS           Stop waiting after SECONDS; 0 waits forever (default: 180)
--retry-interval SECONDS    Time between magic-packet bursts (default: 5)
--probe-interval SECONDS    Time between reachability checks (default: 1)
--progress-interval SECONDS How often to print progress (default: 5)
--packets N                 Magic packets per broadcast address and burst (default: 3)

Examples:

just wake aqua --timeout 0
just wake youko --timeout 60
just wake --retry-interval 2 --progress-interval 2

Add a host to the MAC list only after its firmware setting and NixOS link config are in place. Test wake-up from a powered-off state, not from a reboot.