11

The wireless connection in my house unfortunately often disappears, requiring a wireless router reboot.

Making this worse is that my ubuntu media pc, does not automatically reconnect to the wireless network when it's been gone, and then comes up about a minute later. The network in question is setup as "connect automatically" in the network settings.

If I manually select my wireless network, using the wireless icon in the topright of my screen, everything works fine, until the next time that wireless goes down.

I'm looking for a way so I don't have to remember to do this manually all the time.

  • I have the exact same problem. I'd be satisfied with a solution that used, e.g. a cron script every 5 minutes asking for Network Manager to reconnect, if it's not connected already. – Marius Gedminas Sep 11 '10 at 21:57
  • @Marius do you have such a script? – Oli Sep 12 '10 at 9:21
  • Please add some hardware information to your question. – Jorge Castro Sep 16 '10 at 17:49
  • @Oli: sadly, no. – Marius Gedminas Sep 28 '10 at 3:36
3

I had a similar problem with my laptop's Intel Wireless WiFi 5100 half height card and the driver iwlagn driver. This problem is a known issue with the iwlagn driver, and the best workaround is to disable 802.11n on the card.

To disable 802.11n on this card create/edit your /etc/modprobe.d/options.conf file:

sudo -H gedit /etc/modprobe.d/options.conf

And add the following to it.

options iwlagn 11n_disable=1 11n_disable50=1
3

This seems to be posted all over the net with no good solutions. I guess the best fix/workaround is to make it check for internet connectivity and if it is not there then reconnect. I did this via a ping test to google.com and then I simply made it restart networking. Code is not tested (the restart part and the cron part, if statement tested), so I'll just wait for it to disconnect at some point. I have an Ubuntu Server 12.10, so no GUI, and is a pain to connect monitor and keyboard every time the wireless stuffs up.

Cron part done via webmin so Idk much about it. Script is as follows:

# edited by dim_voly for networking restart on no pingback every 5 mins

#!/bin/bash
# Name of File: networkingCron
# Purpose: to check if the internet is up (via ping test to google) and if not, restart networking service
# this script is invoked via cron, ideally every 5 mins.

#check if there is internet via ping test
if ! [ "`ping -c 1 google.com`" ]; then #if ping exits nonzero...
   sudo service networking restart #restart the whole thing
   echo Networking service restarted due to no ping response from google.com
fi

echo Script 'networkingCron' completed, if no message above then there was no network restart.

# dunno how to restart the wifi only since that is the only active connection that server uses.

# also I don't think those echos go anywhere

Make sure to run as root and make sure the script has execute (u+x) permissions.

links:

2

More modern version of @DougD script

#!/bin/bash    
wlan=$(/sbin/ifconfig wlan0 | grep inet\ addr -c)
if [ "$wlan" -eq 0 ]; then    
    /sbin/ifdown wlan0 && /sbin/ifup wlan0
else    
    echo interface is up    
fi
2

This is an alternative using service network-manager restart:

#!/usr/bin/env bash


# 1. copy this script into
# /usr/bin

# 2. change permissions
# root:/usr/bin# chmod +x checkwifi.sh 

# 3. add to cron as root
# sudo su
# crontab -e

# add this to check your wifi every minute
# * * * * * /usr/bin/checkwifi.sh

is_ok=$(/sbin/ifconfig wlp2s0 | /bin/grep inet\ addr -c)

if [ "$is_ok" -eq 0 ] ; then

    # restart
    /usr/sbin/service network-manager restart

    # wifi is ok
    /bin/echo $(date) "wifi was restarted" >> /user/user/Dropbox/wifi.log
    /bin/echo $(/sbin/ifconfig wlp2s0) >> /home/user/Dropbox/wifi.log

else

    # wifi is ok
    /bin/echo $(date) "wifi is ok" >> /home/user/Dropbox/wifi.log
    /bin/echo $(/sbin/ifconfig wlp2s0) >> /home/user/Dropbox/wifi.log

fi
2

Just create a new file vi /root/checkwanup and add this content:

#!/bin/bash    
wlan=`/sbin/ifconfig wlan0 | grep inet\ addr | wc -l`    
if [ $wlan -eq 0 ]; then    
    /sbin/ifdown wlan0 && /sbin/ifup wlan0
else    
    echo interface is up    
fi

Then chmod 555 /root/checkwanup and add it to your crontab:

crontab -e
*/15 * * * * /bin/bash /root/checkwanup

Source: http://sirlagz.net/2013/01/10/script-wifi-checker-script/

  • add LANG=C or the grep inet\ addr may fail. – Mawi12345 Oct 12 '15 at 8:09
1

You might want to have a look at using wpa_supplicant instead of network-manager, but that doesn't really matter when on a media-center. wpa_supplicant isn't as flexible as network-manager but afaik it doesn't give up after trying three times. have a look at this answer.

1

Here is my version - it works with NetworkManager:

#!/bin/bash    
wlan=`/sbin/ifconfig wlan0 | grep inet\ addr | wc -l`    
if [ $wlan -eq 0 ]; then   
    /usr/bin/nmcli nm wifi off && /usr/bin/nmcli nm wifi on 
fi

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.