Skip to content

About

Open-source ESP32 firmware that turns your board into a smart portable Wi-Fi router with NAT, DHCP, DNS, transparent proxy, bandwidth management, per-device policies, and a modern web dashboard.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

DRouter

Turn a $5 ESP32 board into a Wi-Fi router with per-user data limits and a built-in proxy tunnel

Install · Screenshots · Supported boards · Documentation · فارسی

A product by DibaChain


DRouter — Wi-Fi router firmware for ESP32


What this is

DRouter is firmware. You flash it onto an ESP32 development board — the kind that costs a few dollars — and that board becomes a small, complete Wi-Fi router:

  • It connects to an existing Wi-Fi network the way a laptop would.
  • It broadcasts its own hotspot that your phones, laptops, TVs and consoles join.
  • It routes traffic between the two, with NAT, DHCP and DNS, exactly like a home router.

On top of that it does two things a home router does not:

It gives every device its own account. A name, a data allowance, an expiry date, and its own routing policy. Every byte is counted as it crosses the router, so the number in the panel is the real number — not a sample, not an estimate. When someone reaches their limit, their connection stops and they see a page telling them why.

It can keep a history on an SD card. Optional, and genuinely optional — a missing or faulty card cannot stop the router booting. With one, you get a usage history that flash has no room for, and a copy of your settings you can carry to another board.

It can send traffic through a proxy tunnel, transparently. Point it at a VLESS or Trojan server and every device on the hotspot goes through that tunnel automatically — with nothing installed and nothing configured on the phone, the laptop, the TV or the game console. You choose per device who goes through the tunnel and who goes direct.

There is nothing to install on the client side, ever. Devices just join a Wi-Fi network.


Install it in one command

Plug the board into your computer with a USB cable, then run one line. The installer finds the board, works out which ESP32 it is, downloads the matching firmware, checks it against its published checksum, and writes it.

Linux and macOS

curl -fsSL https://raw.githubusercontent.com/AliAkrami1375/DRouter-Firmware/main/install.sh | bash

Windows (PowerShell)

irm https://raw.githubusercontent.com/AliAkrami1375/DRouter-Firmware/main/install.ps1 | iex

That is the whole procedure. It takes about a minute, and it looks like this:

Looking for your board
  ✓ port /dev/ttyUSB0  (Silicon Labs CP210x)
  ✓ chip ESP32-S3

Fetching the release
  ✓ DRouter v0.1.0 for ESP32-S3  (929 KB)
  ✓ checksum verified

Writing the firmware
  ✓ boot selector reset

  Done. DRouter is running on your board.

  1. Look for the DRouter Wi-Fi network and join it
  2. Open http://192.168.4.1/
  3. The first password you type becomes the admin password

Nothing is installed system-wide and nothing needs administrator rights — everything lives in ~/.drouter (or %USERPROFILE%\.drouter on Windows), and deleting that folder undoes it completely.

If you would rather see what it will do before it does it, add --dry-run: it downloads and verifies everything and prints the exact offsets it would write, without touching the board.

Full instructions, including driver notes and what to do when a board will not respond, are in docs/installation.md.

Prefer to check the file yourself? Every build is also kept in firmware/ with its SHA-256, and the installer verifies against it whichever route it takes.


First run

The first time you open the panel it walks you through three steps and then gets out of the way.

The first-run setup wizard

  1. Choose an admin password. The very first password typed into a fresh board becomes the admin password — so do this before anyone else finds the hotspot.
  2. Pick the Wi-Fi network to share. DRouter scans, sorts by signal, and connects.
  3. Name your own hotspot and give it a password.
  4. Storage. It looks for an SD card and tells you what it found. There does not have to be one.
  5. Done. Devices can join immediately.

The storage step of the setup wizard

An SD card is genuinely optional: a missing, unformatted or faulty one costs a line in the log and nothing else. With one, you get a usage history that flash has no room for, and a copy of your settings you can carry to another board. See the SD card guide.


What it looks like

Dashboard

Live status, every connected device, and where the traffic went.

The DRouter dashboard

Users and data limits

Give a device a name and an allowance. The bar fills as they use it. When it runs out, they are cut off and told why — no silent failure, no mystery.

Managing users and their data limits

Each account carries its own routing policy: through the tunnel, direct to the internet, or blocked entirely. That is a per-device switch a VPN app on a phone simply cannot offer — the TV goes direct, the laptop goes through the tunnel, the guest gets 2 GB and nothing else.

Accounts can also expire on a date, which is what you want for a guest, a tenant, or a trial.

