I ran into something like this as well on my Relay it would just stop working. not sure why? I thought it was just my IPV6 going stale but my ipv4 didn't work either, so I used the crontab to run a script every minute that sends one ping to my gateway to ensure connectivity or Restart the network services. which then fixes the connection.
Here's the script below.
#!/bin/ash
ping -c4 192.168.1.1 > /dev/null
if [ $? -eq 0 ]
then
exit 0
else
/etc/init.d/network restart
Just replace the 192.168.1.1 with your address and setup the Cron on the Luci System>Scheduled Tasks.
Just a Note I googled this script a while back and edited it a bit so if any of you can make it better, do it; no balls.
@Broseidon
i pasted it all, from " #! to restart " , my openwrt buffalo g450h is 192.168.1.1 so i left it as it is. is that correct ?
@slh
its a bug as from client side when openwrt is idle it will show 1 MBit/s permanently, it gets fixed by restarting wlan0 on the same client and varies between 39-104 MBit/s when active
@slh designed to disconnect and stay disconnected till i reset the wireless interface manually ...everytime ?
@PolynomialDivision
i have no idea about the driver but it did the same on an old asus, buffalo and netgear wireless adapters. my theory is that passing cars between ap and client will corrupt at a certain point the signal requiring new reset, handshake or whatever...
Designed to fall down to 1 MBit/s on an idle link, but to ramp up to maximum speed when needed; I'm just saying that seeing 1 MBit/s bitrates (whenever your wifi is idle) is expected and normal behaviour.
@slh as said, my problem is that when i get 1 MBit/s it remains permanent at 1 and idle till i reset it and that's a bug at least in my opinion !
no one said it wont rise to higher speeds in other cases .
Uh....In order for the script to work you need to create a file on your device example like "/etc/customscript.sh" that holds the code inside the Code Tags above. And in some cases you may need to "chmod +x /etc/customscript.sh" in order to get it to execute.
and Another note. I realized that my script was incorrect cause I left in "BASH" instead of "ASH" haha woops. I edited it to just work I would imagine.