Merge branch 'code/majorair/steamdeck-wifi-recurrence'

This commit is contained in:
Marcus Summers 2026-06-22 22:38:05 -04:00
commit af84d8dd96

View file

@ -5,7 +5,7 @@ category: networking
tags: [wifi, steam-deck, steamos, iwd, networkmanager, rtw88, rtl8822ce, power-save, supplicant-disconnect, flapping]
status: published
created: 2026-06-19
updated: 2026-06-19
updated: 2026-06-22
---
# Steam Deck Wi-Fi Flapping: IWD Periodic Scan + rtw88 Power Save
@ -120,6 +120,13 @@ A 3-minute continuous `ping` showed **180/180 replies, 0 loss**, latency tighten
## 📌 Notes
- **Persistence:** `/etc/iwd/main.conf` and the dispatcher live in `/etc`, which survives reboots. A major SteamOS update *can* reset `/etc` — re-apply if the flapping returns after an OS update.
- **Why `/etc` resets:** SteamOS uses an immutable A/B root filesystem. An update writes a fresh root image to the other partition and boots it, replacing everything on root — `/etc`, `/usr`, installed packages. Only `/home` and `/var` (separate partitions) survive. Anything that must auto-run **as root at boot** (systemd units, NM dispatcher scripts, sudoers) has to be registered in `/etc`, so there is no clean *native* way to make this fix auto-persist. The realistic choices are a re-run-after-update script in `/home` (below) or a community overlay tool like `rwfus` that makes `/etc`+`/usr` persistent.
- **One-command recovery:** a self-contained restore script is staged on the Deck at `/home/deck/restore-wifi-fix.sh` (lives in `/home`, so it survives updates). After any update that wipes the fix, re-apply with:
```bash
ssh -t deck@192.168.50.173 'sudo bash ~/restore-wifi-fix.sh'
```
- **Recurrence log:**
- **2026-06-22** — flap returned (Wi-Fi did not reconnect after wake). A SteamOS update had wiped `/etc` (both fix files gone; `~/.ssh` and the `deck` SSH password were also reset, the smoking gun that an update ran). Re-applied via the staged `restore-wifi-fix.sh`; verified `power_save off`, `DisablePeriodicScan` present, 60/60 pings 0% loss. MajorAir's SSH public key was added to `deck@192.168.50.173:~/.ssh/authorized_keys` during this session.
- **Fully reversible:**
```bash
sudo rm /etc/iwd/main.conf /etc/NetworkManager/dispatcher.d/90-wifi-powersave