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

ERR_POOL Warning

Antminer S19 – Cannot Connect to Pool

stratum connection failed / pool connection timeout -- the miner never completes the TCP handshake with the pool. Not a credentials rejection (that's POOL_AUTH_FAIL), not mid-session drops (that's NET_ERR). The connection itself never opens, or opens and dies before mining.subscribe returns. Dashboard reads Alive: No, hashrate stays at 0 TH/s, pool has no worker online.

Warning — Should be addressed soon

Affected Models: All Antminer models -- S9, S9i, S9j, S9k, S17, S17 Pro, S17+, S17e, S19, S19 Pro, S19j, S19j Pro, S19 XP, S19k Pro, S21, S21 Pro, S21+ Hydro, L3+, L7, T19, T21, KA3, D9, Z15. Same diagnostic playbook applies to Whatsminer, Avalon, Innosilicon, and the Bitaxe / Nerd family with firmware-specific tweaks.

Symptoms

  • Dashboard Pool 1 / Pool 2 / Pool 3 rows all show `Alive: No` or `Dead` or `Connecting...` that never resolves
  • Miner log shows repeated `stratum connection failed`, `pool connection timeout`, `unable to connect to pool`, or `connect: Connection refused` lines
  • Hashrate reads 0 GH/s / 0 TH/s and has been zero since boot or since the last config change
  • Accepted shares counter stays at 0; rejected shares counter also at 0 -- nothing is reaching the pool
  • Pool-side dashboard shows no worker online, no historical hashrate for today, no recent `last seen` timestamp
  • Red pool status indicator in miner UI; widget says 'Disconnected', 'No pool available', or 'Stratum connection failed for all pools'
  • `ping <pool-host>` works but `nc -vz <pool-host> <port>` hangs or returns 'Connection refused'
  • Miner was connecting fine yesterday or last week and just stopped -- no firmware change, no config change on your end
  • You recently changed ISP, changed routers, enabled a VPN, installed Pi-hole / AdGuard, or turned on 'Threat Prevention'
  • Pool URL field shows `http://...`, `stratum://...` (missing `+tcp`), or has visible trailing/leading whitespace
  • Miner clock shows `1970-01-01` or is drifted more than a few minutes -- dead CR2032 RTC battery
  • Multiple miners on the same LAN fail to connect simultaneously -- router / ISP / firewall, not the miner
  • One S19 on the LAN connects fine, the sibling doesn't -- per-miner config or per-miner hardware
  • Connects fine on `:443` (TLS stratum) but not on `:3333` (plain stratum) -- ISP filtering non-standard ports

Step-by-Step Fix

1

Read the miner's log instead of the dashboard. SSH into the miner (`ssh root@<miner-ip>`) or open the firmware's log-tail UI. Bitmain stock: `/var/log/messages`. DCENT_OS / Braiins OS+ / LuxOS / Vnish: firmware-specific log viewer. Scroll or grep for the last 200 lines during a connect attempt. The dashboard says 'stratum connection failed' for every failure mode; the log says whether it's a DNS NXDOMAIN, a TCP timeout, a refused connection, a TLS handshake error, or silence. The log decides which of the next steps you run.

2

Verify the pool URL is exactly what the pool dashboard says. Copy-paste from the pool's docs -- no retyping. Scheme must be `stratum+tcp://` (plain), `stratum+ssl://` (TLS), or `stratum2+tcp://` / `stratum2+tls://` (Stratum V2). Hostname exactly as published. Port matching the scheme. Scan for trailing spaces, leading spaces, smart quotes (from copying out of Word or macOS autocorrect), and `0`/`O` or `l`/`1` confusions. Stock Bitmain UI does not validate URL format -- it silently retries forever against a malformed URL.

3

Test outbound reachability from the miner. SSH in and run `ping -c 5 1.1.1.1`. If this fails, the miner has no route to the internet -- check the gateway, default route (`ip route show`), LAN cable, switch port, VLAN configuration. If `ping 1.1.1.1` works, run `ping -c 5 <pool-host>`. If the IP pings but the hostname doesn't, it's DNS (next step). If both ping cleanly, the problem is port-filtering or pool-side (later steps). If neither pings, fix the network before touching the miner config.

4

Override the router's DNS to `1.1.1.1` (Cloudflare) and `8.8.8.8` (Google). Log into the router admin panel, find LAN / DHCP / DNS settings, change from 'auto / ISP' to the two public resolvers, save, reboot the miner. Canadian ISP resolvers (Bell, Rogers, Videotron) and many US carriers (Comcast, Spectrum, AT&T) routinely serve stale or NXDOMAIN answers on stratum hostnames with short TTLs. This single change resolves a large fraction of 'cannot connect' tickets across D-Central's support queue. Works at the router level for every device on the LAN; no per-miner config needed.

5

