Trade with retail Pokémon games from your computer.
pokeldn turns an ESP32 board on USB into a Nintendo Switch local wireless radio. It hosts or joins sessions with seven Pokémon games for trades, Mystery Gifts and Tera Raids. Nothing is installed on the Switch or Switch 2.
Hosting a FireRed Direct Corner trade. PKHeX builds the Pokémon and checks that it is legal; the session panel lists what to do on the console.
Seven games, one board
Every game trades through the ESP32. FireRed and LeafGreen work in English, French, German, Italian, Spanish and Japanese. Scarlet and Violet also host and join Tera Raids.
| Feature |
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|
| Trade | Works | Works | Works | Works | Works | Works | Works |
| Online trade, two players far apart | Works | Offline tested | Offline tested | Offline tested | Offline tested | Works | Offline tested |
| Mystery Gift | Works | No such feature | Works | No such feature | No such feature | No such feature | No such feature |
| Link battle | Works | Not done | Not done | Not done | No such feature | Not done | Not done |
| Code on the console, save read and write | Works | Not done | Not done | Not done | Not done | Not done | Not done |
- works on a retail console
- built and tested offline, untried on a retail console
- not done yet
- the game has no such feature over local wireless
What the app does
The desktop app includes the radio firmware, flashes the board and
runs each tool with tested settings. The only file it asks for is
prod.keys
from your own Switch.
- Trades
- Host or join a trade with any of the seven games. Queue up to six Pokémon in one session.
- Online trades
- Two players far apart each host their own console. The apps meet through public Nostr relays under a shared code, with no server to run.
- Mystery Gift
-
Send gifts to FireRed/LeafGreen and Sword/Shield, including 171
official Sword/Shield event cards. Opens
.wc3,.wc8and shared.pokegiftfiles. - Bank
- Keeps every Pokémon a trade brings in, imports Pokémon files and game saves, and moves a Pokémon into another game wherever HOME would.
- GTS
- List a banked Pokémon against a species you want. Another player's app trades for it, even when you are not both online at the same time.
- Tera Raids
- Host or join local Scarlet/Violet raids with the boss and rewards you choose.
- Controller
-
An ESP32-S3 becomes a wired controller, a classic ESP32 a wireless
Pro Controller. Record macros and share them as
.pokemacrofiles. - Legal Pokémon
- PKHeX.Core builds each Pokémon you offer for the game on the other end and checks it before the trade.
Compatible boards
Any of these chips works as the radio, on 2.4 GHz. The app's Board page flashes the firmware. Building it yourself takes ESP-IDF v6.1.
| Chip | Connects through | Firmware |
|---|---|---|
| Classic ESP32 WROOM-32E, D0WD | USB serial bridge CP210x, CH340 | pokeldn-radio.bin |
| ESP32-S3 | Native USB | pokeldn-radio-s3.bin |
| ESP32-C3 | Native USB | pokeldn-radio-c3.bin |
| ESP32-C6 | Native USB | pokeldn-radio-c6.bin |
- Boards covered in the docs include the Seeed Studio XIAO ESP32C3, ESP32S3 and ESP32C6, ESP32-S3 N8R2 and N16R8 boards, the ESP32 DevKit V1, the ESP32-C6-DevKitC-1 and the ESP32-C3 0.42-inch OLED board.
- On a board with two USB sockets, use the native USB one.
- The XIAO ESP32C3 and ESP32S3 need their supplied antenna attached.
- The controller firmware runs on an ESP32-S3 (wired, on the Switch's USB-C port) or a classic ESP32 (Bluetooth). The C3 and C6 cannot be controllers.
- ESP32-S2 is not supported.
Add a screen
An SSD1306, SSD1315 or SSD1309 128×64 I2C OLED shows the radio's traffic, the Pokémon each trade sends and receives, and the Mystery Gift card. The ESP32-C3 0.42-inch OLED board uses its own 72×40 screen.
To spare the panel, it dims after a minute idle and turns off after ten. The BOOT button wakes it. Wire VCC to 3V3 and GND to GND.
| Chip | SDA | SCL |
|---|---|---|
| Classic ESP32 | GPIO21 D21 |
GPIO22 D22 |
| ESP32-S3 | GPIO8 |
GPIO9 |
| ESP32-C3 | GPIO6 |
GPIO7 |
| ESP32-C6 | GPIO22 |
GPIO23 |
Plugins
Plugins add tools, games and radios to the app. A plugin is a
folder of Python files with a
plugin.toml, shipped as one
.pokeplugin
file that you drop on the Plugins page. Plugins stay off until you
turn them on.
Before you install one, the app reads its code and lists what it
does: network access, starting other programs, deleting files,
native code, reading prod.keys. That is a warning,
not a sandbox. The project does not distribute, review or support
third-party plugins.
from pokeldn.plugins import Field, Tool
def register(api):
api.add_tool("frlg", Tool(
"hello-greet",
"Say hello",
"greet.py",
"Greets your trainer in the output.",
("Nothing to do on the console.",
"Press Start and read the output."),
fields=(Field("--greeting", "Greeting",
default="Hello"),),
fixed=("--trainer", "{ot}"),
))
Download
You need one of the boards above, a Switch or Switch 2 with one of
the games, and prod.keys
dumped from your own console.
-
.zip
macOS Apple silicon
The app is unsigned, so the first launch is blocked. Open it once and close the warning, then go to System Settings, Privacy & Security, and choose Open Anyway next to pokeldn. Later launches open normally.
-
.zip
Windows x64
Extract the zip and run
pokeldn.exe, keeping the_internalfolder beside it. If SmartScreen stops it, choose More info, then Run anyway. A classic ESP32 needs its CP210x or CH340 driver. -
.tar.gz
Linux x64
Needs GTK 3 and libsecret, and serial access:
sudo usermod -aG dialout $USER(the group isuucpon Arch).
Firmware images and SHA256SUMS are on the
release page. To run from source, follow the
README.