BZminer. Download BZ miner

Latest release

Release v100.51 of bzminer

All feedback is welcome ;)

  • NEW DUAL MINING PEARL + C29! (Nvidia only, see below)
  • c29 improvement on 6gb gpus
  • fixed (again) amd gpus not mining on mmpos
  • bc250 enabled cu's are now opt-in
  • bc250 now allows core lock below 1500
  • updated docs to explain more about bc250 options

Pearl + C29

  • dual pearl + c29, not all cards did well in this iteration and will need further updates, below is the table of tested cards
GPUDual Pearl TH/sDual C29 graphs/sWattsCombined baseline %Normalized efficiency %
3060 Ti51.6400.317117.2097.74%86.96%
308072.2683.557214.79121.29%94.51%
309089.4334.137278.18125.13%95.40%
4070 Ti SUPER†77.8411.433105.0771.64%94.45%
4090215.1097.467332.28147.76%103.83%
5060 Ti44.8480.30991.2659.27%69.87%
5090263.39813.901600.01112.30%104.97%
CMP 170HX115.5423.015178.37100.33%101.12%

Combined baseline is based on how much hashrate you get with pearly on its own and how much hashrate you get with c29 on its own (200% would be if neither algo had a loss in hashrate while dual mining)

oc's tested with:

GPUCore lockMemory lock
3060 Ti1500 MHz5001 MHz
30801500 MHz5001 MHz
30901500 MHz5001 MHz
4070 Ti SUPER2370 MHz5001 MHz
40902370 MHz5001 MHz
5060 Tiapproximately 2392 MHz7001 MHz
5090Stock testedStock tested

Pearl + C29: Windows, Linux and HiveOS

Open start_pearl_c29.bat on Windows or start_pearl_c29.sh on Linux. Edit both XMR wallet placeholders first; the same Monero address can receive both payouts. Passwords rig1-pearl~pearl and rig1-c29~c29 select each algorithm at MoneroOcean. The macOS example reports that C29 has no Apple GPU backend and exits.

./bzminer -a pearl,c29 --nvidia 1 --cpu 0 --p1 stratum+tcp://gulf.moneroocean.stream:10128 --w1 4YOUR_MONERO_WALLET_HERE --worker1 "" --pass1 rig1-pearl~pearl --p2 stratum+tcp://gulf.moneroocean.stream:10128 --w2 4YOUR_MONERO_WALLET_HERE --worker2 "" --pass2 rig1-c29~c29

Use bzminer.exe instead of ./bzminer on Windows. Allow several minutes for calibration; no duplicate-device or kernel-selection option is needed.

In HiveOS, select pearl (or pearlhash) as the main hash algorithm. Use a bare XMR wallet, pool gulf.moneroocean.stream:10128, password rig1-pearl~pearl. In Extra config arguments, add this, replacing the second wallet:

--a2 c29 --p2 stratum+tcp://gulf.moneroocean.stream:10128 --w2 4YOUR_MONERO_WALLET_HERE --worker2 "" --pass2 rig1-c29~c29 --nvidia 1 --cpu 0

--a2 adds C29 without replacing HiveOS's main algorithm; --worker2 "" keeps its XMR login bare. This example uses NVIDIA GPUs and disables CPU mining.


Mines Tari, Conceal, Ryo, Ergo, Ethereum Classic, EthereumPoW, Ravencoin, Neurai, Neoxa, Meowcoin, Clore, nexa, Pearl, Quantus, Monero, Zephyr, Salvium, VERUS, Warthog and XELIS, and ships sha256d as the open-source SDK example.

Downloads

filesizeSHA-256
bzminer_v100.51_windows.zip44.1 MBf794159d4e20134519e9056f52dd366e77743078c9ffe5d2346d14c813b73a10
bzminer_v100.51_linux.tar.gz44.4 MBdc2001f4bdcee6892b5a9cb8c96a44ddc12d17755fed360eca8917d0d2535ce5
bzminer_custom-v100.51.tar.gz44.4 MB28fcbf0cf0ee4d746242ca9674e84669ac5401e4f9260ab1c7c02fef29f1007e
bzminer_v100.51_docker.tar.gz13.4 KB34bed32a357af955622ff6147d4071a4b7cbad4583d6ca852878f0f7ee7055f4
bzminer_v100.51_macos.tar.gz56.7 MB9b6a52f36a47a3ce2384317a3acdeaf0d24194a85351fc6271e527c274619ca3

