WiFi extender using Raspberry Pi

by Jun 29, 2020Raspberry Pi

It is always useful to know how to use your Raspberry Pi in pet projects that are actually useful around the house. Especially when you aren’t building something new – using your dormant Raspberry Pi to build useful devices around the house is a fun idea. If you are new to Raspberry Pi I recommend you first take a look at our articles on setup and what it is before undertaking this project as I have assumed that some setup and idea of the user interface is already obtained. If you have all that, then hi! In this article, we’ll build a WiFi extender. At the end of this article you should be able to connect your device to your Raspberry Pi just like you would to any other WiFi network. You can even build this at home and use it as your private WiFi hotspot!

Things you need:

  • Raspberry Pi 3 or 4 – wont work for Zero or 2 [since they are missing either Ethernet port or the on-board WiFi Adapter]
  • Power cable
  • Keyboard
  • Mouse
  • HDMI cable
  • Monitor
  • Ethernet cable

For this, we’ll be using Hostapd (Host Access Point Daemon) to transform network interface cards into access points. What that means is that it allows a host device, in this case our Raspberry Pi, to become a WiFi access point (AP) that other clients (any other device) can connect to and use like one would a modem.

We also use, DNSMASQ to provide domain name system caching and dynamic host configuration protocol (DHCP) for smaller networks. Dynamic Host Configuration Protocol (DHCP) allows us to dynamically assign IP addresses to devices that connect to the AP. Domain Name System (DNS) maps host names to IP number.

In addition to this, we use firewall plugins. To save and load these, we install the net filter persistent and the IP tables persistent plugins.

Setup:

Step 1 – setup your Pi:

Connect all the peripherals to the Raspberry Pi, including the Ethernet cable. Then boot your Raspberry Pi to check if you are running the latest version of Raspbian. To do that, open the terminal and type,

sudo apt-get update

Press enter and wait for the command to execute.

sudo apt-get upgrade

Again wait for the command to execute, after which you can reboot. To do this, type

reboot

Step 2 – Install the pre-requisites:

We need to install Hostapd, DNSMasq and Firewall Plugins.

For Hostapd:

To do this, open your terminal and run the following command,

sudo apt install hostapd

After this, you want to enable the wireless access point and set it to launch automatically on start of the system. To do this, enter

sudo systemctl unmask hostapd

then,

sudo systemctl enable hostapd

For DNSMASQ:

In your terminal, run the following command,

sudo apt install dnsmasq

For Firewall Plugins:

On your terminal,

sudo DEBIAN_FRONTEND=noninteractive apt install -y netfilter-persistent iptables-persistent

Step 3 – Assign a static IP address:

The DHCP, as we discussed earlier needs a static IP address that we will now learn to configure. In the terminal, run

sudo nano /etc/dhcpcd.conf

You will then see the configuration file open up like below

At the bottom of these, add the following lines:

interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

Save this by pressing ctrl+O, then enter and exit by hitting ctrl+X.

Step 4 – Enable routing

At this point your Pi already is a stand alone wireless network, but in order to actually use this, you need to enable other devices to connect to your Pi. To do this, we have to enable routing by creating a routed ap file, by typing the command

sudo nano /etc/sysctl.d/routed-ap.conf

this command creates the file and opens it for editing in the Nano. In the Nano text editor that opens, type the following commands.

net.ipv4.ip_forward = 1

Save this and exit, as before by pressing ctrl+O, then enter and exit by hitting ctrl+X.

Next we add the firewall plugin by typing

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

To ensure that this loads at start up, type

sudo netfilter-persistent save

Step 5 – Configure DHCP and DNS services:

Why we do this is, since we don’t really require all the options included in the default configuration file provided by DNS. So, to do this we rename the default configuration file, replace it with an empty file and edit the new empty file to suit our requirement.

In the terminal, type

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

This will then open the Nano text editor. Then write the following in this new file.

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
domain=wlan
address=/gw.wlan/192.168.4.1

Once again, save and exit, by pressing ctrl+O, then enter and exit by hitting ctrl+X.

Step 6 – Create network name and password for your WiFi:

To do this we have to edit the Hostapd configuration file. To open this file type,

sudo nano /etc/hostapd/hostapd.conf

Now in the Nano editor you can add information about your wireless access point including name and password. Please note that your password should be 8 characters or more and have a mix of letters, numbers and special characters.

interface=wlan0
ssid= <enter a Network Name>
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase= <enter any password>
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Remember the name and password, then save and exit, by pressing ctrl+O, then enter and exit Nano by hitting ctrl+X.

Step 7 – Celebrate with your WiFi

But before you do that, first connect any device to your network to see if it works! Restart your Raspberry Pi first. Then, like any other Wi-Fi network – just search for the available networks on your device and find your Network name. I used the name ‘hi’, and there it is!

Connect to it after entering the password, and there you go! Time to celebrate 😊!

Creating a multiplication Skill in Alexa using python

Written By Jyotsna Rajaraman

Hi! I'm Jyotsna, an electronics and communication undergrad who likes reading, writing, talking and learning. So when it comes to teaching, all my favorite things come together! I hope my articles have helped and taught you something. 🙂

RELATED POSTS

How to Setup an NGINX Server on Raspberry Pi ?

How to Setup an NGINX Server on Raspberry Pi ?

What is NGINX ? NGINX is a popular lightweight web server application you can install on the Raspberry Pi to allow it to serve web pages. In its initial release, it functioned for HTTP web serving. It is a web server that can also be used as...

FM Radio Transmitter with Raspberry Pi

FM Radio Transmitter with Raspberry Pi

