Truly WiFi Extender

A WiFi repeater built around Raspberry Pi under 10 US$ and fully customizable

Public Chat
Similar projects worth following
A WiFi repeater built around Raspberry Pi under 10 US$


Truly WiFi Extender is a WiFi repeater based on Raspberry Pi Zero W. It makes a nice alternative to a commercial WiFi repeater combining low-cost (under 10USD) and highly customizable software. It can also run some ad-blocking solutions such as pi- hole as well. This project is one of a kind because most of the projects on GitHub demonstrate how to create a wireless AP to share Internet access obtained using Ethernet.

Lear now to create SD card for Raspberry pi
The implementation
Installing the webUI ,its dependencies and demonstration


This will run on any version of Raspberry Pi. But make sure to have two wifi adapters. Nowadays, Raspberry Pi comes with onboard WiFi. In case you have an older version, you might have to use two USB WiFi adapters. I will be using a single USB WiFi adapter since I am using Raspberry Pi Zero W.


For this project, I will be using Raspbian Stretch Lite. You can download it on the official Raspberry Pi website. You can use the newer version of Raspbian as well.

The main packages on which this project is wpa_supplicant. Since Raspbian is Linux based and uses wpa_supplicant to manage WiFi cards, we can easily set up this computer as a WiFi access point. You even don’t need hostapd,  just wpa_supplicant and systemd-networkd

  • 1 × Raspberry Pi Zero W The Raspberry Pi is a popular Single Board Computer (SBC) in that it is a full computer packed into a single board.
  • 1 × USB WiFi Adapter

  • Added backend server to the UI

    Tejas Lotlikar07/02/2020 at 17:38 0 comments

    This webUI is specifically designed to dynamically connect to a WiFi AP using the browser.


    1. Connect to Access point created by the Raspberry Pi.
    2. Open up a browser and navigate to http://raspberrypi.local:5000
    3. Fill up the SSID and the psk
    4. Click the connect button. Wait for some time(2-3 minutes). Pi will restart itself and now it is good to go!


    How to use

    • Navigate to the webui directory using cd webui
    • Run the command sudo python <a target="_blank" rel="noopener noreferrer" href=""></a>

    You can set the server to auto-start on boot using systemd

  • Autostart server on boot

    Tejas Lotlikar07/01/2020 at 19:09 0 comments

    So, for simplicity of naive users, i will be running a web server(flask, to be precise) in which we need to input the SSID and psk of to AP to which we want to connect. Server still in development. systemd service is ready

    • Create a file called server.service using cd sudo nano /lib/systemd/system/server.service
    • Add the following contents to the file
    • [Unit] 
      Description=WiFi conf server
      ExecStart=/usr/bin/python3 /home/pi/webui/
    • Enable the service using sudo systemctl enable server
    • Start the service using sudo systemctl start server

  • Improved the UI for responsiveness

    Tejas Lotlikar07/01/2020 at 05:11 0 comments

    Used responsive framework to desgn the captive portal

  • Designed the web-ui for the wifi repeater

    Tejas Lotlikar06/30/2020 at 18:20 0 comments

    I noticed that it will not be feasible to change the wifi-supplicant file every time when you want to connect to a new wireless AP, so i am developing a method to connect right through the browser.  Started out late with this idea. Just finished the UI

View all 4 project logs

  • 1


    For flashing the image onto the SD card I have used BalenaEtcher

    • Download the raspbian lite iso file from the Raspberry Pi website
    • Once downloaded, open BalenaEtcher, select the .iso file, select the SD card and click the flash button and wait for the process to finish.
    • Then, open the boot partition and inside it, create a blank text file named ssh with no extension.
    • Finally, create another text file called wpa_supplicant.conf in the same boot partition and paste the following content.
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

    Replace the mywifissid with the name of the WiFi and mywifipassword with the wifi password.

    • Power on the Raspberry pi. To find its IP, you can use a tool like Angry IP Scanner and scan the subnet,
    • Once you find the IP, SSH to your Pi using a tool like PuTTY or just ssh pi@raspberrypi.local, enter the password raspberry and you are good to go.
    • Finally, update the package list and upgrade the packages and reboot Pi.
    sudo apt update -y
    sudo apt upgrade -y
    sudo reboot
  • 2
    Setting up systemd-networkd

    From ArchWiki

    systemd-networkd is a system daemon that manages network configurations. It detects and configures network devices as they appear; it can also create virtual network devices.

    To minimize the need for additional packages,networkd is used since it is already built into the init system, therefore, no need for dhcpcd.

    • Prevent the use of dhcpd 
    sudo systemctl mask networking.service dhcpcd.service
    sudo mv /etc/network/interfaces /etc/network/interfaces~
    sed -i '1i resolvconf=NO' /etc/resolvconf.conf
    • Use the inbuilt  systemd-networkd                                                                                     
    sudo systemctl enable systemd-networkd.service systemd-resolved.service
    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
  • 3
    Configuring wpa-supplicant

    wlan0 as AP

    •  Create a new file using the command.
    sudo nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
    • Add the following content and save the file by pressing  CtrlXY and Enter
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

     Replace the TestAP-plus and 12345678 with your desired values.

    This configuration file is to be used for the onboard wifi Adapter wlan0 which will be used to create a wireless access point.

    •   Give the user read, write permissions to the file
    sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
    •  Restart wpa_supplicant service
    sudo systemctl disable wpa_supplicant.service
    sudo systemctl enable wpa_supplicant@wlan0.service

View all 5 instructions

Enjoy this project?



Kearney wrote 08/27/2021 at 07:23 point

use wifi sco will be better? like esp8266 or esp32. Those are more mature to do such things. For example, lost cost, auto mess, cheaper

  Are you sure? yes | no

MiMBytes wrote 07/19/2021 at 20:04 point

Hi, i cant seem to make pi hole work with this. what interface should i use wlan0 or wlan1 and the static ip? would truly appreciate if you can explain how to install it thanks!? 

ps: great tutorial

***EDIT*** got it working!! if anyone is wondering you need to change DNS to your pi hole static ip:

sudo nano /etc/systemd/network/


  Are you sure? yes | no

josemartinez725 wrote 04/26/2021 at 12:51 point

I've tried running this several times on my pi zero w, and each time, upon rebooting at the end of step five, I see that my wireless internet connection, or any internet connection that the pi had during the initial set up is gone. Instead, on the top right hand corner, where the taskbar is located,  I see that no wireless interfaces are found and that the connection to dhcp is lost. I cannot seem to fix this issue for the life of me. It prevents me from being able to download the necessary dependencies/packages to install the webui

  Are you sure? yes | no

josemartinez725 wrote 04/27/2021 at 23:10 point

As a follow up to the above, I saw that you made the project into an executable bash script, which is much easier for a noob such as myself to deal with. Regardless, I was likewise unable to install the necessary software, and got the following output in my code (note that I put asterisks where the network name would otherwise be)

pi@raspberrypi:~ $ git clone

Cloning into 'wifi-extender'...
remote: Enumerating objects: 65, done.
remote: Counting objects: 100% (65/65), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 65 (delta 18), reused 25 (delta 5), pack-reused 0
Unpacking objects: 100% (65/65), done.
pi@raspberrypi:~ $
bash: No such file or directory
pi@raspberrypi:~ $ git clone
Cloning into 'master'...
fatal: not valid: is this a git repository?
pi@raspberrypi:~ $ ls
Bookshelf  Documents  Music  Pictures  Templates  wifi-extender
Desktop    Downloads  New    Public    Videos
pi@raspberrypi:~ $ cd wifi-extender
pi@raspberrypi:~/wifi-extender $ ls
bash_script  LICENSE  webui
pi@raspberrypi:~/wifi-extender $ cd bash_script
pi@raspberrypi:~/wifi-extender/bash_script $ ls  wifi_extender.bash
pi@raspberrypi:~/wifi-extender/bash_script $ cd wifi_extender.bash
bash: cd: wifi_extender.bash: Not a directory
pi@raspberrypi:~/wifi-extender/bash_script $ chmod +x ./wifi_extender.bash
pi@raspberrypi:~/wifi-extender/bash_script $ ./wifi_extender.bash
Please run as root/sudo
pi@raspberrypi:~/wifi-extender/bash_script $ sudo ./wifi_extender.bash
This script will turn your Raspberry pi into wifi extender! (repeater)
Please choose your plan
1. Install / reinstall
2. Uninstall
3. cancel
Please choose: 1
Please enter the name (SSID) of the network you wish to connect the pi: Papa's Pad
Please enter the password of the wifi network: Jmart082
Please enter the name (SSID) of the new network you want to create:Papa's Extender
Please enter the password of the wifi network: Jmart082