Wi-Fi

A real scanner: signal strength as bars, channel, and a lock for protected networks. Pick one, type the password, connect.

The Wi-Fi scanner and hotspot settings

The hotspot below it is what your devices join. Name, password, channel and client limit are all yours to set.

Proxy

Paste share links or a whole subscription. Select which server is active. Measure latency to each one.

Proxy servers and tunnel settings

The kill switch is on by default: if the tunnel goes down, traffic stops rather than quietly falling back to a direct connection. A leak you do not notice is worse than an outage you do.

System

Live memory, uptime, DNS counters, and the firmware version. Change the admin password, reboot, or reset to factory.

System status and maintenance


Which boards work

Board Wi-Fi Recommended for
ESP32-S3 (N16R8, with PSRAM) 2.4 GHz Best choice. Most memory, best throughput
ESP32 classic (WROVER, with PSRAM) 2.4 GHz Very good, and the only one with wired Ethernet
ESP32-C6 2.4 GHz, Wi-Fi 6 Good
ESP32-C5 2.4 and 5 GHz The only dual-band option
ESP32-C3 2.4 GHz Works; fewer simultaneous connections
ESP32-S2 2.4 GHz Works; single core, least memory

ESP32-C5 has no build yet. Its Wi-Fi driver is still incomplete in ESP-IDF v5.3, which is what this release is built against; a C5 build will follow once the firmware moves to v5.4. Every other board in the table is published and ready to flash.

A board with PSRAM makes a real difference when the proxy tunnel is on — it is the difference between a handful of simultaneous connections and a comfortable margin. See docs/hardware.md for the details and for what to buy.


Be realistic about speed

This is a microcontroller, and honesty here saves everyone disappointment:

Expected
Plain routing, no tunnel 10–20 Mbit/s
Through the proxy tunnel 3–12 Mbit/s, depending on the chip
Comfortable simultaneous devices 1–3 (more with PSRAM)
Added latency a few milliseconds

That is enough for browsing, messaging, and HD video on a couple of devices. It is not a replacement for a household router serving a family of streamers, and it does not pretend to be.

Where it shines instead: an IoT gateway with real per-device control, a travel router that logs into hotel Wi-Fi once and shares it, a guest network with hard data caps, a tenant or classroom network where each person gets a measured allowance, or a controlled lab network.


How it works, briefly

Bridging a proxy client and a router is the whole engineering problem. A proxy speaks in connections ("open a socket to example.com"); a router speaks in packets ("forward this datagram"). The usual bridge is packet rewriting inside the network stack, which is heavy and fragile on a microcontroller.

DRouter takes a simpler road: its DNS server answers proxied domains with its own address. The device then connects to the router directly, and the router reads the real destination out of the first bytes it sends — the SNI field of a TLS handshake, or an HTTP Host header — and opens the tunnel to that destination.

Three things fall out of that decision, all of them good:

  • No packet surgery. Ordinary sockets, which is why it is stable on hardware this small.
  • Exact accounting. Every byte crosses the relay, so the numbers in the panel are counted, not estimated.
  • Enforcement is trivial. Reaching a limit simply closes the connection.

The honest cost: an application that connects to a raw IP address with no DNS lookup is refused rather than quietly leaked around the tunnel. That is the safe failure, and it is deliberate.


Documentation

Installation Every platform, drivers, boards that need a button held, doing it manually
Getting started First run, joining the hotspot, adding your first user
The panel Every screen and every setting explained
Hardware Which board to buy, and why PSRAM matters
SD card Optional storage: wiring, what it holds, what happens without one
Troubleshooting When it will not flash, will not connect, or is slow
FAQ Short answers to the common questions

Persian: نصب · شروع · پنل · سخت‌افزار · کارت SD · عیب‌یابی · پرسش‌های متداول


Updating

Run the same install command again. It fetches the newest release and writes it.

Your settings, accounts and traffic counters live in a separate area of flash that an update never touches. If you want a genuinely clean slate, add --erase:

./install.sh --erase          # Linux / macOS
.\install.ps1 -Erase          # Windows

Getting help

  • Something not working? Start with troubleshooting.
  • Still stuck, or found a bug? Open an issue — include your board, your operating system, and the output of the installer.

License

The firmware binaries published here are released under the MIT license. See LICENSE.


Built by DibaChain

About

Open-source ESP32 firmware that turns your board into a smart portable Wi-Fi router with NAT, DHCP, DNS, transparent proxy, bandwidth management, per-device policies, and a modern web dashboard.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages