Passer au contenu

Nous améliorons nos opérations pour mieux vous servir. Les commandes sont expédiées normalement depuis Laval, QC. Questions? Contactez-nous

Bitcoin accepté au paiement  |  Expédié depuis Laval, QC, Canada  |  Soutien expert depuis 2016

EXTRANONCE_UNKNOWN Warning

extranonce_subscribe Unknown Method Error

Pool returns `{"error":[20,"Unknown method",null]}` in response to `mining.extranonce.subscribe`. The method is a BFGMiner-style Stratum V1 extension, not part of the base SV1 spec. Most major pools (Antpool, F2Pool, Slush/Braiins, ckpool, Public Pool, ViaBTC) implement it; self-hosted Umbrel pools, P2Pool, and many UNOMP/NOMP forks do not. The rejection is usually a polite refusal that the session survives, but specific firmware regressions (Bitaxe ESP-Miner, NerdMiner late-2024 builds, strict-mode legacy firmware) can mishandle the response and abort the session, causing zero hashrate or reconnect loops.

Warning — Should be addressed soon

Affected Models: All ASIC and open-source miners that send `mining.extranonce.subscribe` during pool handshake — Bitaxe (ESP-Miner / AxeOS — Supra, Ultra, Hex, Gamma, GT, Max), NerdMiner, NerdAxe, NerdNOS, NerdQAxe, PiAxe, StealthMiner, plus any Antminer / Whatsminer / Avalon firmware build with the BFGMiner-derived extension enabled (DCENT_OS, Braiins OS+, LuxOS, Vnish, certain stock Bitmain builds)

Symptoms

  • Firmware log shows `{"id":N,"method":"mining.extranonce.subscribe","params":[]}` going out, followed by `{"id":N,"result":null,"error":[20,"Unknown method",null]}` coming back
  • Bitaxe / NerdAxe / NerdQAxe AxeOS dashboard shows `Pool: Connected` but the log line `extranonce.subscribe failed` repeats every reconnect
  • Hashrate at the miner reports normal but the pool worker page shows zero shares after 10+ minutes
  • After a pool change, miner falls into a reconnect loop — connect, subscribe, authorize, `extranonce.subscribe` rejected, disconnect — every 30-60 seconds
  • Stock Antminer firmware is silent about it, but Wireshark / `tcpdump` shows the rejection
  • DCENT_OS / Braiins OS+ / LuxOS / Vnish firmware logs flag the rejection at `WARN` level, then continues mining cleanly
  • You're pointing at a custom pool, self-hosted Umbrel mining pool, P2Pool node, or older UNOMP/NOMP-derived backend that doesn't implement the extension
  • You're behind a stratum proxy (farm-side, ISP transparent proxy, or translation layer) that's stripping or mangling the call
  • Shares submitted, but pool reports them all as `stale` immediately — extranonce rolled and the miner never got the update
  • You recently flashed firmware (Bitaxe ESP-Miner, NerdMiner late-2025 builds) and the warning appeared with the new build
  • Error code `20` from the pool with text `Unknown method` in the JSON-RPC error array
  • Pool's worker dashboard shows your worker as `online` but submitted-share counter is flat

Step-by-Step Fix

1

Verify shares are actually landing on the pool side. Open your pool's worker dashboard (Antpool, F2Pool, Public Pool's `web.public-pool.io/app/userPanel`, `solo.ckpool.org/users/<your-address>`). If the share counter is climbing, `EXTRANONCE_UNKNOWN` is cosmetic — silence the warning in your firmware UI if the option exists and stop here. About 80% of these reports are no-ops, not real failures.

2

Restart the miner cleanly. Power off for 30 seconds, power back up. Watch the firmware log on first boot for the subscribe/authorize/extranonce-subscribe sequence. Cleared transient state can resolve a stuck reconnect loop without any deeper intervention, especially after a firmware update.

3

Switch to a known-good supporting pool as a control. For Bitaxe / Nerd / open-source: `stratum+tcp://public-pool.io:21496`. For ASICs: `stratum+tcp://stratum.slushpool.com:3333` or `stratum+tcp://stratum.antpool.com:3333`. Use your on-chain BTC address as username, `x` as password. Reboot and observe 5 minutes. Shares landing = original pool was the issue.

4

Update firmware to the latest stable. Visit your firmware's GitHub releases page (DCENT_OS, ESP-Miner / Bitaxe, NerdMiner, NerdAxe, NerdNOS, NerdQAxe) and flash the current stable build. Reboot, observe 10 minutes. Most extension-handling regressions get fixed within one or two releases.

5

Suppress the warning in firmware logs. If your firmware exposes a log-level toggle, set the stratum module to `INFO` or higher to drop the noisy `WARN`. The rejection itself is harmless; you just don't need to see it every reconnect when you're on a non-supporting pool.

