A miner that isn't on the network makes zero money, and a fleet you can't see is a fleet you can't fix. This section covers how ASICs get an address, how they're found, how monitoring tools talk to them over the cgminer API, how pools and worker names are wired, and the platforms that manage thousands of machines at once.
Every ASIC has one Ethernet port and no screen, so the network is the only way in. Out of the box, Bitmain, MicroBT, and Canaan control boards all default to DHCP: on boot they ask the site DHCP server for an address and accept whatever lease they're handed. That gets a machine online fast, but the address can change on the next lease renewal, which breaks any tool that expects a machine to stay put. At hyperscale you pin addresses one of two ways: a static IP configured on the miner itself, or a DHCP reservation that ties a MAC address to a fixed IP on the server. Reservations are usually the better call for a big fleet because you manage all addressing centrally instead of walking to each machine.
| Maker | Default on boot | Factory-reset / config address | Where to set static |
|---|---|---|---|
| Bitmain Antminer | DHCP | 192.168.1.254 (static after reset) | Web UI → Network → Protocol → Static |
| MicroBT Whatsminer | DHCP | Reachable via WhatsMinerTool / web (root login) | WhatsMinerTool → Configuration → Interface → Static, or web UI |
| Canaan AvalonMiner | DHCP | 192.168.168.168 in config mode (PC set to 192.168.168.100) | Web UI (root/root) → Network → Static, then reboot |
A mining floor is thousands of chatty embedded-Linux devices on cheap hardware. You don't want them on the same flat network as office PCs or management servers. Segment the fleet onto its own VLAN and subnet: it contains the broadcast traffic ASICs generate, keeps a compromised or misbehaving miner away from business systems, and gives you clean address blocks to reason about. Plan the address space before you rack anything — a common pattern is a subnet (or VLAN) per row, PDU group, or container, so an IP tells you roughly where the machine physically is. That mapping is gold when you're chasing a fault.
When a machine is on DHCP and nothing shows its address, every maker gives you a broadcast-based way to find it. You press a physical button on the control board and the miner blasts a packet containing its hostname, MAC, and current IP; a listener tool on a PC in the same broadcast domain catches it and shows the address. The button and tool names differ by maker, but the mechanism is identical. This only works when your PC is on the same VLAN/subnet as the miner — the broadcast won't cross a router.
| Maker | Button on control board | Listener tool | Notes |
|---|---|---|---|
| Bitmain | IP Report (hold ~1 sec) | IP Reporter (Windows); also BTC Tools / APMinerTool | Run as admin so it can open the listening socket past the firewall |
| MicroBT | IP Found (long-press until 2 LEDs flash) | WhatsMinerTool → IP Monitor → Start | Tool also does bulk config, firmware, and power modes |
| Canaan | Enter config mode (fixed 192.168.168.168) | AvalonMiner tool / browser to config IP | Set your PC to 192.168.168.100 to reach a machine in config mode |
Nearly every stock ASIC firmware descends from cgminer, and it exposes a JSON control/monitor API on TCP port 4028 (bmminer on Antminers, btminer on Whatsminers, and cgminer-derived stacks on Avalon and custom firmware all speak it). This is how monitoring platforms poll a fleet without logging into web UIs: they open 4028, send a command like {"command":"summary"}, and parse the JSON reply. You can test any machine by hand with netcat: echo '{"command":"stats"}' | nc <miner-ip> 4028. Read commands are open by default; privileged/write commands (switch pools, restart) require the firmware to be started with API access allowed for writing.
| Command | What it returns | Field a tech watches |
|---|---|---|
| summary | Overall miner status — average GH/s, elapsed uptime, accepted/rejected shares, hardware-error % | GHS av vs. rated hashrate; HW error % |
| stats | Per-hashboard detail — chip count found (ACN), chip status string (ACS), board temps, frequency, fan RPM | A board with fewer chips found = failing hashboard |
| pools | Each configured pool — URL, worker/user, Alive/Dead status, priority, accepted/rejected, last share | A pool showing Dead or zero accepted shares |
| estats | Braiins OS extension — same as stats but drops zombie/blacklisted devices | Cleaner per-board view on Braiins-flashed units |
A miner points at one or more pools via a stratum URL (for example stratum+tcp://host:port) plus a username and a worker name. The username is usually the account or wallet; the worker name identifies that specific machine on the pool dashboard so you can tell rig-A12 apart from rig-A13. Most operators configure three pools per miner — a primary and two backups — so the machine fails over automatically if a pool goes unreachable. Two things silently cost you money here: a bad worker/username, and DNS that can't resolve the pool hostname.
Past a few dozen machines you stop touching miners individually and run a fleet platform. They all do the same core job — poll thousands of miners (mostly over the 4028 API), surface hashrate/temps/errors/offline status, alert on faults, and push bulk actions like reboot, pool change, firmware update, and power/curtailment control. They differ mainly in whether they need an on-site agent and how deep the control goes.
| Platform | Architecture | Monitors | Controls / notes |
|---|---|---|---|
| Foreman | Cloud dashboard + on-site Pickaxe agent | Hashrate, chip-level temps, hashboard health, per-port PDU power | Remote reboot, pool/firmware/power changes; hard reboot via PDU |
| Awesome Miner | Agentless — connects straight to 4028 | Hashrate, pools, errors across 200+ models, up to ~200,000 miners | Needs port 4028 reachable; pool switch, reboot, firmware |
| minerstat (ASIC Hub) | Local agent (64-bit Linux/RPi) relays to cloud | Fleet health, grouped by firmware type | Device discovery + ARP MAC resolve; bulk config |
| Hiveon ASIC Hub | Local agent bridging stock ASICs to Hive OS | Fleet status in Hive dashboard | Either run the agent OR flash Hiveon firmware — not both on one unit |
| Braiins | Braiins OS+ firmware + Braiins Manager (cloud) + Toolbox (local) | Real-time monitoring, energy reporting, issue tracking | Curtailment scheduling, bulk power targets/fans, Stratum V2 |
A cloud dashboard can't reach machines sitting on a private mining VLAN, so most platforms either run a local agent (Foreman's Pickaxe, minerstat/Hive's ASIC Hub) that lives on the LAN and relays data out, or connect directly to 4028 when they're on the same network (Awesome Miner). Discovery itself happens a few ways, and big sites use more than one.
Most network calls on the floor fall into a handful of patterns. Read the symptom, not the panic — the single biggest tell is scope: one machine is a machine problem; a whole row dropping at once is almost never the miners.
| Symptom | Likely cause | First move |
|---|---|---|
| No link LED at the port | Bad patch cable, dead switch port, or run past the 100 m copper limit | Swap cable, try another port, check run length |
| Link up but no IP | DHCP scope exhausted, wrong VLAN, or no DHCP server on that segment | Check DHCP pool/lease table; confirm the port's VLAN |
| Has an IP but unreachable / intermittent | IP conflict — two MACs on one IP, or an address on the wrong subnet | Scan for duplicate IP; move to a reservation/static |
| Reachable but not hashing to pool | DNS can't resolve stratum host, wrong worker/user, or stratum port blocked | Verify gateway+DNS, worker name on the pool side, egress port |
| A whole row/rack offline at once | Upstream — access switch, its uplink, or the PDU/breaker feeding it | Check the switch and PDU/breaker for that row before touching miners |