Whatsminer Error 2040 – ASICboost Not Supported By Pool
Informational — Monitor and address as needed
Symptoms
- BTMiner dashboard / WhatsMinerTool reports Error Code: 2040 with message like 'ASICBoost not supported', 'version-rolling unsupported', 'pool reject mining.configure', or 'version-rolling disabled by pool'
- Miner is otherwise hashing — pool is Alive, shares submit, accepted-share count climbs on the pool dashboard
- Effective wall-power efficiency drops roughly 5-15% vs the same miner on a version-rolling-enabled pool — same wattage, fewer shares per joule
- Reported hashrate may drop by 1-3% in stock BTMiner display because internal nonce-search throughput is constrained without version-rolling
- BTMiner log shows lines like 'mining.configure: version-rolling rejected', 'pool0 ASICBoost disabled', 'subscribe: extension not negotiated', or 'version_rolling_mask=0x00000000'
- Sibling codes 2020 (stratum connect fail) and 2021 (subscribe timeout) are NOT present — the miner connected fine, the pool just refused the extension
- Error appears immediately after switching pools, after a pool firmware change on the operator side, or after a BTMiner firmware update that re-negotiated capabilities
- WhatsMinerTool's pool detail view shows 'Version Rolling' or 'ASICBoost' indicator as Off, Disabled, or no value
- Pool's own documentation does not mention mining.configure, version-rolling, ASICBoost, BIP310, or BIP320 in their stratum/protocol section
- Power bill stays the same but daily satoshi yield is consistently below what calculators predict for nameplate hashrate at current network difficulty
- BTMiner API on TCP 4028 ({"cmd":"summary"}) returns version_rolling_mask=0x00000000 or omits the field entirely for the active pool
Step-by-Step Fix
Open WhatsMinerTool, view the error log, and confirm the exact pool slot throwing 2040. BTMiner can run three pool slots simultaneously; one or all may be flagged. Note the pool URL and worker for the affected slot. This is the only piece of information you need before deciding whether to switch pools, switch endpoints, or accept the trade-off. Takes 60 seconds and tells you which slot is the culprit.
Look up your pool's version-rolling support in their official documentation. Search the pool's docs page for version-rolling, ASICBoost, mining.configure, BIP310, or BIP320. Slush/Braiins, F2Pool, Foundry USA, Antpool, ViaBTC, Luxor all support it on current endpoints. Smaller pools, solo ckpool setups, and some legacy P2Pool variants do not. If the docs are silent on the topic, assume not supported.
Decide intentionally: switch pools or accept the loss. Error 2040 is informational, not a fault. Mining for maximum revenue → switch to a version-rolling pool, 2040 clears within one stratum reconnect. Solo mining for sovereignty (running your own ckpool, mining to your own node, Ocean's no-template mode) → the 5-15% efficiency loss is the price of pool independence. Document the choice intentionally; don't tolerate it accidentally.
If switching pools, copy the new pool's current stratum URL straight from their docs. Pool URLs rotate and rebrand. WhatsMinerTool > Pool Settings > Pool 1 > paste the new stratum+tcp://host:port URL with your wallet/worker in the correct format for that pool (Slush/Braiins wants worker name only; F2Pool/Antpool want wallet.worker). Save and reboot the miner.
Confirm 2040 clears after reboot. Wait 60-90 seconds for the miner to fully boot, the network to settle, and stratum to subscribe. Open WhatsMinerTool, refresh the error log. 2040 should be gone, the new pool should be Alive, and shares should start submitting within 2-3 minutes. If 2040 persists, escalate to Tier 2.
Check for the pool's ASICBoost-specific endpoint variant. A handful of pools historically offered separate ASICBoost-on and ASICBoost-off endpoints, distinguished by URL or port number. Search the pool's docs for any mention of an alternate stratum endpoint and try it. If the pool publishes only one endpoint and it's still throwing 2040 while other miners on the same pool work, escalate to support — your account or IP may have version-rolling disabled.
Configure pool slot 2 with a known-good version-rolling pool as a test. WhatsMinerTool > Pool Settings > Pool 2 > set Slush/Braiins as the test pool with a fresh worker. Save, reboot. Pool slot 1 will try first; manually disable slot 1 temporarily so slot 2 takes over, then verify version-rolling negotiates cleanly on slot 2. This isolates pool-side cause from firmware-side cause definitively.
Verify version-rolling status via the BTMiner API. From a workstation, echo '{"cmd":"summary"}' | nc <miner-ip> 4028 and parse the JSON response. Look for Version Rolling or version_rolling_mask fields. A non-zero mask (e.g. 0x1fffe000) means version-rolling is active. A zero mask or missing field on the active pool confirms 2040. This is the definitive check — dashboard text can lag behind actual stratum state.
Inspect BTMiner kernel logs for the mining.configure exchange. SSH or serial console to the miner, tail -f /var/log/btminer.log or equivalent. Watch a stratum reconnect cycle and look for mining.configure, version_rolling, extension, or subscribe lines. The pool's response is logged verbatim — read it. The pool either acknowledges or refuses, and the log says which side failed and how.
Calculate the actual efficiency loss for your specific miner. Take 24 hours of pre-2040 daily satoshi yield from your pool dashboard's history vs 24 hours of post-2040 yield, normalised against network difficulty. The delta — typically 5-15% — is your real-world efficiency cost. Use this number to make the cost/benefit call on whether switching pools is worth it for your operation size. A fleet of 10+ miners almost always justifies the switch.
Roll back BTMiner firmware to the last known-good version-rolling build if 2040 started immediately after a firmware update and you've confirmed multiple known-good pools all reject the miner's mining.configure. Burn the prior stable image with Raspberry Pi Imager onto a microSD card. Insert into the control-board SD slot, hold reset through the recovery sequence for your model — M30S family typically wants 10 seconds held through power-on; M50/M60 differs.
Capture a packet trace of the mining.configure round-trip. Mirror the miner's switch port: sudo tcpdump -i eth0 -w /tmp/mc-2040.pcap host <pool-ip> and port <pool-port>. Reboot the miner so it issues a fresh stratum subscribe. Open the pcap in Wireshark, follow the TCP stream. Look for the JSON line starting with mining.configure and the pool's response immediately after. Decisive proof of which side is at fault.
Test against a Stratum V2 pool endpoint via Braiins Farm Proxy. Stratum V2 negotiates the equivalent of version-rolling natively — the work-template path includes the version field rolled per job. If your pool offers V2, run Braiins Farm Proxy on a local Pi between the miner and the pool. Resolves both 2040 and broader stratum-v1 quirks BTMiner sometimes exhibits, and gives you per-miner stats visibility.
Test the version_rolling_mask you're requesting against the pool's accepted mask. Some pools restrict version-rolling to a subset of the BIP320 16-bit field. If your miner requests 0x1fffe000 (full 16 bits) and the pool only accepts 0x1fff0000 (12 bits), some BTMiner builds raise 2040 on the partial response rather than accepting the negotiated mask. Check the pool's docs and configure your miner to request the pool's exact mask via WhatsMinerTool's advanced settings.
For multi-pool operators: standardise your fleet on version-rolling-enabled pools. If you run more than 10 miners and any are throwing 2040, the cumulative efficiency loss is paying for a fleet management upgrade. Document your accepted pool list, audit each miner's pool slot 1, normalise to the standard, and instrument fleet monitoring to alert on version_rolling_mask=0x00000000 rather than waiting for 2040 to surface in the dashboard.
Book a D-Central remote diagnostic if 2040 persists across multiple known-good version-rolling pools, BTMiner firmware rollback, and a packet trace shows the miner sending well-formed mining.configure payloads that pools still refuse. Rare scenario — usually a control-board NIC corrupting outbound JSON, or an account-level pool restriction. We connect via your LAN or SSH reverse tunnel, inspect live stratum traffic, and either clear it remotely or recommend ship-in. Also useful for fleet pool-strategy audits.
When to Seek Professional Repair
If the steps above do not resolve the issue, or if you are not comfortable performing these repairs yourself, professional service is recommended. Attempting advanced repairs without proper equipment can cause further damage.
Related Error Codes
Still Having Issues?
Our team of Bitcoin Mining Hackers has been repairing ASIC miners since 2016. We have seen it all and fixed it all. Get a professional diagnosis.
