Antminer – SD Card Corruption
Warning — Should be addressed soon
Symptoms
- Miner reboots at random intervals with no kernel panic in logs
- Pool config, worker name, or frequency profile reverts to blank/factory after power cycle
- Web UI loads then freezes or returns HTTP 500 after a few minutes of uptime
- Miner cannot find an IP address / DHCP never completes
- Control board LED: solid red, or rhythmic red/green blink after boot
- SSH session drops after 30-60 seconds as filesystem remounts read-only
- `dmesg` / `kern.log` shows `mmcblk0` I/O errors, `Buffer I/O error`, or `read-only filesystem`
- Firmware upgrade fails mid-write with 'cannot write to /dev/mmcblk0' or bar freezes at 60-90%
- Miner boots into an older firmware version than you last flashed (writes not persisting)
- SD card feels physically warm after a few minutes of mining operation
- Card reader on laptop reports card as RAW, unreadable, or prompts to format
- S9/T9-class: `No Hardware Version Found` or missing `BMMiner` messages
- L3+/L3++: hashrate fine at first, drops to zero after a few hours, only cold boot restores it
Step-by-Step Fix
Power the miner down at the breaker or PSU switch — not the web UI reboot button. The card is suspect, and a clean mains cut is the safest state to pull it in. Wait 15 seconds for caps to drain before opening the chassis. Always cutting mains before touching the SD is a habit that extends card life on every miner in your rack and prevents the most common power-loss-mid-write corruption mode.
Pull the MicroSD card. Open the control-board access panel (Phillips #2 screws; no chassis disassembly required for SD access on S9/L3+). The card sits in a push-push socket on the board edge — press in, release, it pops out. Do not yank. Inspect the socket for bent or missing contact pins with a flashlight before you even test the card — socket damage is the second-most-common cause of 'bad card' false positives.
Test the old card in a laptop with a USB MicroSD adapter or built-in reader. Windows: check if the volume mounts in 'This PC' or if you get a 'Format this disk' prompt. macOS: check Finder / Disk Utility. Linux: `lsblk` plus `sudo fdisk -l /dev/sdX`. If the card reports zero capacity, wrong capacity, or RAW, it's dead — recycle it. If it mounts but sectors error on read, still replace it; marginal cards get worse fast.
Download the correct firmware recovery image from service.bitmain.com/support/download. Pick your exact model (S9, S9i, S9j, S9 SE, S9k, L3+, L3++, T9+, R4, Z9, D3, A3, etc.) and verify the published MD5 against the downloaded file size and hash. Wrong image for the wrong hardware revision bricks the control board — read the revision sticker on your board (e.g. `BHB42531` vs `BHB42601` on S9-class) before you pick the file.
Write a fresh name-brand endurance-class card. SanDisk High Endurance, SanDisk Industrial, or Samsung PRO Endurance — 8 GB or 16 GB. Bigger cards are worse, not better: more unused sectors = more places for wear-levelling bugs. Format FAT32 first. Use balenaEtcher (Win/macOS/Linux) or Win32DiskImager (Windows). Eject cleanly. Insert into miner. Power on. Wait for green-solid LED and a clean boot.
Back up your old card before you overwrite it. `dd if=/dev/sdX of=./bad-card-backup.img bs=4M status=progress` on Linux/macOS, or the Win32DiskImager `Read` function. Even a dying card often retains custom worker config, pool credentials, and on some builds per-hashboard calibration. A partial `dd` can still rescue config files from earlier sectors. Keep the image archived even after the swap — it's cheap insurance.
Test new cards for fake capacity before trusting them in a miner. F3 (`f3write` then `f3read` on Linux/macOS) or H2testw (Windows) write full-capacity patterns and read them back. A real 16 GB card verifies; a counterfeit errors past its real capacity. Runs ~20 minutes on 8 GB. Do this on every card from a non-authorized seller. Twenty minutes of checking beats a miner going sideways at 3 AM on a card that was never really 16 GB.
Reseat and clean the SD socket with the miner powered off. A few drops of 99% isopropyl on a lint-free cotton swab, gently wiped across the socket contacts and the card's gold pads. Look inside the socket with a flashlight — green-copper tarnish, flux residue, bent pins, or lifted solder joints are all visible. Dry 60 seconds, reinsert fresh card, close chassis. A dirty socket often masquerades as a bad card.
Verify the card boots cleanly on stock firmware before layering custom firmware on top. Put in the freshly-burned stock card, boot, let the miner come up to factory dashboard, confirm hashboards detect, confirm UI loads. Only then cross-flash DCENT_OS or other custom firmware. The discipline of 'bring up on stock, then customize' saves hours of 'is it the card or the new firmware' debugging if something misbehaves.
Document the card and install date. Masking tape + Sharpie on the chassis: `SanDisk HE 16GB · installed 2026-04-20`. Plan proactive swaps at 3 years on rack/hot-ambient miners, 5 years on garage/basement miners. Same discipline as thermal paste and CR2032 cells. One minute of labour per miner per half-decade prevents the middle-of-the-night pool-offline alert every single time.
Flash DCENT_OS — D-Central's own open-source Antminer firmware. All the per-chip HW% tuning, autotuning, stratum v2, and diagnostics of Braiins OS+ / LuxOS / Vnish, maintained publicly, open-source, no licensing fees. Critically for SD-boot miners, DCENT_OS logs are rotated aggressively to minimize SD write amplification — alone, this extends card life meaningfully on a 24/7 rig. Landing: https://d-central.tech/dcent-os/. Source: https://github.com/DCentralTech/DCENT_OS. Alternatives: Braiins OS+, LuxOS, Vnish.
Use the reversible-SD trick for zero-risk custom-firmware testing. Burn Braiins OS+ (or DCENT_OS, or LuxOS) to a dedicated card, label it clearly, keep a second card with stock Bitmain image labelled separately. Pop in the custom-firmware card to run custom; swap back to stock in 30 seconds. Confirmed by D-Central and Altair Tech community notes for S9-class miners. Ideal workflow for A/B testing overclock profiles and autotuning without committing.
Relocate logs off the SD card. On stock Bitmain firmware: edit `/etc/rsyslog.conf` or the BMMiner log target to point at `/tmp` (RAM, volatile) or a remote syslog server. On DCENT_OS / Braiins OS+ / LuxOS, the defaults already minimize SD writes — leave them. Goal: zero steady-state writes to `mmcblk0` during normal mining. Done right, a high-endurance card in a cool environment lasts nearly the mining life of the miner itself.
Build a per-revision master-image archive on your workstation. Folder with exact factory images for every Antminer hardware revision you own: `S9-BHB42531.img`, `S9-BHB42601.img`, `L3+-BHB52601.img`, and so on, each labelled with MD5 and source URL. Back up to Git or cloud. When a card dies at 3 AM, you burn the correct image in 90 seconds. Grabbing the wrong image from a sleep-deprived browser tab is how control boards get bricked.
Slot-level repair when the socket is mechanically dead. A competent solderer can desolder the old push-push socket (nine gull-wing pads on a standard MicroSD connector), drop in a replacement (Hirose DM3D-SF, Molex 503398, or generic MicroSD push-push from Digi-Key), and re-solder. ~$2 CAD part, ~30 minutes bench time. Flying-lead bodges from card pads to a jumper exist as a desperate workshop workaround but void any claim of proper repair — replace the socket properly or ship to D-Central.
When to stop DIY: flash-verified fresh cards with correct images still fail to boot; eMMC or U-Boot damage (where applicable); PIC-chain corruption masquerading as SD errors; physical trace damage under the SD socket from a prior repair attempt; Bitmain firmware-signing wall hit during a failed downgrade and plain SD recovery no longer works. You're now in JTAG/UART bench territory — book a D-Central ASIC Repair slot at https://d-central.tech/services/asic-repair/.
D-Central bench process on these: JTAG / UART console recovery (most shops never touch this), eMMC clone where applicable, SD socket replacement on a proper hot-air station, PIC chip reflash via hash-board code-editor tool, full bring-up on stock, then validated boot on the custom firmware of your choice, plus 24-hour nameplate burn-in. Ship the control board (not the whole miner) in an anti-static bag, double-boxed with ≥5 cm foam. Include symptoms, last firmware version, DIY steps already attempted.
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.
