Introduction: Cheap WiFi Range Extender for IoT

Picture of 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 "" from 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.

ESP8266 ESP01 + USB Adapter Pair - DealExtreme

Step 4: Wait for the Parts to Arrive

Picture of 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

Picture of 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 "" 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

Unplug the extender. That's it for setup!


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

Picture of 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.


wcullison (author)2017-11-05

Everything appears to be configured correctly but I get a reason 15 disconnect. Here is what i get after it starts:


state: 2 -> 0 (0)


state: 0 -> 2 (b0)

state: 2 -> 3 (0)

state: 3 -> 5 (10)

add 0

aid 6


state: 5 -> 2 (fc0)

rm 0

disconnect from ssid ATT7i9w6e3, reason 15

Did I setup something wrong? Your help would be greatly appreciated.

wcullison (author)wcullison2017-11-23

Actually I didn't realize that what I saw on the serial was of no consequence. It was working all along. Great project and much enjoyed and useful as I start IOT projects around my property.

Maker Saga (author)wcullison2017-11-20

Maybe this will help? Let me know

miniscientist (author)2017-07-09

how do i set an ssid that has a space

Maker Saga (author)miniscientist2017-11-21

You can use "%20" without quotation marks between character to use spaces.

VasantR3 (author)2017-11-03


I am trying to flash it on a esp12E. Which binaries do I use?


Maker Saga (author)VasantR32017-11-20
OliverY2 (author)2017-10-27

I used ESP-07, after flash, and restart module as non-programming mode, it keeps saying no ssid found. why?

OliverY2 (author)OliverY22017-10-27

I followed your step 6 with firmware_sdk_1.5.4 to flash the module by the way.

Andrej LadislavK (author)2017-09-11

if is the ap_ssid like A B C D, it will save only first letter and nothing after space

this question was solved on the link:

you can create a ssid "A B C D" by the comand "set ap_ssid A%20B%20C%20D"

JoakimJ7 (author)2017-07-16


i have problem with my wemos d1 mini. installed the firmware with esp8266 download tool and the blue led on my wemos is blinking until i get the green "finish"-symbol in the program. But i cant find ssid "MyAP". i think the problem is that i dont get the .bin-files to the board because my old scetch is still loaded on the board.



Maker Saga (author)JoakimJ72017-07-16

Mine had an Arduino sketch loaded on it when I flashed the new firmware, so that shouldn't be the source of the problem. I don't know.

JoakimJ7 (author)Maker Saga2017-07-16

Ok, i think it's me setting it up wrong. The only connection to the D1 mini is an usb-cable from my PC.
1. Install driver CH341SER_win
2. Start ESPFlashDownloadTool_v3.4.1 and esp8266.
3. Use bins in firmware-folder.
4. Chance to 32mbit.
5. Clock start
6. Unplug D1 mini when program show "finish".

Reconnect D1 mini and search for wifi Network but unsuccessfully.

So i miss something? My D1 mini miss the uart/prog switch?

Maker Saga (author)JoakimJ72017-07-16

Hmm... Do you have a d1 mini pro, or d1 mini lite? Lite version uses ch340g driver which I supplied, but the Pro version of the D1 mini requires a different driver

I am not sure if the firmware is compatible with both.

Try flashing it again ensuring you have the correct COM port, then hit the reset button on the d1, then use a different device (phone, other desktop, ipod) to scan again for the hotspot. You could shut off wifi on that device, then enable it once more before scanning (refresh) to look for the hotspot ap.

Let me know here what the result was! I am happy to help in whatever extent I am capable. Also, you can always ask the helpful people at forum for help.



JoakimJ7 (author)Maker Saga2017-07-16

i figure it out now, i missed to mark the two binary files to the left so they turn green. explains how my old sketch was still on the board.

Now it works very well. Thank you very much.


Maker Saga (author)JoakimJ72017-07-17

I'm glad you figured it out!

andronykus made it! (author)2017-07-04

multumesc mult , tot sa primit

Maker Saga (author)andronykus2017-07-04


johnnyfrx made it! (author)2017-06-15

This worked LIKE A CHARM! My nephew is visiting and brought his PS4 which wasn't happy with the distance to our main router. I mounted this Gizmo of Goodness half way in between and all is good in Teenage Gameville again. THANK YOU SIR!

Maker Saga (author)johnnyfrx2017-06-15

Glad to hear it!

Dram229 (author)2017-06-08

What a great idea. I will try this one out. TY.

R9758 (author)2017-05-15

Can I change the device's default mac adderess?

Maker Saga (author)R97582017-05-22

That capability is not around at this time from what I can tell.

Saeed Nazarian (author)2017-02-24

great work. Do you write the code with arduino IDE? could i have source code?

I did not write the code with the Arduino IDE, however, you can use the Arduino IDE serial monitor to do the configuration once Martin's firmware is flashed to your module. Here is the open source code:

About This Instructable




Bio: We are two brothers who like to make things.
More by Maker Saga:Makeshift Wave Powered Cooling MatBroken Toy Drone Hardware HackMusical Instrument Using Arduino + Ultrasonic Distance Sensor
Add instructable to: