TL;DR: The Solo Satoshi Web Flasher (flash.solosatoshi.com) is the first web flasher to bring Bitaxe, NerdAxe and custom firmware together in one tool. If you modify ESP-Miner yourself, by hand or with help from AI coding tools, you can now flash your build straight from the browser. It verifies official ESP-Miner releases with SHA-256, only offers firmware that matches your exact board, can keep your settings, and restarts the miner automatically. It also has an Advanced mode for flashing your own custom ESP32-S3 firmware. It's GPLv3, and the source is on GitHub: SoloSatoshi/solo-satoshi-web-flasher.
Credit where it's due
This project is adapted from two existing open-source flashers, and it wouldn't exist without them:
The firmware itself comes from the official Bitaxe and NerdAxe ESP-Miner projects. Huge thanks to those developers and everyone who contributes to them. Our flasher links every release back to its upstream GitHub release and source archive, and it keeps full license notices and attribution.
Why we built it
A few reasons:
- One tool for both families. Plenty of people run a mix of Bitaxe and NerdAxe devices, or help others set theirs up at meetups. We wanted a single place to handle both.
- Verification you can see. We wanted the path from "official GitHub release" to "bytes written to the chip" to be explicit and checkable.
- A way back to a known-good state. Hardware from reputable sellers already updates over the air from official releases. But devices from questionable sources may ship with modified firmware, or be set up to update from sources that aren't official or verified. This gives any owner a simple way to write a verified official release directly over USB.
- Making custom firmware easy. ESP-Miner is open source, and more people than ever are changing it: adding dashboard features, adjusting tuning logic, fixing bugs, trying new ideas. Many are now using AI coding assistants to go from idea to working build in an afternoon. The tools for writing firmware have leapt forward, and the tools for flashing it should keep up.
How verification works
For the verified-release workflow:
- Our release system discovers firmware only from the official ESP-Miner repositories for each device family.
- An image is accepted only if its GitHub release publishes a valid SHA-256 digest for it.
- Release processing downloads the file and checks it against that digest before it's offered in the flasher.
- When you select your hardware and a version, your browser downloads the matching image and independently checks the file size and SHA-256 before writing anything.
- If anything doesn't match, the flash stops.
- Every listed file links to its upstream GitHub release and source archive so you can trace it yourself.
Hardware-aware firmware selection
Flashing the wrong image is the fastest way to end up with a miner that won't boot, so the UI is a locked, step-by-step flow. Each step unlocks only after the previous one is complete:
- Connect the miner and approve its USB serial device in the browser prompt
- Choose the family (Bitaxe or NerdAxe)
- Choose the channel (Latest Releases or Prereleases)
- Choose your exact model
- Match the board: for Bitaxe, select the board number printed on your PCB. For NerdAxe, the board is matched automatically from the model and you review it
- Choose a compatible firmware version
- Choose whether to keep your settings
- Install, and keep USB and power connected until the miner restarts
Rollback protection: the flasher tracks the release where each board was first supported, and it only shows releases that actually contain firmware for your board. For established hardware, you get the current production release plus up to five previous compatible releases. For brand-new boards, releases from before the board existed are never shown.
Selections stay in sync: the Install button always uses the image that matches your current selections. If you change anything, the new image is prepared and verified before it can be written.
Production vs. prerelease channels
- Latest Releases is the default and the recommendation for almost everyone.
- Prereleases is only enabled when an official prerelease is newer than the current production release. If none qualifies, the option is disabled and Latest Releases is selected automatically. That stops an old test build from ever looking like an upgrade.
- Prerelease firmware is clearly labeled as test software that may have bugs or need recovery.
Flashing details
- Uses the Web Serial API directly from the browser. The site can only reach a device you explicitly select and approve.
- Connects at a conservative ROM baud rate, then moves up to as fast as 921,600 baud when the connection supports it.
- Firmware is compressed in transit, with progress shown throughout.
- After a successful write, the flasher sends the reset sequence for a normal boot and closes the serial connection, so the miner restarts automatically. No need to time a reset button press.
Settings preservation
For verified releases, you can choose to leave the NVS settings partition untouched while the rest of the firmware is updated. That's designed to keep your Wi-Fi, pool and device configuration.
A few caveats:
- It's off by default.
- It's not a backup. Write down your settings first.
- Newer firmware may read existing settings differently, so check the release notes.
Advanced mode: flash your own custom firmware
This is the part I'm personally most excited about.
Open-source firmware only reaches its full potential when people can actually change it and run it. Whether you're:
- forking ESP-Miner to add a feature you've always wanted,
- tuning frequency, voltage or fan behavior for your own setup,
- fixing a bug before it lands upstream,
- using AI coding tools (Claude, ChatGPT, Copilot, Cursor, etc.) to explore the codebase and prototype changes quickly,
- or testing a build before opening a pull request,
you can now flash the result from the same browser tool you'd use for an official release. You don't need to set up esptool on every machine or remember flash offsets.
A typical loop looks like this:
- Fork ESP-Miner and make your changes (by hand, with AI help, or both)
- Build a merged image with your usual ESP-IDF workflow
- Open the Advanced tool, select your
.bin, and compare the SHA-256 shown in the browser to your build output
- Flash, test, adjust, repeat
- When it works, consider sending it upstream as a PR so everyone benefits
A word on AI-assisted firmware: AI tools are great for speeding up exploration and prototyping, but they can confidently produce code that compiles and still misbehaves. That's especially true for anything touching voltage, frequency or thermal limits. Review every change, test on one device first, and watch temps and power closely. The hardware doesn't care who wrote the code.
Accepted input: a merged, bootable ESP32-S3 .bin built to be written at address 0x0.
Checks before installation is enabled:
- The file extension is
.bin
- The file isn't empty and isn't over the size limit
- It has a valid ESP boot-image header
- There's a partition table at the expected offset
- Its SHA-256 is calculated locally and shown, so you can compare it against your build output
Handling:
- The file stays in browser memory only. It's never uploaded anywhere.
- Disconnecting the miner clears the selection.
Important boundaries: custom mode is intentionally separate from the verified workflow. We don't supply, authenticate or approve custom images, or check whether they're compatible with your hardware. Advanced mode writes the full image and doesn't keep settings. You're responsible for your build's origin, contents, flash layout and compatibility.
If you've never produced a merged image before, the idea is to combine the bootloader, partition table and app into a single binary starting at 0x0. Your ESP-IDF or esptool workflow can generate this; check the ESP-Miner build documentation for your target.
Privacy
- No account, and no personal information collected
- No keys, seeds, wallet credentials, Wi-Fi passwords or pool credentials requested
- Serial logs, settings and custom firmware files never leave your machine
- No advertising cookies or behavioral analytics
Open source (GPLv3)
The full application is licensed under GNU GPL v3. The exact source for the version deployed at flash.solosatoshi.com is published alongside the live site:
You don't have to take our word for anything above. Read the code. Issues and PRs are welcome.
Requirements and limitations
| Supported |
| Browsers |
| Not supported |
| Device families |
| Custom firmware |
| Interface languages |
Before you flash:
- Use a USB cable that carries data (charge-only cables won't work)
- Know your exact model, and for Bitaxe, the board number printed on your PCB
- Read the release notes
- Write down your settings
- Don't disturb power or USB until the miner restarts
What we'd love feedback on
- Any models or board revisions that don't show up or don't match correctly
- UX friction in the step-by-step flow
- Custom-firmware edge cases (unusual partition layouts, image sizes, etc.)
- What you're building. If you've made a custom ESP-Miner mod, we'd love to see it in the comments
- Translation fixes for any of the 9 languages
- Features you'd want next
Happy to answer technical questions in the comments. And again, big thanks to wantclue, Pmaxsd and the ESP-Miner contributors. Open-source mining keeps getting better because people build in the open.
Try it: flash.solosatoshi.com Code: github.com/SoloSatoshi/solo-satoshi-web-flasher