Verify before running:

# Linux / macOS
sha256sum -c <<< "<hash>  <file>"

# Windows (PowerShell)
Get-FileHash .\<file> -Algorithm SHA256

A checksum only proves the file is the one that was published — always download from the official release page.

Getting started

  1. Unpack the archive for your platform.
  2. Open a start_<algo> script and replace the placeholder wallet with your own.
  3. Run it, then open http://127.0.0.1:4014/ for the dashboard.

readme.txt inside each archive has the full quick start, the common options, and the hardware-safety settings. config.txt is a commented copy of every setting, generated from the shipped binary, so it always matches the build you have.

config.txt may be JSON or a command line. The shipped file is JSON — every setting inside one { } object. bzminer equally accepts the same file written as the options you would have typed, which is what a mining OS generates and the easier form to write by hand:

# one option per line, or a flag and its value on one line
-a pearl
-p stratum+tcp://pool:1234
-w YOUR_WALLET
--worker "My Rig"

Quote a value containing a space, and start a comment with #. An option you type on the command line beats the file's copy of it, so the file is a default you can override without editing it.

Docker

There is an image, and it carries the GPU userspace as well as the miner - no ROCm install, no driver packages, nothing on the host but a kernel driver:

docker pull bzminer/bzminer:v100.51
docker run --rm -it --gpus all bzminer/bzminer -a pearl -o stratum+tcp://pool:port -w YOUR_WALLET

The identical image is on GitHub as ghcr.io/bzminer/bzminer:v100.51 if you would rather not pull from Docker Hub.

Or keep your config, log and plugins on the host and run it as a service:

docker run -d --name bzminer --restart unless-stopped --gpus all \
    -v /opt/bzminer:/data -p 127.0.0.1:4014:4014 \
    bzminer/bzminer --set http_address=0.0.0.0

With no arguments it runs /data/config.txt; anything you pass goes straight to bzminer, so every command line on this page works unchanged. http_address has to be 0.0.0.0 for the dashboard, because the default 127.0.0.1 binds the container's loopback, which no published port can reach.

GPU flags differ per vendor. NVIDIA is --gpus all (with nvidia-container-toolkit on the host). AMD and Intel are --device /dev/kfd --device /dev/dri --group-add video --group-add render and --device /dev/dri. Overclocking, MSR tuning and huge pages additionally need --privileged; mining does not.

Update with a pull, not the miner's self-update - and the old tag stays published, so a rollback is just naming it:

docker pull bzminer/bzminer && docker restart bzminer

The binary inside the image is byte-identical to the one in bzminer_v100.51_linux.tar.gz above. Full documentation: docker run --rm bzminer/bzminer cat /opt/bzminer/docs/DOCKER.md.

Updating on a mining OS

Both fetch this exact version, so they can be pasted as-is - the version below is already the one on this page.

MMPOS

Put this in miner profile → advanced → "Initiate command prior to miner launch". It downloads once; on every later launch the if sees the archive already in /tmp and exits immediately, so it costs nothing per restart.

export version="v100.51"
if [ -f "/tmp/bzminer_${version}_linux.tar.gz" ]; then
exit 0
else
cd /tmp; wget https://github.com/bzminer/bzminer/releases/download/${version}/bzminer_${version}_linux.tar.gz; tar -xvf bzminer_${version}_linux.tar.gz; sudo cp -adpR bzminer_${version}_linux/bzminer /opt/mmp/miners/bzminer/
fi

Hive OS custom miner

The Linux release now includes bzminer_custom-v100.51.tar.gz, a complete Hive OS custom miner: the full bzminer binary, flight-sheet config adapter, log launcher, and native /hive_status reporting.

  1. Click Copy on the Flight Sheet JSON below.
  2. Open the Hive OS farm page that lists all workers.
  3. Open the Flight Sheets tab.
  4. Click Import from Clipboard.
  5. Create/save the flight sheet and add your PEARL wallet.
  6. Apply the flight sheet to the workers.

The sample mines Pearl on HeroMiners. Change url, pool_urls, algo, and coin for another pool or algorithm. The package maps those fields, %WAL%, the Hive worker name, and pass directly to bzminer. Put optional bzminer CLI arguments in user_config.

Flight Sheet JSON

{
  "name": "PEARL_BZMINER_CUSTOM",
  "isFavorite": false,
  "items": [
    {
      "coin": "PEARL",
      "pool_ssl": false,
      "pool_urls": [
        "us.pearl.herominers.com:1200"
      ],
      "dpool_ssl": false,
      "miner": "custom",
      "miner_alt": "bzminer_custom",
      "miner_config": {
        "url": "us.pearl.herominers.com:1200",
        "algo": "pearl",
        "pass": "x",
        "miner": "bzminer_custom",
        "template": "%WAL%",
        "install_url": "https://github.com/bzminer/bzminer/releases/download/v100.51/bzminer_custom-v100.51.tar.gz",
        "user_config": ""
      },
      "pool_geo": []
    }
  ]
}

Hive OS built-in miner (manual binary replacement)

Run it over SSH or in the Hive web shell.

You do not need to know which bzminer version is installed. Hive keeps one folder per version under /hive/miners/bzminer/, and the flight sheet decides which one runs - so this replaces the binary in every bzminer folder it finds and whichever one your flight sheet points at gets the new build. That is the whole reason it does not name a version directory.

version=v100.51
cd /tmp && wget -q https://github.com/bzminer/bzminer/releases/download/${version}/bzminer_${version}_linux.tar.gz && tar -xf bzminer_${version}_linux.tar.gz || { echo "download failed"; exit 1; }
miner stop
n=0; for d in /hive/miners/bzminer/*/; do [ -d "$d" ] && cp -f "bzminer_${version}_linux/bzminer" "$d" && n=$((n+1)); done
[ "$n" -gt 0 ] && echo "updated $n bzminer folder(s)" || echo "no /hive/miners/bzminer/<version>/ found - install bzminer from the flight sheet first"
miner start

It prints how many folders it updated. 0 means bzminer has never been installed from a flight sheet on that rig, so there is nothing to replace yet.

Reporting problems

Please include: your OS, GPU model(s) and driver version, the algorithm and pool, and the first ~40 lines of the log (it prints the build, the devices it found, and what each backend reported). --list-metrics output helps for sensor issues.

Downloads

Bzminer .bat File Examples

bzminer.exe -a ethw -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3096

bzminer.exe -a etchash -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:35000

bzminer.exe -a kaspa -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3112

bzminer.exe -a ergo -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3100

bzminer.exe -a nexa -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3124

bzminer.exe -a kawpow -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:55555

bzminer.exe -a meowcoin -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3116

bzminer.exe -a alph -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3106

bzminer.exe -a radiant -w WALLET_ADDRESS.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3122

bzminer -a novo -p stratum+tcp://pool.woolypooly.com:3134 -w YOUR_WALLET.WORKER_NAME --nc 1

bzminer.exe -a ethw -w WALLET_ADDRESS_ETHW.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3096 --a2 alph --w2 WALLET_ADDRESS_ALPH.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3106

bzminer -a etchash -w WALLET_ADDRESS_ETC.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:35000 --a2 alph --w2 WALLET_ADDRESS_ALPH.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3106

bzminer -a ethw -w WALLET_ADDRESS_ETHW.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3096 --a2 alph --w2 WALLET_ADDRESS_ALPH.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3106 --a3 zil --w3 WALLET_ADDRESS_ZIL.WORKER_NAME --p3 zmp://ZIL_POOL

bzminer -a etchash -w WALLET_ADDRESS_ETC.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:35000 --a2 alph --w2 WALLET_ADDRESS_ALPH.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3106 --a3 zil --w3 WALLET_ADDRESS_ZIL.WORKER_NAME --p3 zmp://ZIL_POOL

bzminer -a ethw -w WALLET_ADDRESS_ETHW.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3096 --a2 kaspa --w2 WALLET_ADDRESS_KAS.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3112

bzminer -a etchash -w WALLET_ADDRESS_ETC.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:35000 --a2 kaspa --w2 WALLET_ADDRESS_KAS.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3112

bzminer -a ethw -w WALLET_ADDRESS_ETHW.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3096 --a2 kaspa --w2 WALLET_ADDRESS_KAS.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3112 --a3 zil --w3 WALLET_ADDRESS_ZIL.WORKER_NAME --p3 zmp://ZIL_POOL

bzminer -a etchash -w WALLET_ADDRESS_ETC.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:35000 --a2 kaspa --w2 WALLET_ADDRESS_KAS.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3112 --a3 zil --w3 WALLET_ADDRESS_ZIL.WORKER_NAME --p3 zmp://ZIL_POOL

bzminer -a ethw -w WALLET_ADDRESS_ETHW.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3096 --a2 radiant --w2 WALLET_ADDRESS_RXD.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3122

bzminer -a etchash -w WALLET_ADDRESS_ETC.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:35000 --a2 radiant --w2 WALLET_ADDRESS_RXD.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3122

bzminer -a ethw -w WALLET_ADDRESS_ETHW.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:3096 --a2 radiant --w2 WALLET_ADDRESS_RXD.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3122 --a3 zil --w3 WALLET_ADDRESS_ZIL.WORKER_NAME --p3 zmp://ZIL_POOL

bzminer -a etchash -w WALLET_ADDRESS_ETC.WORKER_NAME -p stratum+tcp://pool.woolypooly.com:35000 --a2 radiant --w2 WALLET_ADDRESS_RXD.WORKER_NAME --p2 stratum+tcp://pool.woolypooly.com:3122 --a3 zil --w3 WALLET_ADDRESS_ZIL.WORKER_NAME --p3 zmp://ZIL_POOL

Bzminer Setup

Download the latest Bzminer from the link above. After that, extract the archive and go to the folder with the miner. Select the coin you are interested in for mining and edit the .bat file. If you have not yet chosen what you want to mine, then we recommend that you first go to our mining calculator, where you can specify your video card and get the most profitable coin for the current day. Above you will find ready-made examples of bat files for each coin that you can mine on our pool. You will only have to specify your wallet address and, if desired, the name of the worker (rig).

Bzminer Basic Commands

-a, -a2 selection of algorithm for main and dual mining;
--disable disables the specified video cards from mining. A space is used as a separator. Use the device ID in the format pci_bus:pci_device (eg --disable 1:0 3:0). Use the --devices command to find the device IDs. In HiveOS, this parameter is set in the add. configuration;
-w this field specifies the address of your wallet or the address of the account on the pool;
--w2 to specify the second address if you mine in dual mode;
--pool_password, --pool_password2 password, use x by default;
-w, --worker, --worker2 worker name (rig ). It is set either as a separate parameter or through a dot after the wallet address;
--cpu-priority the level of CPU utilization during mining on a video card. The default is set to 2. If the processor does not pull, you can set 0. The maximum value is 5;
--reconnect-on-fail-shares reconnect the miner to the pool in case of receiving rejected shares from the pool ;
--nvidia 1mine only on Nvidia devices;
--amd 1mine only on AMD devices;
-h, --help display all available commands.

Bzminer Overclocking

--oc_lock_core_clock Lock core overclock value. You can also set different values ​​for video cards by specifying their ID, for example --oc_lock_core_clock 1000 1200 1300 (1000 for video card with ID0, 1200 for video card with ID1, 1300 for video card with ID2);
--oc_lock_memory_clock Lock overclock value in memory. You can also set different values ​​for video cards separated by a space;
--oc_core_clock_offset sets the core clock frequency of the video card in MHz. A space-separated value can be specified for multiple cards;
--oc_memory_clock_offset sets the graphics card memory frequency in MHz. You can specify a value for several cards through a space;
--oc_power_limit specifying the power limit (video card consumption), in watts. Through a space, you can specify a value unique for each card. For example --oc_power_limit 140 150 160 150.

Bz miner Common Errors/Issues

bzminer hung gpu detected - overclocking. Turn down your settings. If this does not help, update the miner to the latest version.

Dev Fees

ETH - 0,5%
ETC - 0,5%
RVN - 0,5%
ALPH - 0,5%
Kaspa - 0,5%

Bzminer API

--http_address specifies the IP address to listen on for the HTTP API. The default is 0.0.0.0;
--http_port sets the port. The default port is 4014.

Bz miner not starting

If you have Windows OS and the miner crashes immediately at startup, then add pause to the second line of the miner. Next, start the miner and read the error. After that, double-check your miner settings. If you have HiveOS or any other OS - go to the miner console and look at the logs of what is happening in the miner. After that, double-check your miner settings.