I recently bought a D-Link DIR 505 router. So far, I’ve got a DLNA server running on it, along with Transmission, a bit torrent client. Life is awesome so far.
I set it up to repeat another WiFi router in my house, the one connected to the internet – using a bridge. It works really well right now.
However, when that WiFi network is down, even the second WiFi network created by my new router won’t come up. I don’t know why as of yet, but I have a dirty hack – if within 10 seconds after boot the router cannot ping my other WiFi router, I will disable that interface and restart the WiFi. This brings the network created by the D-Link up, and I can continue to stream stuff off my hard drive from it.
I created an executable shell script, and placed it in /usr/bin. Then I added a link in rc.local, which is executed after the system is up:
# /usr/bin/wifi_failsafe.sh
logger "Waiting for 10 seconds for network to settle down"
sleep 10
if uci get wireless.@wifi-iface[0].disabled | grep 1; then
logger "Primary interface is disabled"
else
logger "Primary interface hasn't been disabled"
logger "Checking for connectivity"
if ping -c 1 192.168.2.1; then
logger "Connectivity has been established"
else
logger "Connectivity lost. Disabling primary WiFi interface"
uci set wireless.@wifi-iface[0].disabled=1
uci commit wireless
wifi
fi
fi
