Before you start, make sure ip
command is available on your system. In modern Linux distributions, ip
replaces older ifconfig
command. If net-tools
package (that includes ifconfig
) is not installed and you prefer using it, you can install it via sudo apt-get install net-tools
.
Use touch /home/pi/wifi-reconnect.sh
to create a shell script file,
with the following content:
#!/bin/bash
SSID=$(/sbin/iwgetid --raw)
if [ -z "$SSID" ]; then
echo "`date -Is` WiFi interface is down, trying to reconnect" >> /home/pi/wifi-log.txt
if command -v /sbin/ip &> /dev/null; then
/sbin/ip link set wlan0 down
sleep 10
/sbin/ip link set wlan0 up
elif command -v sudo ifconfig &> /dev/null; then
sudo ifconfig wlan0 down
sleep 10
sudo ifconfig wlan0 up
else
echo "`date -Is` Failed to reconnect: neither /sbin/ip nor ifconfig commands are available" >> /home/pi/wifi-log.txt
fi
fi
echo 'WiFi check finished'
Or you can also use the following command to download the script.
sudo wget https://raw.github.com/carry0987/Raspberry-Pi-Repo/master/Auto-WiFi-Reconnect/wifi-reconnect.sh
This script uses /sbin/ip
command for disabling and enabling the wlan interface. This is a more modern approach compared to using ifconfig
and is the preferred way in newer Linux distributions.
sudo chmod +x /home/pi/wifi-reconnect.sh
sudo apt-get install cron
Use sudo vim /etc/crontab
to edit crontab
By putting the following content at the end of the file:
* * * * * root /home/pi/wifi-reconnect.sh
Test it by disconnecting from WiFi:
/sbin/ip link set wlan0 down
The script should reestablish the connection within 1 minute.
After the RPi reestablishes the connection, reconnect to the RPi and check the log file:
cat /home/pi/wifi-log.txt
You can also check if your Pi is using full power with
iwconfig
_Tx-Power Gives you the maximum transmission power
and Power Managementf is telling you whether it's trying to save power by lowering the transmission power
If your output has different values, try to set them like this
sudo nano /etc/rc.local
and insertiw dev wlan0 set power_save off
to turn power saving offsudo nano /etc/network/interfaces
and insert20 db is the maaximum value a pi can legally transmit at within the EU. The maximum the pi can send at is 31.