Disable router 'AI Protection', 'Threat Prevention', 'Armor', 'Eero Secure', 'Web Filter', 'Strict NAT', 'Gaming Mode', and any other deep-packet-inspection or heuristic firewall feature for the miner's VLAN or MAC address. ASUS AiProtection, Netgear Armor, Eero Secure, and ISP combo-box threat modules have all been observed silently dropping SYN to non-HTTP ports or injecting RST packets into outbound stratum sessions. Your mining rig does not need AI-powered web filtering. Isolate miners on a dedicated VLAN or exempt their MAC from the feature entirely.

6

Replace the CR2032 RTC battery on the control board if `date` on the miner shows `1970-01-01` or any clearly wrong time. Power off at the breaker. Open the control-board cover (two to four Phillips screws). The CR2032 is a shiny 20 mm coin cell on the board -- note the polarity, slide the retainer clip aside, drop in a fresh battery (any drug store, ~$2), close up. Reboot. Configure NTP to `pool.ntp.org` or `time.google.com`. TLS stratum on `:443` and Stratum V2's Noise handshake both reject stale clocks.

7

Give the miner a static DHCP reservation with a 24-hour lease. In the router admin panel, find DHCP client list, pin the miner's MAC to a specific IP, set the lease to 86400 seconds. In the miner's own network panel, match the reservation and pin DNS to `1.1.1.1` and `8.8.8.8`. Short default leases (30-60 minutes) trigger mid-session renewals that break stock Bitmain's socket handling. A long lease plus static reservation stops a whole class of 'disconnects at predictable intervals' tickets that get misread as pool-connect failures.

8

Test the stratum port reachability with `nc`. From a laptop on the same LAN: `nc -vz <pool-host> <port>` for each pool endpoint. Expect 'Connection to <host> <port> succeeded'. If `nc` hangs for 10+ seconds and times out, the port is blocked by your ISP, your router, or a firewall in between. If `nc` returns 'Connection refused' immediately, the pool backend is down or you're on the wrong port. If `nc` succeeds cleanly from the laptop but the miner still can't connect, the problem is per-miner: firmware, clock, or hardware. Move to step 9.

9

Capture a `tcpdump` during a connect attempt. On a laptop with a USB Ethernet adapter on the same LAN, or on a mirrored switch port: `sudo tcpdump -i <iface> -n 'host <pool-host> and port <port>' -w pool-connect.pcap`. Trigger the miner to reconnect. Stop the capture after 30 seconds. Open in Wireshark. Filter `tcp.flags.syn == 1 && tcp.flags.ack == 0` to see outbound SYN. Filter `tcp.flags.reset == 1` to see any RSTs. Signatures: SYN out, no SYN-ACK = port blocked upstream. SYN + SYN-ACK + ACK then immediate RST from a weird TTL = middle-box injection. SYN + SYN-ACK + ACK then miner sends FIN = miner-side stack issue.

10

Switch to a `:443` TLS endpoint to bypass port filtering. Most pools publish a TLS-stratum endpoint on port 443 (`stratum+ssl://pool:443`) specifically because it tunnels through firewalls that block non-standard ports. Update the pool URL in the miner config, save, reboot. If `:443` connects where `:3333` didn't, you've confirmed port filtering upstream -- leave the miner on `:443` or fix the upstream firewall. Requires a correct clock on the miner (see step 6) for the TLS handshake.

11

Configure pool-2 and pool-3 as fallbacks with heterogeneous endpoints. Pool-1 = your regional low-latency primary (e.g., `us.stratum.braiins.com:3333` or an Ocean endpoint near you). Pool-2 = `public-pool.io` or `solo.ckpool.org` on port 3333 (solo-lottery fallback, decentralization-friendly). Pool-3 = a TLS endpoint on `:443` (firewall-tunneling fallback). When pool-1 has a backend outage, pool-2 takes over within seconds; when an ISP filter blocks non-standard ports, pool-3 carries hashrate. Stock Bitmain, DCENT_OS, and Braiins OS+ all handle multi-pool failover natively.

12

Disable or bypass any VPN / proxy / Pi-hole / AdGuard on the miner's egress path. Install a whole-home VPN (Mullvad, NordVPN, ProtonVPN) or per-miner VPN client and your miner's outbound stratum may be routed through an egress node that the pool's anti-abuse filter has flagged or blocked at the country level. Pi-hole and AdGuard can also accidentally blackhole stratum hostnames if their blocklists include domains that overlap with pool CDNs. Temporarily disable, reboot the miner, retest. If the pool connects with filters off, exclude the miner's VLAN from the filter or whitelist the pool hostname.

13

Hard power-cycle the miner at the breaker. 30 seconds off, back on. This clears any wedged socket state on the miner side, flushes in-firmware DNS cache that may be holding a stale backend IP, and forces a fresh DHCP lease. It also re-runs the boot-time NTP sync if one is configured. A shocking number of 'cannot connect' tickets resolve at this step -- cost zero, rules out transient state, and sometimes ends the whole ticket before you need to flash firmware or open a hot-air station.

