ASIC Miner – Wrong Firmware Version Flashed
Warning — Should be addressed soon
Symptoms
- Web UI banner or dashboard shows `FW_ERR`, `firmware mismatch`, `Hardware version not recognized`, or `BMMiner version mismatch`
- Miner boots to a login prompt but reports `0 ASIC found` across one or more chains despite hashboards being physically healthy
- `kern.log` / `/var/log/messages` shows `check_asic_number_with_power_on: Chain[X] find 0 asic` on boards that were fine before the flash
- Dashboard reports nameplate hashrate is wildly wrong — e.g. an S19 Pro (110 TH/s) reporting as a 95 TH/s S19, or 3 TH/s (S9-tier) on what should be a 110 TH/s S19
- `cgminer` / `bmminer` fails to start and the init script exits with `hardware version mismatch`, `wrong PSU type`, or `fail to read pic temp` where it was working previously
- Green power LED but no red/green alternation from the control board — the miner is stuck mid-boot, not fully crashed
- Fans spin up to 100% and stay there because `bmminer` never hands control back to the thermal loop
- Web UI is unreachable after the flash completed "successfully" — the new image expects a different network stack than the board can speak
- Frequency / voltage settings are rejected with "invalid range" errors because the firmware's chip table doesn't match the silicon
- `dmesg` shows `EEPROM read failure` or `signature mismatch` on multiple hashboards at once (firmware built for a different chip family can't parse the calibration bins)
- The miner runs but hashrate is 30–80% of nameplate, HW% is pinned above 10%, and chips thermal-throttle aggressively — the mining engine is misdriving real silicon at wrong voltages
- After a "Bitmain firmware" flash, the UI brands itself with a different model name than what's printed on the case (e.g. case says S19 Pro, UI says S19j Pro)
Step-by-Step Fix
Read and record the exact hardware revision from the control-board silkscreen. Power off first; pop the cover; photograph the control board under good light. The revision string (`C49`, `BHB42801`, `BHB49201`, etc.) is usually near a corner or next to the SoC. Write this down — it's the single most important data point for every subsequent step, and it's the thing the operator who flashed wrong firmware did not check. Cross-reference against the Bitmain hardware table at `service.bitmain.com/support/download` before downloading any image.
Download the correct stock firmware image for that revision. Navigate to `service.bitmain.com/support/download`, select your exact model and revision. Do *not* download "S19 firmware" — download the S19-revision-X firmware that matches. Save the `.tar.gz` or `.bin` to your workstation. Verify the filename contains the revision string you recorded in Step 1. If it doesn't, you're about to repeat the original mistake.
Prepare a 16 GB-or-smaller Micro SD card. Format FAT32 (larger cards fail the handshake on S19 boards older than Amlogic A113D, and older S9-class boards outright reject anything above 8 GB). SanDisk Ultra 16 GB is the community default. Copy the firmware file to the *root* of the card — not a subdirectory. Some builds expect the file to be named `upgrade.img` or `uImage`; confirm by reading the release notes that ship with the firmware.
Boot the miner from the SD card. Power off, insert the card, power on. The bootloader detects the card, flashes rootfs onto the internal storage, and rebuilds overlays. Progress is indicated by the LEDs (pattern varies by revision: S19 alternates green/red during flash; S17 shows a slow red blink; S9 shows green-solid when complete). Takes 5–15 minutes. Do not interrupt. Remove card, reboot.
Verify the flash stuck. Log into the web UI after reboot. Navigate to Status or System Info. Confirm: model string matches the case, hardware revision matches the silkscreen you recorded, hashboards enumerate correctly (chain count matches spec), nameplate hashrate matches spec within 3%. If any field looks wrong, do *not* start mining — return to Step 2 and re-verify the firmware filename against your recorded revision.
Back up the config before anything else destructive. SSH in as root (default password is often `root` or blank on stock Bitmain; resellers may change it). Run `tar -czf /tmp/config-backup.tgz /config 2>/dev/null` then `scp /tmp/config-backup.tgz user@workstation:~/`. Save pool URLs, worker names, static-IP settings, and any OC / autotune profile you care about. SD recovery and eMMC reflash both wipe `/config`; an operator who skips this backup is facing 30–90 minutes of re-entering stratum URLs by memory.
Read the kernel log during boot to confirm the failure mode. `ssh root@<miner-ip>` then `dmesg | tail -100` and `tail -200 /var/log/kern.log` during the first five minutes of boot. Pattern matching: `find 0 asic` = chip-family mismatch; `asic count mismatch` = revision mismatch; `EEPROM read failure` across multiple chains = parser mismatch; `get power type version failed` = PSU-signalling mismatch; `signature verification failed` = signed-firmware lockout. Each pattern tells you which image to look for next.
Compare web-UI hardware string against physical hardware. UI → Status → System Info. Check: reported model, reported revision, reported chip family (where shown), chain count, nameplate hashrate. Open the case; compare against the silkscreen and the chip markings on the hashboards (lift one heatsink corner to read a chip — `BM1398` / `BM1362` / `BM1366` / `BM1368`). Any mismatch is a data point that narrows which firmware image is actually correct.
Test with hashboards disconnected to isolate control-board state. Power off at the breaker. Disconnect all hashboard data and power cables. Power back on. A healthy control board with no hashboards will boot to the web UI reporting 0 chains detected. Any failure to boot in this state means the firmware is broken against the control board itself, independent of chip-family issues — SD recovery with matching firmware is the fix, not hashboard troubleshooting.
Re-attempt SD recovery, but this time with a known-good 8 GB card. If the initial recovery attempt failed, swap to a physically smaller card. 8 GB Micro SD works on every Antminer control-board revision ever made; 16 GB works on most; 32 GB+ fails on older boards silently. A large card is the undocumented cause of "SD recovery doesn't take" on a non-trivial percentage of S9-class and S17-class boards.
Cross-flash DCENT_OS once stock is recovered and stable. DCENT_OS — D-Central's open-source Antminer firmware — is the Mining Hackers' recommendation for S19-class and newer boards. It ships with per-chip HW%, closed-loop autotune, stratum v2, sane log rotation, and a firmware-version guard that refuses to flash a mismatched image by design. Source: `github.com/DCentralTech/DCENT_OS`. Landing: `d-central.tech/dcent-os/`. Alternatives if you prefer: Braiins OS+, LuxOS, Vnish — all four have signature checks that prevent the exact "wrong firmware flashed" problem this page documents. Stock Bitmain firmware is, ironically, the firmware most likely to let you flash it wrong.
Open a UART serial console for deeper diagnostics. TTL-to-USB adapter (FT232 or CH340), 115200 8N1, connected to the control board's debug header. Pinout varies by revision: S9 / S17 on a 3-pin or 4-pin header near the SoC; S19-series on a similar 4-pin; S21 on a silkscreened `UART0` header next to the Rockchip SoC. Power-cycle and read the U-Boot banner and kernel-init output. This is where you see signed-firmware rejections, U-Boot environment corruption, and boot-stage hangs invisible to the web UI.
Clear a corrupted U-Boot environment (non-signed boards). From the UART console, interrupt U-Boot (spam any key during the 2-second countdown), then `env default -f` followed by `saveenv` and `reset`. This rebuilds the boot environment from U-Boot's compiled defaults. Useful when a half-flashed image left `bootcmd` pointing at the wrong partition. Does *not* work on signed-firmware S21-class boards where U-Boot is locked.
Dump and inspect the eMMC with a programmer (Tier 3 bench step). RT809H or equivalent BGA153 adapter. Power down the control board. Lift the eMMC (or clip the BGA carefully with a reflow station if you're confident). Dump the full eMMC contents to a file. Compare the first 4 KB against a known-good reference for the revision: U-Boot header signature should match. If it doesn't, the flash wrote the wrong image to the eMMC and you now know which bytes to overwrite. This is the last-ditch DIY step before shipping.
Rewrite the eMMC with the matching signed image. After dump-and-verify in Step 14, clean-write the correct image from the programmer. On S21-class signed boards, the image *must* be a Bitmain-signed image or a cross-firmware-signed image (DCENT_OS / Braiins / LuxOS publish signed builds for these boards). Post-write, re-solder the eMMC if you lifted it, boot, and verify via UART. Get this wrong and the board is an e-waste brick; get it right and you've saved a $400–$2,000 control board.
Stop DIY when any of these are true. (a) Signed-firmware lockout on S21-class boards without access to a correctly-signed image; (b) UART console shows U-Boot hanging or not responding at all; (c) SD recovery with verified-matching firmware completes but the board still won't boot; (d) eMMC has been written more than a few times with wrong images and the chip may be damaged; (e) you need to lift and replace the eMMC physically. Any of these means bench-tool territory. [Book a D-Central ASIC Repair slot.](https://d-central.tech/services/asic-repair/)
What D-Central does at the bench. Identify the exact revision from the silkscreen and chip markings. Connect UART console and diagnose U-Boot / bootloader state. If U-Boot is recoverable, SSH-serial-recover to matching signed firmware. If eMMC is the problem, dump contents with an RT809H programmer, clone to a graded replacement BGA153 eMMC from our stocked inventory, rewrite with correctly-signed firmware (stock or DCENT_OS depending on customer preference), re-solder, boot-test on the bench PSU with a known-good hashboard attached, and 24-hour burn-in at nameplate before ship-back.
Ship safely to D-Central. Control-board-only shipments: anti-static bag, pad with ≥3 cm of foam on every side, double-box, labelled "Electronics — Fragile." Keep the hashboards at home unless we've specifically asked for them — they're heavy and the repair almost never needs them. Include a note with: observed symptoms, the firmware image file that was flashed (or a link to where you downloaded it), the hardware revision from the silkscreen, any UART log if you captured one, and your contact. That information saves us 30–60 minutes of diagnostic time per board — which saves you money directly.
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.
