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.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.disabled=1 uci commit wireless wifi fi fi