14

Flash DCENT_OS on the problem miner. DCENT_OS is D-Central's own open-source Antminer firmware, built by Mining Hackers for Mining Hackers, maintained in public on GitHub. Download the image from `d-central.tech/dcent-os`, write to SD card (or USB, depending on model), boot the miner with the SD card seated, wait for the flash to complete, remove the SD, reboot. Modern stratum handling with sane connect timeouts, readable log output that names the actual failure mode, and per-pool fast failover. Alternatives: Braiins OS+, LuxOS, Vnish. Not for Whatsminer / Avalon / Innosilicon / Bitaxe -- different hardware, different firmware paths.

15

Check pool-side IP whitelist. Some pools (NiceHash, some private pools, sub-account configurations on Braiins or F2Pool) let you lock a worker to a specific public WAN IP for security. If your modem rebooted and your ISP rotated your WAN IP, the old whitelist entry no longer matches and the pool refuses the connection with 'Connection refused' on TCP. Log into the pool dashboard, find the sub-account / worker security settings, remove the stale IP whitelist or update to the new public IP (check `ifconfig.me` from any LAN device).

16

Re-seat and strain-relieve the Ethernet cable. Power off at the breaker. Unclip the RJ45 from the control-board, inspect the gold contacts for oxidation or tarnish (wipe with 99% IPA on a lint-free wipe if present), reconnect firmly until it clicks. Tape or zip-tie the cable to the chassis with 10-15 cm of strain relief -- this prevents fan vibration from working the jack loose over weeks. S19-family RJ45 jacks are notorious for cracked solder joints under sustained vibration; strain relief before replacement buys months of uptime.

17

Swap the Ethernet cable with a fresh known-good CAT6 under 5 m. Old CAT5e and cheap drawer-find CAT6 drop packets under sustained load more than people expect. Use a <5 m run of new CAT6 directly from the miner to the switch (no couplers, no wall plates) as a diagnostic baseline. If the connect works with the fresh cable, the old cable was the issue -- replace permanently. If it still fails, Ethernet is eliminated as a cause and you can move to firmware / hardware isolation.

18

Swap to a different switch port or a different switch entirely. Consumer-grade unmanaged switches sometimes develop per-port issues under sustained load -- one port drops packets while others are clean. Managed switches (MikroTik, TP-Link Omada, UniFi) give you per-port counters and link-quality telemetry to confirm. If the miner connects on a different port but not the original, the switch is the issue. If it fails on every port across two switches, the miner's own NIC / PHY is suspect -- Step 19.

19

Wiggle-test the RJ45 jack on the control board. With the cable connected and the miner powered on, gently apply lateral pressure to the Ethernet cable where it enters the jack. Watch the link LED (green) next to the jack. If the LED flickers or goes dark under mild pressure, the jack's solder joints have cracked from sustained fan vibration -- documented failure mode across S19 and S19 Pro rackmount installs. This is a hot-air rework job (Kapton, ~280 C top-side reflow, clean pads, fresh jack). Not a DIY fix unless you already own a rework station and have reflowed SMD before. Otherwise: D-Central bench repair.

20

Inspect the PSU 12V rail under full load. If the miner is intermittently dropping and reconnecting rather than simply never connecting, the PSU may be sagging the 12V rail under peak load enough to reset the SoC's Ethernet block without a full miner reboot. Multimeter on DC, probe the 12V output at the PSU-to-board connector under full load -- expect >=13.8 V sustained on an APW9 / APW12 / APW12+. Sustained <12.5 V under load means PSU replacement. Swap with a known-good unit to confirm.

21

Stop DIY and book a D-Central repair slot. If you've eliminated URL typos, DNS, port filtering, VPN, AI-Protection, clock, DHCP, cable, switch, firmware (via DCENT_OS flash), pool-side IP whitelist, and PSU sag -- and the miner still can't connect -- that's control-board silicon territory. Dying Ethernet PHY, SoC with intermittent MAC-layer faults, or eMMC holding a corrupted network-stack that reflash won't clear. Ship to D-Central: `d-central.tech/services/asic-repair/`. We bench-test on programmable load + isolated pool backend; if the fault follows the board, it's board-level, and if it clears on our bench we'll tell you it was your LAN.

22

Ship safely for repair. Anti-static bag the control board (or the entire miner if you want a full diagnostic). Double-box with >=5 cm foam on every side. Include a written note documenting: the exact error string from the log, what tcpdump showed (SYN out no SYN-ACK back? RST from weird TTL? miner-side FIN?), which pool endpoints you tested, firmware versions tried, and everything you already ruled out (DNS, AiProtection, clock, cable, switch port, static DHCP). Diagnostic time is billable -- a good note cuts the repair quote materially. Turnaround 5-10 business days, Canada-wide, US and international welcome.

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.