6

Capture the stratum exchange with `tcpdump`. From a laptop on the same LAN: `sudo tcpdump -i any -A -s 0 host <pool-host> and port <pool-port> -w extranonce.pcap`. Reboot the miner. Capture 90 seconds. Open in Wireshark, follow the TCP stream. Confirm whether the session continues after the `Unknown method` rejection (cosmetic) or gets torn down (firmware bug).

7

Hand-test the pool with `nc` to confirm pool behaviour without the miner. Run `nc -v <pool-host> <pool-port>`. Paste literally: `{"id":1,"method":"mining.subscribe","params":["test"]}` (newline) `{"id":2,"method":"mining.authorize","params":["bc1q...","x"]}` (newline) `{"id":3,"method":"mining.extranonce.subscribe","params":[]}` (newline). Watch the responses. `result:true` = supported. `error:[20,"Unknown method",...]` = polite refusal.

8

Switch pool port. If you suspect a transparent ISP proxy on port 3333, try the pool's alternate port. Antpool offers `:443` (TLS), Slush has `:3334` and `:9332`, F2Pool has `:25` and `:1314`. Different port = different proxy path = often fixes mangled-extension symptoms in residential / mobile-tethered networks.

9

Roll firmware version intentionally. Note your current firmware build string. Flash one stable release before your current build, observe 10 minutes. Roll forward to the latest stable, observe 10 minutes. The window between regression-introduced and regression-fixed is usually 1-3 releases on fast-moving open-source firmwares.

10

Force-disable extranonce-subscribe on the miner side if your firmware supports it. ESP-Miner late-2025 builds added a `disable_extranonce_subscribe` config flag. DCENT_OS exposes pool-level extension flags. Check your firmware's config schema. Disabling the call makes the rejection moot — at the cost of forcing a reconnect on any pool-side extranonce roll.

11

Deploy a stratum proxy on a Raspberry Pi 4. Use SRI `translation-proxy` (github.com/stratum-mining/stratum) or BTCRoute. The proxy speaks the full extension set to your miner and a base SV1 dialect upstream. Even when the upstream pool doesn't support `extranonce.subscribe`, the proxy answers `{"result":true}` to the miner and silently drops the call upstream. Solves the rejection for an entire fleet with one $90 Pi.

12

Run a stratum-proxy VPS deployment for cross-region farms. A small VPS in the same region as your upstream pool ($15-$40/month at DigitalOcean / Hetzner / Vultr) collapses fleet-side stratum traffic, normalizes extension behaviour, and gives you a single point to upgrade firmware-handler logic. Document the architecture in your team runbook.

13

Build firmware from source with verbose stratum logging. DCENT_OS (`DCentralTech/DCENT_OS`), ESP-Miner (`bitaxeorg/ESP-Miner`), NerdMiner (`BitMaker-Lab/NerdMiner_v2`) all build cleanly from source. Enable maximum stratum log level, flash, reboot. You'll see every byte going out and coming back — including the exact framing of the rejection that's confusing the parser.

14

Patch the stratum handler at the source-code level. Once you've isolated the bug, patch it: in the `on_pool_response` handler, special-case method-id `mining.extranonce.subscribe` so an `Unknown method` error is logged at `INFO` and treated as a no-op rather than a session-fatal error. Build, flash, observe. Submit upstream as a PR — open-source mining infrastructure improves at the rate operators publish their patches.

15

Add a stub handler to your self-hosted pool backend. If you run UNOMP / NOMP / S-NOMP / a custom Go pool, the cleanest pool-side fix is a four-line method handler that returns `{"result":true}` for `mining.extranonce.subscribe` even though your pool never actually rolls extranonce1 mid-session. Every miner pointed at your pool stops complaining, and you haven't broken anything because you never push the corresponding `mining.set_extranonce` notification.

16

Open a D-Central support ticket for fleet-scale deployments where DIY isn't moving the needle. Bring: a `tcpdump` capture, your firmware version string, your pool selection, and a description of what you've tried. D-Central support handles stratum-proxy deployment recommendations, firmware-flash recovery if a roll attempt has bricked a control board, and Antminer firmware migration to DCENT_OS for fleets that need clean extension handling out of the box. https://d-central.tech/contact/

17

For Antminer fleets, the fastest production-grade fix is to flash DCENT_OS — D-Central's own open-source Antminer firmware. Mature stratum extension handling (graceful WARN-and-continue on `Unknown method`), per-chip HW% diagnostics, autotuning, and SV2 support — built by Mining Hackers, maintained in public, no licensing fees, no vendor lock-in. https://d-central.tech/dcent-os/

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.