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
Thans for your feedback!
The issue you encountered might be due to the
net-tools
package, which includes theifconfig
command, not being installed on your system. Your suggestion to replace it with/sbin/ip
not only makes the script more aligned with current best practices (asifconfig
has been deprecated in favor of theip
command in most Linux distributions) but also ensures better compatibility with the latest versions of Pi OS Lite.Considering that the
ip
command provides a more modern and universal interface for network management and is a standard part of many Linux systems, I will update the script to use/sbin/ip
. Regarding thenet-tools
, I will add a note to the script's documentation to help others who might face the same problem.Thanks again for your thorough feedback and suggestion. It's precisely contributions like yours that help improve the project for everyone :)