Current configurations: 

WLAN0: wlan0
WLAN1: wlan1
ORIGINAL_PASS: *********
NEW_SSID: *********
NEW_PASS: ************
Do you want to continue? y
Checking interfaces...
Not found interfaces. check them with iwconfig
pi@raspberrypi:~/wifi-extender/bash_script $ 

Any insight into why I got this error message and how to fix it would be appreciated. My iwconfig command gave me the following readout:

pi@raspberrypi:~ $ sudo iwconfig
lo        no wireless extensions.

wlan0     IEEE 802.11  ESSID:"Papa's Pad"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 14:91:82:DA:CC:FC   
          Bit Rate=72.2 Mb/s   Tx-Power=31 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=70/70  Signal level=-28 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:46  Invalid misc:0   Missed beacon:0

  Are you sure? yes | no

Abdullah wrote 07/03/2020 at 10:23 point

This is impressive, Absolutely love this kind of projects!

Keep going :)  


  Are you sure? yes | no

Tejas Lotlikar wrote 07/05/2020 at 12:24 point

Thank you Abdullah.

  Are you sure? yes | no


[this comment has been deleted]

yanyan sukhoi wrote 07/01/2020 at 13:11 point


  Are you sure? yes | no

Sameera shaikh wrote 06/30/2020 at 16:25 point

Nice idea You could have 3d printed a case. Does it work only on Raspberry pi zero?

  Are you sure? yes | no

Tejas Lotlikar wrote 07/05/2020 at 12:25 point

Nice suggestion. I do not know much about designing those 3D printed cases. Hope to learn soon

  Are you sure? yes | no

adam smith wrote 06/29/2020 at 08:16 point

This is a good alternative to chinese wifi repeater. Avoid chinese stuff.

  Are you sure? yes | no

bisedi3020 wrote 06/29/2020 at 08:04 point

Awesome project. This is the best use of a pi zero. You surely deserve an award!

  Are you sure? yes | no

Tejas Lotlikar wrote 06/30/2020 at 12:50 point

Thank you!

  Are you sure? yes | no

aamccurdy wrote 05/29/2020 at 18:36 point

I've got it running on an RPi 3B+. Tested with 3 connected devices. Ran Prime video, Netlix and Speedtest on Chrome. I bought a commercial range extender last year and find the Truly extender to be much easier to set up. I'm looking forward to testing in our camper with the park wifi. Thanks for putting this together!

  Are you sure? yes | no

Tejas Lotlikar wrote 06/03/2020 at 19:24 point

That's nice, thanks for the kind words!

  Are you sure? yes | no

Starhawk wrote 05/10/2020 at 17:08 point

Could this work with one end being eg a 4g modem?

The short version of why I'm asking, is that I know someone who can't afford cable TV and so they livestream from various online sites for several hours a day (hey, you do what works) but the only even half-decent Internet they've historically been able to get is through a mobile provider, and their equipment is *extraordinarily* old. I'm trying to help them move to a new ISP -- the local cable company recently got way better -- but they're extremely not-technical and have a hard time with this stuff, and of course what they have works (sort of) right now, so they're dragging their feet.

Details on the PM/chat side, if you're interested... ;) just poke me.

  Are you sure? yes | no

Starhawk wrote 06/04/2020 at 01:26 point

*poke* *prod* *poke*

You know, while I often talk to myself (so sue me, it helps me cope with living alone) in this context it's really not all that useful...

...especially since I'm trying to talk to someone else and either I've not been heard or I'm being ignored :-/

  Are you sure? yes | no

Tejas Lotlikar wrote 06/05/2020 at 10:07 point

As long as the 4G modem has WiFi connectivity, sure this project will work

  Are you sure? yes | no

Tejas Lotlikar wrote 04/30/2020 at 18:10 point

@Dan Maloney   Yes. I had tried installing openmediavault on pi zero some time back. But i got some php5 error while installing. So i had to download the .deb file and install it manually. 

here is the link for the package and installl it using sudo dpkg -i php5-pam_1.0.3-2_armhf.deb

  Are you sure? yes | no

Dan Maloney wrote 04/30/2020 at 15:49 point

Good idea. Do you think the Pi could serve other duties in addition to being a repeater? Like maybe serving as a NAS or something like that?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates