Flash firmware to your ESP32 board directly from your browser — no software install needed.
A DX Cluster client for ESP32 boards with built-in screens. It connects to any DXSpider-compatible cluster server over Wi-Fi (telnet port 7300), receives live DX spots, and displays them on the screen. You configure it via a web page on your phone — no computer needed after the initial flash.
22 boards supported — LilyGO (T-Display-S3, T-Display, T-QT, T-HMI, T-Watch, T-Deck), M5Stack (Core, Core2, StickC Plus), Sunton CYD, Waveshare S3 Round, and 9 Heltec boards (WiFi Kit 32, WiFi LoRa 32, Wireless Stick, Wireless Tracker). All with built-in displays.
After flashing, the device becomes a standalone desk gadget (or wrist gadget if you have a T-Watch) that shows real-time amateur radio DX spots as they come in from around the world.
| Browser | Supported | Notes |
|---|---|---|
| Google Chrome | Yes | Desktop & Android. Recommended. |
| Microsoft Edge | Yes | Desktop. Recommended. |
| Opera | Yes | Desktop. |
| Brave | Yes | Desktop. May need to enable Web Serial flag. |
| Mozilla Firefox | No | No Web Serial API support. |
| Apple Safari | No | No Web Serial API support. |
| iPhone/iPad (any browser) | No | iOS does not expose Web Serial. |
9m2pju.hamradio.my:7300).Plug your ESP32 board into your computer. Use a direct USB port if possible (avoid hubs).
Find your board in the list and click the Connect button on its card.
Your browser will show a list of serial ports. Select the one for your board:
Windows: COM3 (or similar), Mac: /dev/cu.usbserial-*, Linux: /dev/ttyUSB0
Click Install and wait. Flashing takes about 30–60 seconds. Do not unplug during flashing.
After flashing, the board reboots automatically. The screen will show "9M2PJU DX Cluster Client" and then "SETUP MODE".
After flashing, the device boots into setup mode (because no Wi-Fi is configured yet). It creates a Wi-Fi hotspot that you connect to with your phone to enter your settings.
The screen shows a Wi-Fi name like 9M2PJU-DXCluster-A1B2. On your phone, open Wi-Fi settings and connect to that network.
A captive portal page should pop up automatically. If it doesn't, open any browser and go to http://192.168.4.1/
Enter your Wi-Fi network (tap "Scan for networks" to see what's nearby), Wi-Fi password, your callsign, and the DX cluster server address.
The device saves your settings, reboots, connects to your Wi-Fi, and starts showing DX spots.
| Field | What to enter | Example |
|---|---|---|
| Wi-Fi SSID | Your Wi-Fi network name (tap "Scan" to list nearby networks) | MyHomeWiFi |
| Wi-Fi Password | Your Wi-Fi password | supersecret |
| Callsign | Your amateur radio callsign | 9M2PJU |
| Callsign Password | Only if the cluster requires one. Leave blank if unsure. | (leave blank) |
| DX Cluster Host | The cluster server hostname or IP | 9m2pju.hamradio.my |
| DX Cluster Port | The cluster telnet port | 7300 |
| Post-login command | Optional. A command sent after login (advanced). | set/dx |
After configuration, the device connects to your Wi-Fi and the DX cluster. The display shows:
The BOOT button (GPIO 0, the same button used for flashing) opens a command menu in normal mode. You can send DX cluster commands without a computer or telnet client.
| Action | What happens |
|---|---|
| Short press (from spot view) | Opens the command menu |
| Short press (in menu) | Cycles to next command |
| Long press (hold ~1 second) | Sends the highlighted command |
| Short press (on response screen) | Closes response, returns to spots |
| 10 seconds of no input | Menu auto-closes |
| Command | Description |
|---|---|
sh/dx | Show recent DX spots (refreshes the spot list) |
sh/dx 20 | Show last 20 spots |
sh/dx/ft8 | Show FT8 spots only |
sh/dx/cw | Show CW spots only |
sh/dx/ssb | Show SSB spots only |
sh/wwv | Show solar / geomagnetic conditions |
sh/muf | Show MUF (Maximum Usable Frequency) info |
sh/qtc | Show QTC bulletins |
sh/ann | Show recent announcements |
sh/u | Show users connected to the cluster |
sh/c | Show cluster links (partner nodes) |
sh/h | Show help |
If you need to change your settings (e.g. you changed your Wi-Fi password or want to use a different cluster server), you can force the device back into setup mode at any time:
Setup mode also activates automatically if:
Many USB cables are charge-only and don't carry data. Try a different cable — ideally one that you know works for data transfer (e.g. the cable that came with your phone).
Plug directly into the computer, not through a hub. Some hubs block serial data.
If you have an ESP32-S3 board (T-Display-S3, T-QT, T-HMI, T-Watch S3, Waveshare S3 Round, T-Deck, Heltec WiFi Kit 32 V3, WiFi LoRa 32 V3, Wireless Tracker) and the port doesn't appear:
Most ESP32 boards use CP2102 or CH340 USB-to-serial chips. Modern OS versions include drivers, but if the port doesn't appear you may need to install:
CP2102: Silicon Labs VCP drivers
CH340: WCH CH340 drivers
9M2PJU-DXCluster-XXXX (last 4 characters are unique to your device). Look for a network starting with 9M2PJU-DXCluster.If you connect to the setup Wi-Fi but no page appears automatically:
http://192.168.4.1/ in the address bar.If that doesn't work either, try http://192.168.4.1 (without the trailing slash) or navigate to any website — the captive portal redirect should kick in.
9m2pju.hamradio.my port 7300.N0CALL — make sure you entered your real callsign.sh/dx via the button menu to request recent spots.Hold the BOOT button while pressing RESET. The device boots into setup mode and you can enter new settings. The old settings will be overwritten when you save.
To completely wipe all settings, re-flash the firmware using the web flasher — this erases NVS and starts fresh.
A DX Cluster is a network of servers that relay "spots" — real-time reports of interesting amateur radio activity. When someone hears a rare station, they post a spot to the cluster, and it's immediately distributed to all connected operators. A spot looks like:
This tells you: station 9M2XYZ spotted JA1ABC on
frequency 14.074 MHz (20m band), the mode is FT8, the signal was
strong in Europe, and the spot was posted at 12:34 UTC.
This device connects to a DX cluster server and displays these spots on its screen in real time, so you can see what's being heard around the world without running a computer or telnet client.
Any DXSpider-compatible cluster that speaks the standard telnet protocol on port 7300. This includes:
9m2pju.hamradio.my:7300
The default host is 9m2pju.hamradio.my but you can point the
device at any cluster server via the web admin UI.
No. The ESP32 only supports 2.4 GHz Wi-Fi (802.11 b/g/n). If your router is dual-band (2.4 + 5 GHz), connect to the 2.4 GHz network name.
No. The device runs on USB power. Boards with batteries (T-Watch, M5StickC Plus, M5Stack Core2) will also run on battery — the firmware doesn't do anything special with battery power, but the display and Wi-Fi will work normally.
Yes. Hold the BOOT button while pressing RESET to enter setup mode. The web admin UI lets you change Wi-Fi, callsign, cluster server, and all other settings. Changes are saved to NVS (flash memory) and persist across reboots.
The DX cluster protocol is plain telnet (unencrypted). This is standard for amateur radio DX clusters. The callsign is sent in plain text. The callsign password (if your cluster requires one) is also sent in plain text. This is the same as any telnet DX cluster client. The web admin UI (configuration page) is local — it only travels between your phone and the ESP32 over the setup Wi-Fi, not over the internet.
Typical flash usage is 25–30% on ESP32-S3 (16 MB flash) and 65–75% on ESP32 (4 MB flash). RAM usage is about 15% (48 KB of 320 KB). There's plenty of room for future features.
Yes. The project uses PlatformIO. Clone the repository, copy include/config.example.h to include/config.h, edit your defaults, and run pio run -e <your-board>. See the Developer Guide in the docs/ folder for full instructions.
It takes about 30 lines of code. You need to create a board configuration file (LovyanGFX subclass with the display pins), add an entry in BoardConfig.h, and add a PlatformIO environment. See "Adding a New Board" in the docs/ folder for a step-by-step guide.