Skip to content

Instantly share code, notes, and snippets.

@carry0987
Last active April 26, 2024 11:58
Show Gist options
  • Star 41 You must be signed in to star a gist
  • Fork 11 You must be signed in to fork a gist
  • Save carry0987/372b9fefdd8041d0374f4e08fbf052b1 to your computer and use it in GitHub Desktop.
Save carry0987/372b9fefdd8041d0374f4e08fbf052b1 to your computer and use it in GitHub Desktop.
Raspberry Pi 3B+ Auto reconnect to wifi when lost connect

Auto reconnect to wifi when lost connection

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.

Create script file

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

Note:

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.

Make new file executable

sudo chmod +x /home/pi/wifi-reconnect.sh

Install cron

sudo apt-get install cron

Edit crontab

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.

Check log file

After the RPi reestablishes the connection, reconnect to the RPi and check the log file:
cat /home/pi/wifi-log.txt

@LUKSAMA
Copy link

LUKSAMA commented Mar 21, 2024

Reeealy cool script bro... Thanks a lot

@carry0987
Copy link
Author

Reeealy cool script bro... Thanks a lot

Thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment