{"id":16093709,"url":"https://github.com/dchristl/esp32_nat_router_extended","last_synced_at":"2025-10-23T07:30:31.149Z","repository":{"id":40562553,"uuid":"417524215","full_name":"dchristl/esp32_nat_router_extended","owner":"dchristl","description":"a simple ESP32 NAT Router with some additional features","archived":false,"fork":false,"pushed_at":"2024-04-26T15:03:27.000Z","size":144646,"stargazers_count":295,"open_issues_count":24,"forks_count":55,"subscribers_count":21,"default_branch":"master","last_synced_at":"2024-10-09T17:05:49.063Z","etag":null,"topics":["esp32","iot","microcontroller","wifi"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dchristl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-15T14:13:16.000Z","updated_at":"2024-10-09T07:40:37.000Z","dependencies_parsed_at":"2024-02-09T15:46:31.578Z","dependency_job_id":"7964971c-19a2-4fc9-860c-345700b569bf","html_url":"https://github.com/dchristl/esp32_nat_router_extended","commit_stats":null,"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dchristl%2Fesp32_nat_router_extended","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dchristl%2Fesp32_nat_router_extended/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dchristl%2Fesp32_nat_router_extended/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dchristl%2Fesp32_nat_router_extended/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dchristl","download_url":"https://codeload.github.com/dchristl/esp32_nat_router_extended/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237793861,"owners_count":19367421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32","iot","microcontroller","wifi"],"created_at":"2024-10-09T17:01:11.987Z","updated_at":"2025-10-23T07:30:30.622Z","avatar_url":"https://github.com/dchristl.png","language":"CSS","funding_links":["https://www.buymeacoffee.com/dchristl"],"categories":["CSS"],"sub_categories":[],"readme":"# ESP32 NAT Router Extended\n\nThis is a firmware to use the ESP32 as WiFi NAT router. It can be used as\n- Simple range extender for an existing WiFi network\n- Setting up an additional WiFi network with different SSID/password for guests or IOT devices\n\nThis is an extension of the great work of [martin-ger's ESP32 NAT Router-project](https://github.com/martin-ger/esp32_nat_router). I used his project as a starting point for learning microcontroller programming and extended it with some features for my use case. \n\n## Features / Usage scenarios\n- Extend range of WiFi network (Repeater)\n- Additional network for guests\n- Portable usage with a small, low power device (battery powered)\n- [Bypass restrictions](docs/advanced.md#advanced-configuration) in public WiFis, like device and rate limit\n- Scanning for APs (s. [limitations](#wifi-scanning-limitation))\n- User friendly UI with mobile support\n- [Resetting the device](docs/advanced.md#resetting-the-device-erasing-the-flash) in UI and with Pin/Button\n- [OTA-Updates](docs/ota.md)\n- Keep connection alive on networks with forced disconnect\n- Secure frontend by password or complete disabling\n- Show connected state and quality in UI\n- Disable the on board indicator LED \n\n## First Boot\nAfter first boot the ESP32 NAT Router will offer a WiFi network with an open AP and the ssid \"ESP32_NAT_Router\". Configuration can either be done via a simple web interface or via the serial console. \n\n## Web Config Interface\nThe web interface allows for the configuration of all parameters. Connect you PC or smartphone to the WiFi SSID \"ESP32_NAT_Router\" and point your browser to \"http://192.168.4.1\". This page should appear:\n\n![image](docs/index.png)\n\nFirst enter the appropriate values for the uplink WiFi network, the \"STA Settings\". Leave password blank for open networks. Click \"Connect\". The ESP32 reboots and will connect to your WiFi router.\n\nNow you can reconnect and reload the page and change the \"Soft AP Settings\". Click \"Set\" and again the ESP32 reboots. Now it is ready for forwarding traffic over the newly configured Soft AP. Be aware that these changes also affect the config interface, i.e. to do further configuration, connect to the ESP32 through one of the newly configured WiFi networks.\n\n## Screenshots\n\n![image](docs/scan.png)\n![image](docs/enterprise_wifi.png)\n![image](docs/advanced.png)\n![image](docs/portmap.png)\n![image](docs/reset.png)\n![image](docs/lock.png)\n![image](docs/ota.png)\n![image](docs/unlock.png)\n![image](docs/connected_clients.png)\n\n\n## Flashing the prebuild binaries\n- Download [latest release](https://github.com/dchristl/esp32_nat_router_extended/releases/latest)\n  * Download esp32nat_extended_full_vX.X.X.zip for fresh install\n  * Download esp32nat_extended_update_vX.X.X.zip for update\n- Install [esptool](https://github.com/espressif/esptool)\n \n\n### First install/ Reset \n\nIf your device was used before for other projects or you want to reset all setting from previous version. Complete data loss!\nUnpack archive first and then execute:\n\n```\nesptool.py write_flash 0x0 esp32nat_extended_full_vX.X.X.bin \n```\n\n### Update from older version\nIf this project was already installed. No data loss from previous version. The preferred way is with [OTA-Updates](docs/ota.md). If you want to do it manually:\n \n```\nesptool.py write_flash 0x10000 esp32nat_extended_vX.X.X.bin \n```\n### General \n\nIf any problem occurs, erase flash manually before flashing the full version :\n```\nesptool.py erase_flash\n```\n\n\n### Alternative way/ Graphical (Windows only)\nAs an alternative you might use [Espressif's Flash Download Tools](https://www.espressif.com/en/support/download/other-tools).\n\nCheck the marked parameters and files like below (ckeck the COM-Port for your environment). \n\nCheck the addresses like below: \n\n### First install/ Reset \n\n![image](docs/win_flash_full.png)\n\n### Update from older version\n\n![image](docs/win_flash.png)\n\n## Building the Binaries\n\nsee [How to setup environment and build](docs/BUILD.md)\n\n\n## Wifi scanning limitation\nDue to technical limitations, a client cannot be simultaneously connected to the device and scan for Wi-Fi networks. Before the scan starts, all the clients will be disconnected. After that, the scan will be saved in NVS,and the device will reboot. Upon reconnecting to the device, you will be able to view the scanned networks.\n\nAn automatic redirect occurs the first time. Afterward, the scanned networks can be viewed three more times before they are deleted from the NVS to save storage space.\n\n## Misc\n\nIf you have any problems, suggestions for new features feel free to ask or raise an issue. This is a spare time project, I will answer if I'm free.\nIf you like my work and want to support me, you can [buy me coffee](https://www.buymeacoffee.com/dchristl) or send me a donation via [PayPal](https://bit.ly/3Gde3KN)\n\n## Advanced topics and configuration\n\nsee [Advanced topics](docs/advanced.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdchristl%2Fesp32_nat_router_extended","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdchristl%2Fesp32_nat_router_extended","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdchristl%2Fesp32_nat_router_extended/lists"}