Introduction: Cheap WiFi Range Extender for IoT
How to build your own WiFi extender from a cheap $2-$8 ESP8266 WiFi module
***EDIT: Since the writing of this instructable, the firmware has been improved greatly, with the additional of a GUI settings page (like a normal router), firewall, power management, indicator LED, and automatic mesh networking (connect multiple units together) features! I will update this instructable at some point, but meanwhile, check out the details at Martin's GitHub page: link***
Notes: It will have slower connection speeds the farther the extender is away from your router, but fast speeds are not necessary for many IoT projects.
I needed a cheap way to increase WiFi range so that a IoT snail mail alert device could reach a distant WiFi router to connect to the internet and send notification to my phone. I stumbled upon Martin Ger's WiFi NAT Router firmware for the ESP8266 WiFi module, flashed it onto my $2 ESP-01 WiFi module, and it works quite well.
The router my extender connects to only reaches about 20 feet due to a wall, but with the extender plugged in 10 feet to 50 feet away from it, the connection reaches 310 feet and is just fast enough to stream YouTube!
Step 1: Download the Files
Download the .zip file called "ESP8266Extend.zip" from http://makersa.ga which contains the firmware files and software tools you will need.
Step 2: Extract (Unzip) the File Folder
Unzip a.k.a. extract the zip you just downloaded to a location on your computer that is easy to find.
On Windows, this is done by right-clicking on the zip, and clicking "extract all".
Step 3: Get the Required Parts
You will need to acquire a few parts. the shopping links are below. You might be able to find cheaper identical parts somewhere else.
Step 4: Wait for the Parts to Arrive
Step 5: Download the Driver
In order to get the USB adapter talking to the computer, you may need to install the CH340 driver.
The subfolder from the zip you downloaded and extracted is called "CH341SER_win" for Windows or "CH34x_Install_mac" for Macs.
Simply open the program in the folder and install the drivers.
Step 6: Flash the Extender Firmware Onto the ESP8266
Plug the ESP01 into the USB adapter, plug it all into your computer, and flip the physical switch to "Prog" programming mode not "UART" mode.
Wait a minute for the drivers to initialize, then open up the program in the subfolder called "flash_download_tools_v3.4.1_win".
Open the next subfolder called "_MACOSX" if you are using a Mac, or open the subfolder called "FLASH_DOWNLOAD_TOOLS_V3.4.1_WIN" if you are on a Windows PC.
Run the application called "ESPFlashDownloadTool_v3.4.1" and select "ESP8266" after that.
Setup that program to the setting shown in the screenshot below if you are using the ESP01 from the earlier shopping step:
1. If you are using a NodeMCU or Wemos D1 Mini module instead of the ESP01 or ESP07, switch the part that says "8Mbit" to "32Mbit" instead
2. For the ESP01 or ESP07, under "Download Path Config", click the three dots button for each section and browse to find the "firmware_sdk_1.5.4". Click each one and type out their names to the right as shown in the screenshot e.g. "0x00000" and "0x40000"
2.2. If you are using a different ESP8266 module variant instead of the esp01 I suggested, use the folder named "firmware" and use those .bins instead with their corresponding names to the right.
3. Select the COM port you want, and set the baud rate to "115200", then click "start", "flash" or "connect".
4. When it says "finish", unplug your adapter and ESP8266 module from your computer.
5. Flip the physical switch on the USB Adapter back to non-programming non-flash mode. This is important!
Step 7: Configure Your Extender
You must connect a computer to your extender in order to configure it. You can do this by using a serial terminal app such as the Arduino IDE serial monitor, or a program such as Putty.exe, setting the baud rate to "115200" with NL&CR (new line and carriage return) enabled then physically plugging the extender into your computer, OR you can use a connect wirelessly by connecting your device to the extender's WiFi (default name is "MyAP") and then use a Telnet app such as Putty.exe or JuiceSSH and adding a new connection on the ip address "192.168.4.1" with the TCP port set to "7777".
I have used the JuiceSSH app for Android and Arduino IDE Serial Monitor without hiccups
Once you have connected over telnet or serial, type the following bolded commands each followed with hitting the enter key:
(Without quotes, and replacing the hashtag symbols with you desired settings.)
set ssid #### This sets to the name of the router hotspot you want the extender to extend.
set password ##### This sets the password of the router hotspot you want the extender to extend.
set ap_ssid ##### This sets the name of the extender's hotspot.
set ap_password #### This sets the password of the extender's hotspot. NOTE: the password must be more than 8 characters long!
set ap_open 0 This turns password protection ON so only people who know the password can connect to the extender.
save This saves your settings.
quit This terminates a remote session.
So for example:
set ssid homewifi set password 12345678 set ap_ssid makerextender set ap_password 1234 set ap_open 0 save quit
Unplug the extender. That's it for setup!
Tips:
You ought to wait a couple seconds between typing in each command, and you might need to type save after each command!
If you need to wipe all your settings back to default, you can type reset factory followed by save
For a master list of all possible commands, you can type help.
To see your configuration, you can type show .
EDIT: If you are using the Instructables mobile app, the bolding of commands in this step might not show as bolded. Let me know if that is the case!
Step 8: Encase Your Extender
You can use an plastic container to house your extender.
I plugged the extender (both the esp01 and the usb adapter) into a USB charger, and stuffed it all into half of a tootbrush travel case, then hot glued a seal to rain proof it.

Participated in the
Microcontroller Contest 2017
49 Comments
Question 1 year ago on Step 3
Can you just use an Arduino Uno board to connect the ESP-01 to the PC? (wiring up Tx, Rx, etc.).. or does it HAS to be with an ESP-01 Adapter?
2 years ago on Step 8
Hello, i've flashed the esp01 just the way it must be and i have a message "disconnect from ssid ssid, reason 201" i search the net but nothing works, i tried to enter all the commands anyway but nothing...
Nope....i've juste chose updated version of download tool and new 0x0000 and 0x02000, it works but with 48kbyte of ram, the speed is slowing down...that goes with http calls apparently....Anyway, i'm gonna use it...so many application i have to deploy !!
3 years ago
The flashing did not work with baud rate 230400 after changing 115200 and reattaching Wemos it flashed but the MyAP was not shown. Unplugged and plugged again and the LED started blinking very fast and still no MyAP. Now I am neither able to view in Serial Monitor nor flash that Wemos again, even with Blink. For Serial Monitor, it is saying port busy and for flashing It says Access Denied. Do not have the courage to devote one more Wemos when all shippings are delayed.
Reply 3 years ago
I have made a project of Wifi extender using pi zero w which is much simpler than this instructable. Also you do not need to install any additional packages. Check it out https://www.instructables.com/id/Truly-WiFi-Extender/
Question 5 years ago on Step 7
Wifi (default name is "MyAP") not show in Nodemcu esp8266 after Flash the Extender Firmware. please help
Answer 3 years ago
I am facing same Issue did you know how to solve this?
3 years ago
this project i tried several time if the wifi ssdi have space..this repeater didnt work..but if the ssdi yiu want ro extend is in one word or no sapace it will work..
4 years ago
Can I use it many of these extender connected together?
Reply 3 years ago
Yes, it's called mesh, refer to official Github https://github.com/martin-ger/esp_wifi_repeater
5 years ago
works fine on a -201 module. That's the white one with the external IPEX antenna connector. Waiting for a 6dB antanna to extend the operating distance even more!
Has someone tried using ESP32? Is the source code aviable? The ESP32 handels the WLAN tasks with a dedicated processor so it might be possible to handle additional tasks.
Thanks for the great work!
Reply 4 years ago
Can't flash it on esp-201.
flash completes but then nothing.
works fine on esp 01
Reply 3 years ago
There is one https://github.com/jonask1337/esp-lwip
Reply 4 years ago
I reached out to the developer, Martin Ger, and he stated there is not ESP32 support currently nor are there any plans to port it since the ESP32 is much pricier.
Tip 3 years ago
Before flashing anything, it's good practice to backup what's in there, here is nice tutorial:
https://www.instructables.com/id/How-to-Backup-Original-Flesh-File-From-Esp8266EX/
5 years ago
Have you ever run this of a power bank? Is it power hungry or low power long run time? I dont have ac power and would like to run one off a battery bank..
Reply 4 years ago
It is power hungry about 250ma peak so it only lasted a few hours on my power bank. Try a solar panel and a battery.
5 years ago
my USB adapter doesn't have the physical switch : ( what should i do now ?!
Reply 4 years ago
I believe you will need to solder a jumper wire between CHIP_EN pin and VCC pin.
Reply 5 years ago
this is the solution
i found it myself and its work well
if you are the on that have a USB serial adapter that doesn't have any switch with this trick you can make it as the one that this article mention
you should know that the thing that you have is just a serial adapter and you cant program your esp with that
to do programing thing you have to this
if you are using a button like this you have to push it before you plug in an hold it tell programing done
Question 4 years ago
Great project that I've implemented to enhance the wifi network to my external camera. Unfortunately I can ping the camera but I can't receive a picture. What maybe wrong. Any hint is appreciated.