We’ve all listened to the radio and sang along to the songs, atleast in the car. But have you ever found yourself switching through several channels because you couldn’t find even one song that YOU like? In this article we will learn how to build a FM radio...

Raspberry Pi Camera and its Variety

Raspberry Pi Camera and its Variety

Choosing a suitable raspberry pi camera for your projects can get really difficult. RPI camera v1, RPI camera v2, RPI NOIR camera, and the list continues. Each one has different properties and should be used according to them. They have been used in various fields and...

Using Raspberry Pi as various Servers

Using Raspberry Pi as various Servers

Raspberry Pi is a widely popular SoC, that is versatile and easy to use for even beginners. If you are new and are unfamiliar with Pi, take a look at these articles. Regardless of the model of Raspberry Pi you have, I am sure you have discovered a plethora of projects...

SQLite Database on Raspberry Pi

Welcome to another tutorial on Raspberry Pi. In this tutorial, we will see how to use the SQLite Database on Raspberry Pi. Apart from the installation and a few basic commands, in the end, we shall look at a simple project to log sensor data into an SQLite database....

Mosquitto MQTT Broker on Raspberry Pi

This tutorial will show you what is Mosquitto MQTT Broker and how to install it on Raspberry Pi. Contents What is MQTT?Installing Mosquitto MQTT on Raspberry PiCreating an MQTT Broker on Raspberry PiSubscribe to a TopicPublish a message to a TopicSample...

Evolution of the Raspberry Pi – A Comparison

Evolution of the Raspberry Pi – A Comparison

The Raspberry Pi is an inexpensive credit card-sized micro-computer. The Raspberry Pi was originally designed as a way to teach how computers work and the rest of computer science in general. It was originally developed in the UK by a team that included Eben Upton,...

Recording audio on your Raspberry Pi

Recording audio on your Raspberry Pi

Raspberry Pi can record and playback fairly good quality audio through its USB 2.0 ports. For recording audio and playback we need two peripheral devices, a USB microphone, and a speaker. You can choose to use a USB speaker, or a speaker with a 3.5mm sound jack....

Tutorial: Dropbox with Raspberry Pi

Tutorial: Dropbox with Raspberry Pi

Many Raspberry Pi projects require synchronization of files over more than just one device. Dropbox, which is a popular file-hosting service, can be used for this with ease. Synchronizing data between different devices may seem a little tricky, especially since the...

Creating a Raspberry Pi Network Scanner

Creating a Raspberry Pi Network Scanner

The Raspberry Pi network scanner that we will be creating in the following tutorial will scan through your local network and get the local IP address and MAC address of all devices connected to your network. To achieve this we are going to use the scapy module in a...

VIDEOS – FOLLOW US ON YOUTUBE

EXPLORE OUR IOT PROJECTS

IoT Smart Gardening System – ESP8266, MQTT, Adafruit IO

Gardening is always a very calming pastime. However, our gardens' plants may not always receive the care they require due to our active lifestyles. What if we could remotely keep an eye on their health and provide them with the attention they require? In this article,...

How to Simulate IoT projects using Cisco Packet Tracer

In this tutorial, let's learn how to simulate the IoT project using the Cisco packet tracer. As an example, we shall build a simple Home Automation project to control and monitor devices. Introduction Firstly, let's quickly look at the overview of the software. Packet...

All you need to know about integrating NodeMCU with Ubidots over MQTT

In this tutorial, let's discuss Integrating NodeMCU and Ubidots IoT platform. As an illustration, we shall interface the DHT11 sensor to monitor temperature and Humidity. Additionally, an led bulb is controlled using the dashboard. Besides, the implementation will be...

All you need to know about integrating NodeMCU with Ubidots over Https

In this tutorial, let's discuss Integrating NodeMCU and Ubidots IoT platform. As an illustration, we shall interface the DHT11 sensor to monitor temperature and Humidity. Additionally, an led bulb is controlled using the dashboard. Besides, the implementation will be...

How to design a Wireless Blind Stick using nRF24L01 Module?

Introduction Let's learn to design a low-cost wireless blind stick using the nRF24L01 transceiver module. So the complete project is divided into the transmitter part and receiver part. Thus, the Transmitter part consists of an Arduino Nano microcontroller, ultrasonic...

Sending Temperature data to ThingSpeak Cloud and Visualize

In this article, we are going to learn “How to send temperature data to ThingSpeak Cloud?”. We can then visualize the temperature data uploaded to ThingSpeak Cloud anywhere in the world. But "What is ThingSpeak?” ThingSpeak is an open-source IoT platform that allows...

Amaze your friend with latest tricks of Raspberry Pi and Firebase

Introduction to our Raspberry Pi and Firebase trick Let me introduce you to the latest trick of Raspberry Pi and Firebase we'll be using to fool them. It begins with a small circuit to connect a temperature sensor and an Infrared sensor with Raspberry Pi. The circuit...

How to implement Machine Learning on IoT based Data?

Introduction The industrial scope for the convergence of the Internet of Things(IoT) and Machine learning(ML) is wide and informative. IoT renders an enormous amount of data from various sensors. On the other hand, ML opens up insight hidden in the acquired data....

Smart Display Board based on IoT and Google Firebase

Introduction In this tutorial, we are going to build a Smart Display Board based on IoT and Google Firebase by using NodeMCU8266 (or you can even use NodeMCU32) and LCD. Generally, in shops, hotels, offices, railway stations, notice/ display boards are used. They are...

Smart Gardening System – GO GREEN Project

Automation of farm activities can transform agricultural domain from being manual into a dynamic field to yield higher production with less human intervention. The project Green is developed to manage farms using modern information and communication technologies....