Categories
Tech Works

Standby Internet with Raspberry Pi



The search for an alternate source of internet began with an extended downtime on my regular internet connection. The internet folks at ACT fibernet somehow managed to find a switch replacement on their end, a problematic affair for > 3 days. That’s a topic for another day.

We all know what complications one goes through without the internet, especially with the Covid 19 induced Work From Home’s. I had another problem steaming from my affliation with internet connected devices at home. The first internet connected bulb I bought was now rendered useless. Now, it so happened that the light was turned off (on the app, with the physical switch turned on), when my home internet went awry. Given the way these bulb’s function, I was unable to turn it on without first somehow connecting the bulb to the internet. Granted, the device could have been reset, but that defeat’s the grandeur of living with a smart blub.

Thus began my search for a jugaad. I had an ASUS RT-AC59U router and a first gen Raspberry Pi B+ lying around at home. What I managed to tie together, must also be useful with any other pair of router or Raspberry Pi.

The ASUS RT-AC59U support Dual WAN. Meaning, you can have a primary source for your internet (WAN), along with a secondary source to fall back on, in case the first happens to have some issues. The plan was to put the secondary WAN to use, with the 4G connection on a mobile phone. A simpler solution would have been to plug in the phone to the router over USB, but my router unfortunately did not support 3G / 4G connections.

The Raspberry Pi had a plain old install of Raspbian, and was gathering dust in a corner. Here’s how I put that to use as a bridge between the phone and the router, and the rest of my home.

First, I installed the Bridge-Utils on the RPi,

sudo apt-get install bridge-utils

Next was to plugin the phone via a USB cable to the RPi, and the RPi via a Ethernet cable to my laptop. Now, the moment USB cable is plugged in, the (Android) phone must begin to charge, and a notification must pop up. Switch over from the “charge only” setting to the “USB Tethering” setting at this point.

Next, to setup the Bridge Configurations.

sudo brctl addbr secondarywan
sudo brctl addif secondarywan eth0
sudo brctl addif secondarywan usb0
sudo brctl stp secondarywan on
sudo ifconfig secondarywan up

After a minute or so, a notification must pop up on the (Windows) laptop with regard to the newly detected network. The rest of the internet must be accessible on the laptop at this point. Once we verify this connection is stable, we proceed to make these configuration more non-interventional.

Save the above commands as a shell script somewhere on the RPi. In my case, it was at /opt/bridgeconfig.sh. We also need a sudo chmod +x /opt/bridgeconfig.sh.

#!/bin/bash

brctl addbr secondarywan
brctl addif secondarywan eth0
brctl addif secondarywan usb0
brctl stp secondarywan on
ifconfig secondarywan up

Next we ensure this script gets executed on RPi startup. Add the following line to /etc/rc.local

sudo /opt/bridgeconfig.sh

Now all that is required is to shutdown the RPi, and setup our router. The secondary WAN setup is pretty straightforward on the Asus RT-AC59U, but here is the snapshot of my configs.

Atleast on my router, no other configurations were required. I was able to connect the ethernet cable from RPi to LAN 1 port on the router, switch on the RPi, and voila, in a minute or two, the router made me smile.

I got a decent, stable 8 MBPS on the Vodafone (Ah, Vi) connection. I still had to switch over to my (other) phone for all the bandwidth hungry slack calls, but atleast this allowed all my internet connected devices to spring back to life. And yeah, it also brought back my blog to life after 17 long months.

Update 20th Aug 2021
To top it up, here’s a small script written to alert me when one of the WAN connections go offline on the ASUS Router – https://github.com/immanuelnoel/asuswrt-api

Hope the article add’s one new soul to the RPi community.

A Log Analyzer with the ELK Stack, Nginx and Docker

By Immanuel Noel

A techie at heart. Works with Adobe at Bangalore, India. Currently do DevOps. Been a part of the ColdFusion Engineering, Flash Runtime Engineering, Flash Builder Engineering teams in the past. Was a Flash Platform Evangelist, evangelizing the Adobe Flex platform. Spoke at numerous ColdFusion / Flash and Flex tech conferences. This blog is a collection of some of my strides with technology.

More on me on the home page

Leave a Reply

Your email address will not be published. Required fields are marked *