Install · Screenshots · Supported boards · Documentation · فارسی
A product by DibaChain
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.
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 | bashWindows (PowerShell)
irm https://raw.githubusercontent.com/AliAkrami1375/DRouter-Firmware/main/install.ps1 | iexThat 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.
The first time you open the panel it walks you through three steps and then gets out of the way.
- 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.
- Pick the Wi-Fi network to share. DRouter scans, sorts by signal, and connects.
- Name your own hotspot and give it a password.
- Storage. It looks for an SD card and tells you what it found. There does not have to be one.
- Done. Devices can join immediately.
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.
Live status, every connected device, and where the traffic went.
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.
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.
A real scanner: signal strength as bars, channel, and a lock for protected networks. Pick one, type the password, connect.
The hotspot below it is what your devices join. Name, password, channel and client limit are all yours to set.
Paste share links or a whole subscription. Select which server is active. Measure latency to each one.
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.
Live memory, uptime, DNS counters, and the firmware version. Change the admin password, reboot, or reset to factory.
| 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.
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.
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.
| 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 · عیبیابی · پرسشهای متداول
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- 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.
The firmware binaries published here are released under the MIT license. See LICENSE.







