Find the ESP32 boards with a bad antenna.
Flash an ESP32-C3 or ESP32-S3 straight from this page, read what the board really is, and measure how well it hears your access point. No install, nothing leaves your machine.
Flash the tester firmware
Version - for ESP32-C3 and ESP32-S3, served from this site. Flashing overwrites whatever program is on the board. Put the board in download mode first if it does not answer: hold BOOT, tap RESET, release BOOT.
Starting
Board
Access point scan
How loudly this board hears one access point, averaged over several scans. Run the same scan on a board you trust, in the same spot, and compare.
Nothing is uploaded. The page talks to the board directly from your browser.
What it measures
The browser flashes the firmware, reads the board and scans your access point. The local application in section 05 adds the stages that need a second radio or a socket on the PC.
| Stage | What it tells you | Second board? |
|---|---|---|
| AP scan RSSI | How well the board hears your access point | No |
| UDP throughput | Real Mbps up and down, the outcome a weak antenna lowers | No |
| Wi-Fi through the AP | Packet loss and round-trip time across transmit power steps | No |
| ESP-NOW pair | Directional receive and transmit RSSI against a reference board | Yes |
| Environment snapshot | Connected BSSID, channel, security, neighbouring AP occupancy | No |
| Hardware details | Flash, heap, PSRAM, chip revision, cores, CPU MHz, SDK version | No |
How a verdict is reached
Antenna verdicts come from the ESP-NOW comparison, measured in both directions. Packet loss through your access point is recorded and reported, but it describes your network, not the board.
Live reference
Plug in a board you trust. The comparison runs in the same spot at the same moment, which cancels out the environment.
Master baseline
Mark an earlier good run as the baseline. Later single-board tests are scored against that board's scan RSSI and throughput, so you can screen a pile of boards with nothing else on the bench.
A real fault
One ESP32-C3 SuperMini in the test set fails every Wi-Fi association at 20 dBm and connects in under two seconds at 17 dBm and below, on two different access points, while its receive path stays healthy at -36 dBm. That is the known mis-tuned antenna matching network on a batch of C3 SuperMini and LOLIN C3 Mini boards.
The tester reports it as a hardware FAIL naming the power it managed to associate at, then finishes the run at that power so the remaining measurements are still usable. It does not die with an unhelpful "could not connect to Wi-Fi".
Run locally
The browser flashes a board, reads it and scans an access point. Everything that needs a second radio, a socket on the PC, or a memory of what you measured last week lives in the local application. It serves its own interface at 127.0.0.1:8765.
| What you get | Why it needs the PC |
|---|---|
| Flashing and erase | Builds and writes the tester firmware over USB, and asks before it erases a board it has not seen before |
| ESP-NOW pair comparison | Drives two boards at once and sweeps transmit power on both, which is what turns raw RSSI into a verdict |
| UDP throughput | Needs a real socket at the other end of the link, up and down, which a browser cannot open |
| Loss and round-trip time | Echoes packets from the PC across every transmit power step |
| Verdicts with reasons | PASS, WARN or FAIL, each one stating why it landed there instead of leaving you a number to interpret |
| Master baseline | Mark one good run, then screen a pile of boards against it with nothing else on the bench |
| Device history | Every board is keyed by its Wi-Fi MAC in SQLite, so a board you tested months ago is still the same board, with charts across runs |
| Batch queue | Check several boards, confirm the erase once, and walk away |
| Access point lock | Pins the association to one BSSID and channel and records the neighbourhood, so two boards are compared under the same conditions |
| Transmit power fallback | A board that only associates below full power is reported as the hardware fault it is, with the power it managed, instead of an unhelpful connection error |
Requirements: Windows, PlatformIO, and an ESP32-C3 or ESP32-S3 board on USB.
# 1. get the code git clone https://github.com/Keralots/ESP32WiFiTester.git cd ESP32WiFiTester # 2. set up and start .\tools\setup.ps1 -Dev .\tools\start.ps1
The first run builds the firmware and creates the database. Open Settings once and save your Wi-Fi SSID and password: the password goes to Windows Credential Manager and is never written to source, SQLite, logs or exports.
- Connect one or more boards by USB, plus a reference board if you have one.
- Open Run Test. Every connected board appears in one list, and Identify reads each chip and MAC.
- Check the boards to test, pick a reference or an access point lock, choose Quick, Standard or Full.
- Progress streams into the run monitor. When the queue finishes, open a run for charts, measurements and the analysis.
Your data lives in data\ and never leaves the machine. Back it up by copying that folder.