Open-source project
NMminer1024/NMMiner avatar
NMminer1024/NMMiner

NMMiner puts a Bitcoin miner on an ESP32 and calls it a lottery

A tiny BTC miner base on esp32 series,I'd rather call it BTC lottery

599 stars94 forksCLicense varies

At a glance

What is it?
NMMiner is mining firmware for ESP32 development boards, flashed with a one-click tool and managed by a Windows desktop client or a cross-platform Python web interface. The interesting engineering is the hashrate the firmware extracts from a microcontroller chip, topping out around 1,035 KH/s on the ESP32-D0, and the interesting honesty is in the repository description, where the author says he would rather call it a BTC lottery.
Who is it for?
NMMiner fits a maker or researcher who wants to see cryptocurrency mining implemented on a microcontroller, or who wants cheap hardware with a screen to experiment on, and it does not fit anyone hoping for income, since the author's own description of the project is a lottery ticket.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 48 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The author calls it a lottery, and the description is the honest part

The repository description is unusually blunt: a tiny BTC miner based on ESP32 series, with the author's own aside that he would rather call it a BTC lottery. The tagline in the README is Make it better.

That framing is worth taking seriously when reading the rest of the numbers, because the README then presents a large table of hashrates that reads like a benchmark sheet. The description is the author's summary of the economics, and it is a warning not a boast.

The overview describes NMMiner as an optimized BTC mining firmware designed for ESP32-based development boards, with one-click deployment through the NMMiner Flash Tool, presented as an accessible entry point into cryptocurrency mining. So the software is a firmware image plus a flasher, not a library you link against, and the deployment path is a browser tool rather than a build you run yourself.

The repository is organised as firmware, driver, tool, docs and fig, which matches that story. The firmware directory holds the code that runs on the board, the tool directory holds the pre-compiled management client, and the docs and fig directories hold the reference material and the images used in the README. The wiki is hosted separately at wiki.nmminer.com, and the flasher is a web application at flash.nmminer.com.

For a reader deciding whether to try this, the interesting part is not the money, it is that mining on a microcontroller is a different exercise from mining on a purpose-built chip. The firmware has to fit, the hash function has to run in embedded C, and the board has to survive the heat.

Four chips, and the spread between them is the story

The requirements list the development boards by the chip inside them, and only four chip families are supported:

bash
  - ESP32-S3
  - ESP32-D0
  - ESP32-C3
  - ESP32-C5

The performance figures are given per chip, which is the more useful framing than per board:

bash
  - ESP32-D0: Up to 1,035 KH/s
  - ESP32-S3: Up to 398 KH/s
  - ESP32-C3: Up to 402 KH/s
  - ESP32-C5: Up to 150 KH/s

The spread is close to seven to one between the fastest and the slowest supported chip. A board with the ESP32-D0 delivers about 1.03 MH/s, since a thousand kilo-hashes per second is a megahash per second, while the ESP32-C5 sits at 150 KH/s. If you are buying hardware for this, the chip marking on the board matters far more than the product name, and boards that look identical in a shop listing can differ by several times in output.

That is the real engineering content of the project. Bitcoin mining needs a hash function evaluated many times per second, and on a microcontroller the bottleneck is the SHA-256 core, the memory access pattern and the power budget all at once. The D0 is the part with the resources to go fastest, and the C5 is the newest and lowest performing, which is a reasonable outcome for a chip that is primarily aimed at low cost connected devices rather than computation.

The README's own recommendation therefore is not really about mining. It is that if you have a board with a display and you want to run something on it all day, this is a workload that fits.

One board, a dozen variants, one number

The supported hardware table is long, and its structure is informative.

The top of the table is dominated by ESP32-D0 boards, and they all cluster tightly. The NM-TV-154 board and the ESP32 DEVKitC 32 are both listed at 1,035.9 KH/s, the Heltec WiFi LoRa32 v2 at 1,035.5 KH/s, and then a group of boards sit just below at around 1,025 KH/s: the ESP32 2432S028R, the ESP32 2432s024, the TTGO T-Display, the ESP32 3248s035, the ESP32 CAM, the ELECROW display boards in 2.4 and 2.8 inch, and the ESP32 32E LCD displays in 3.2 and 4.0 inch. The WT32-SC01 is lower at 930.1 KH/s.

The S3 boards follow, ranging from 400.9 KH/s on the Heltec WiFi Kit32 v3 down to 361.1 KH/s on the LilyGO T-QT, with a long list of XIAO, LilyGO, Waveshare, Heltec and NM-branded boards in between, including several S3FN8 and S3R8 variants that perform slightly differently from the plain S3.

The Seeed XIAO ESP32-C3 is listed at 396.9 KH/s, and the ESP32-C3 0.42 inch OLED at 315.1 KH/s, so even within a chip family there is variation. The ESP32-C5 entries, the ESP32-C5 devkitc 1 and the NM-CYD-C5, are both at 150.2 KH/s.

