Skip to main content

max / alloy

Ask whether the machine can see a wireless device, and which layer lost it
Author: Max Johnson <me@maxj.phd> · 2026-09-03 19:14 UTC
Signed with PGP, not checked
Commit: ce02bbc731132e44537098079be944afce50baa4
Parent: fcddf61
1 file changed, +17 insertions, -0 deletions
@@ -143,6 +143,23 @@
143 143 row FAIL backlight "$(basename "$bl")/brightness is not writable, so the keys cannot take effect"
144 144 fi
145 145
146 + # -------------------------------------------------------------------- wifi ---
147 + # Three states wear the same face on screen, and only one of them is fine.
148 + # Measured on fw12 2026-09-03: the kernel had the interface and NetworkManager
149 + # had no plugin to present it with, so `alloy net` showed loopback alone and
150 + # nothing anywhere reported an error. No unit failed and the console was
151 + # correct, which is why this is a row rather than something a user reports.
152 + if nmcli -t -f DEVICE,TYPE device 2>/dev/null | grep -q ':wifi$'; then
153 + seen="$(nmcli -t -f DEVICE,TYPE device 2>/dev/null | grep ':wifi$' | cut -d: -f1 | tr '\n' ' ')"
154 + row PASS wifi "NetworkManager presents ${seen%% }"
155 + elif ! ls /usr/lib64/NetworkManager/*/libnm-device-plugin-wifi.so >/dev/null 2>&1; then
156 + row FAIL wifi "the image carries no NetworkManager wifi plugin, so no wireless device can ever appear"
157 + elif ls -d /sys/class/net/*/wireless >/dev/null 2>&1; then
158 + row FAIL wifi "the kernel has a wireless interface and NetworkManager does not present it; check wpa_supplicant and rfkill"
159 + else
160 + row SKIP wifi "no wireless interface on this machine"
161 + fi
162 +
146 163 # ---------------------------------------------------------------- firewall ---
147 164 # The combination is the risk, not the firewall: tailscaled writes its own
148 165 # rules, and firewalld starting without tailscale0 in the trusted zone drops