I kept having intermittent issues with my wifi where the connections would spontaneously lose connection to the internet, sometimes for up to a minute at a time. There was no predictable pattern, thus making it hard to isolate (in hindsight, I should’ve been checking router logs. Oh well!). One of the isolation steps I tried was to substitute in another router for the ISP-provided one. This proved to work for a time, until it happened again. I vowed to myself that I would fully get to the bottom of this later, when I had more time.
One night, I was SSH’ing into my debian proxmox VM and the connection kept dropping. After about the second time, I wanted to see if this was an issue connecting to the internet, or just something internal. For refrence, I was connected using Wifi, and the homelab is connected with a Cat 6e cable. Everything after that is virtual networking in proxmox. See that here. so what I ended up doing was running from my Windows machine a ping -8 8.8.8.8 and I noticed that a single ping request dropped after a few minutes at the same time as my SSH session closed abruptly. Okay, so now what?
I was very confused at this point, unsure whether the issue was internal or external. If the issue was the router, shouldn’t swapping it have helped? If the issue was outside of my home network, (such as an upstream demand issue, or potentially hardware issue with the home connection) then why was my SSH dropping to an internal server? It made no sense. Finally, after peeking throught the router logs, I think I found the candidiate.
2025 Sep 6 20:52:01 arc_wlsta_monitor info [WIFI.6][SYS]BSS=ath1 ACTION=disassociate, BSSID=[REDACTED], PHY RATE=1 Mbps, TXOP=76, STA=[REDACTED], RSSI=0, RATE=0 Mbps
2025 Sep 6 20:51:56 arc_wlsta_monitor info [WIFI.6][SYS]BSS=ath1 ACTION=associate, BSSID=[REDACTED], PHY RATE=72 Mbps, TXOP=83, STA=[REDACTED], RSSI=-71, RATE=2 MbpsAs much as I love with all my heart watching cmd ping replies scroll by, I couldn’t take it anymore so I crafted up a quick little script:
$lastOk = Get-Date
ping -t [REDACTED] | ForEach-Object {
if ($_ -match "Request timed out") {
$time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Write-Host "$time ALERT: $_" -ForegroundColor Red
}
else {
# Every 5 minutes, print a heartbeat
if ((Get-Date) -gt $lastOk.AddMinutes(5)) {
$time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Write-Host "$time Looks good" -ForegroundColor Green
$lastOk = Get-Date
}
}
}