Two details in the table are worth noting beyond the numbers. The product names show that this firmware is being run on display boards, on a USB dongle, on a camera board and on a bot chain board, which tells you the audience is people with spare hardware rather than people building a mining rig. And the tables refer to an NM Bot Chain v1 and an NM USB Chain v1, so the project has its own boards as well as supporting other manufacturers'.

Management comes in two flavours, and one of them is a binary blob

Running a miner is not only about the firmware, and the project splits management into two applications with different distribution models.

NMController Client is a Windows desktop application, and the README says pre-compiled installers for x64 and x86 are available in the tool folder of this repository. Its source code lives in a separate repository, NMController_client.

NMController Web is the cross-platform option, a Python implementation with its own repository, and the README states it is compatible with Windows and macOS. That is the friendlier option for anyone not on Windows, and a Python implementation is also easier to read and to modify if you want to see what the management traffic looks like.

The split is a deliberate one: native for speed and Windows integration on the platform where most miners run, portable for everyone else. The important caveat is on the source availability. The client repository is listed, so its source exists, but what the tool folder ships is a pre-compiled installer, so the binary you run is not the same artefact as the source in the adjacent repository, and you cannot easily confirm that they match.

The screenshots in the README give a sense of what the management interface offers: the hardware showcase section shows images named for a candlestick chart, a price display, a weather panel and a clock, on several boards including the CYD board, the LilyGO T-Display S3, the Heltec T190, the LoRa32 v2, the USB Chain and the S3 Geek. So the firmware drives a small display with a mining dashboard, which is the part of this project that has nothing to do with mining at all and is arguably the reason people try it.

Maintenance, licensing and the gap between the firmware and the tools

The repository is not archived and the last push was on 2026-09-05. The published releases are v2.0.04 on 2026-07-24, v2.0.03 on 2026-06-08 and v2.0.02 on 2026-05-09, so there were three releases in roughly two and a half months before the last code change, and the default branch is main.

The licensing situation is the weak point and it is not merely unstated. The recorded licence for the repository is unknown, which means there is no standard grant you can point to. The README carries no licence section at all, unlike most project READMEs of this size, and the only apparent terms are the ones implied by the project operating its own commercial flashing tool and its own branded boards and controllers. If you plan to fork the firmware, publish a build, or sell a product with it, that is a conversation to have with the author rather than an assumption to make.

There is also a three-way split in the artefacts. The firmware is in this repository. The management applications are in two separate repositories, one of which ships binaries. And the flasher is a web application on the author's own domain, flash.nmminer.com, which means the one-click deployment path depends on infrastructure that is not in the tree. A new user is therefore depending on at least three parties for a one-click experience, and the parts that matter most for a security review, the flasher and the pre-compiled client, are the ones you can least easily inspect.

The wiki at wiki.nmminer.com is the documentation, and the repository carries a docs directory as well. Given the project has been running for years, the practical guidance is to read the wiki for the current flashing procedure rather than assuming the repository README is current, since the README's focus is clearly on the hardware table and the showcase.

Editorial conclusion

NMMiner fits a maker or researcher who wants to see cryptocurrency mining implemented on a microcontroller, or who wants cheap hardware with a screen to experiment on, and it does not fit anyone hoping for income, since the author's own description of the project is a lottery ticket. Before you spend on boards, check which chip your hardware uses, because the headline figure varies by a factor of seven between the ESP32-D0 and the ESP32-C5, and note that the licence is unrecorded and the Windows management client is distributed as pre-compiled installers. The last push was on 2026-09-05 and the last release was v2.0.04 on 2026-07-24.

Frequently asked questions

What is NMMiner and what hardware does it run on?

NMMiner is optimized Bitcoin mining firmware for ESP32-based development boards. The requirements list the supported chips as ESP32-S3, ESP32-D0, ESP32-C3 and ESP32-C5, and the supported hardware table lists individual boards with a hashrate for each.

How do I flash NMMiner onto a board?

The README describes one-click deployment through the NMMiner Flash Tool, hosted at flash.nmminer.com. The repository layout separates the firmware, the driver, the tools and the documentation into their own directories.

How do I monitor and manage a running NMMiner?

Two applications are offered. NMController Client is a Windows desktop application with pre-compiled x64 and x86 installers in the tool folder, and NMController Web is a cross-platform Python implementation compatible with Windows and macOS. Both have their own source repositories.

What licence is NMMiner released under?

No licence is recorded for the repository, and the README does not include a licence section. If you intend to fork the firmware, publish a build or ship a product with it, that has to be settled with the author first.

Official sources

  1. Issues
  2. NMminer1024/NMMiner on GitHub
  3. README
  4. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nmminer1024-nmminer.svg)](https://hysenlabs.com/projects/nmminer1024-nmminer)

Was this useful?