Whatsminer Error 120 / 121 – Fan Speed Below 2000 RPM
Warning — Should be addressed soon
Symptoms
- BTMiner dashboard or WhatsminerTool V9 shows Code 120 in the error queue (variant display: Error 120, Fault 120)
- Exported miner.log contains the literal string 'fanin detect speed error' or 'fan speed deviation 2000+'
- WhatsminerTool Status tab shows intake fan RPM 500-3500 RPM while the commanded setpoint is 5500-8000 RPM
- LED on the front panel showing slow red blink (M30S-class chassis) or amber solid (M60/M66-class chassis)
- Chip temps across all three hashboards drifting 3-8 degC above baseline within 10 minutes of the error first appearing
- Audible difference: fan note is 'thin' or warbling versus an adjacent healthy Whatsminer — or the six-jet high-pressure whoosh is missing entirely
- Error appeared immediately after a fan swap, PSU swap, or re-cable of the intake / exhaust four-pin harness
- Error appeared within minutes of a BTMiner firmware update pushed via WhatsminerTool V9
- Ambient intake temperature is within MicroBT spec (≤35 degC), which distinguishes this error from Code 140
- Chassis-vibration-loosened cable-tie has let the fan harness dangle into the blade path (specific and common on M30S++ rebuilds)
- The installed fan is a non-OEM replacement drawing less than 6A at 12V (e.g. aftermarket 2.7A or 4A units)
- Error flickers between Code 120 and Code 121 on alternating minutes as both fans drift simultaneously — classic dual-bearing-drift signature on a 3-year-old unit
Step-by-Step Fix
Full PDU power-cycle for 60 seconds. Not a soft reboot. True AC disconnect. Wait the full minute so the PSU bulk caps discharge and the BTMiner fan-calibration state flushes. Power back up, watch the error queue for 10 minutes. A non-trivial fraction of Code 120 tickets clear on a hard power-cycle alone because the firmware re-learns the fan's RPM envelope on boot. If the error returns within 10 minutes of steady-state hashing, move to Step 2.
Verify ambient intake temp at the grille with an IR thermometer or kitchen probe. Target ≤35 degC at the intake grille. Higher ambient forces the firmware to command higher RPM, which a borderline fan cannot meet. This is not the root cause of Code 120 (that's Code 140's territory), but a fan already weakened by bearing drift fails faster in hot air. Mining in a garage in August or a basement with poor return airflow shortens every fan's life.
Inspect fan grille and intake path for obstruction. Cardboard, dust, pet hair, lint — anything that drops static pressure forces the fan to work harder to hit its commanded RPM. Shop-vac the intake grille and exhaust. Pull the unit out of its rack or shelf and verify 15 cm clearance on the intake side. Obstructed airflow can masquerade as a fan fault on the tach reading because the fan stalls at higher back-pressure.
Check WhatsminerTool for the firmware version and known-issue list. If your miner is on a recently-flashed BTMiner build, pull the release-history thread from the Whatsminer community (MicroBT does not publish changelogs, so community intel is the only source). Roll back one version if others are reporting Code 120 after the same flash. Firmware regressions on fan calibration are rare but real and have hit multiple Whatsminer generations — worth ruling out before opening the chassis.
Open the chassis. Remove the intake fan. On M30S-class chassis: two Phillips screws per corner with a PH2 bit, fan lifts straight up. Exhaust lives on the opposite face with the same pattern. Unplug the four-pin harness gently — connectors lock. Inspect the blade hub for wobble, the blade tips for chipping, and the bearing for audible rumble when you spin it by hand. A healthy bearing feels smooth, silent, mild friction. A dying bearing grinds, ticks, or spins too freely.
Confirm OEM spec on the fan label. Read the silkscreen. OEM is KZ14038B012U3 — 140 x 140 x 38 mm, 12V DC, 7.2A. Accept-list alternatives: Martech DF1405012B012U and ZF14038B012U (both OEM-spec equivalents). REJECT any fan labeled 2.7A, 3.6A, 4A, or 5A — those trigger Code 120 even when brand new because BTMiner current-senses the rail. Fans sold below CAD $45 for Whatsminer-compatible fitment are almost always the wrong amperage class.
Replace with OEM or accept-list spec fan. D-Central stocks KZ14038B012U3 and accept-list alternatives — the single highest-yield Tier-2 fix for this error. Re-seat the four-pin harness firmly (audible/tactile click). Route the harness so it does not cross hashboard ribbons and does not sit in the blade path. Cable-tie to the chassis frame at one anchor point so chassis vibration can't drift it loose. Power up, observe 15 minutes, check the error queue.
Inspect and re-seat both fan harnesses at the control board and PSU. Power off at the breaker. At the control board, unplug both intake and exhaust four-pin connectors. Inspect pins under bright light: look for blackening, green oxide, recessed contacts, melted housing. Clean dirty pins with 99% isopropyl on a lint-free swab. Re-seat firmly — listen for the click on each. Same treatment at the PSU side. Intermittent connector contact is a classic Code 120 driver on miners recently moved, shipped, or serviced.
Measure PSU 12V fan rail under load. Multimeter on DC. Probe at the fan-harness plug, miner powered up and hashing at full load. Expect ≥11.8V sustained. Anything below 11.5V is a tired PSU output capacitor — the rail collapses when the fan ramps, RPM drops, firmware trips Code 120. Hashboard rails can still be fine; this is an isolated fan-rail fault. Swap to a known-good Whatsminer PSU from the same chassis family (M30S-class / M50-class / M60/M66-class — don't cross generations).
Swap intake and exhaust fans to isolate. Pull both fans, swap them in their sockets, re-cable. Power up, watch the error queue. If Code 120 becomes Code 121 (exhaust error), the failing hardware is the physical fan you moved — replace it. If the error stays Code 120 on the intake position, the fault is at the socket / harness / control-board channel, not the fan itself — move to Tier 3 Step 14. This single step definitively isolates fan-versus-infrastructure in 5 minutes.
SD-card recovery firmware reflash. If fan hardware checks out and the error persists, burn the latest stock BTMiner firmware for your chassis (or one-back if the current version has known fan-cal issues) to an SD card using WhatsminerTool V9. Insert SD, power up in recovery mode (hold reset button for 5 seconds during power-on on M30S chassis; M50+/M60+ chassis recovery entry varies by control-board revision — consult MicroBT recovery guide). Let the re-flash complete, remove SD, reboot. Clean flash rebuilds fan-calibration NVRAM from scratch.
Scope the tach pulse. Connect a handheld oscilloscope (Hantek 2D42 or similar, 50 MHz class) to the fan's tach pin — pin 3 on the four-pin connector, yellow wire on most OEM fans. Healthy tach: clean square wave, 5V amplitude, frequency proportional to RPM (two pulses per revolution on KZ14038B012U3 = 133-266 Hz across the working RPM band). Garbled tach — low amplitude, asymmetric duty, noise on the signal — means harness damage or a bad tach output on the fan itself. Swap the fan.
Investigate the whatsminer-fakefan community bypass for bench diagnostic cases only. In bench-repair scenarios where you need to silence Code 120 temporarily (e.g. fanless thermal mapping), Draiget's open-source whatsminer-fakefan project implements a hardware stub emulating a compliant tach pulse. NOT for production — running a Whatsminer without real airflow cooks it dead — but invaluable for bench diagnostics and for isolating control-board versus fan-side faults. Source on GitHub under Draiget/whatsminer-fakefan.
Inspect the control-board fan-sense channel. If the fault is sticky to a specific socket (isolated in Step 10) rather than a specific fan, the control board's tach-input network is suspect. The Whatsminer control board feeds the tach signal into a voltage comparator (op-amp + reference) that converts it to a digital pulse the SoC counts. A failed comparator, cracked SMD resistor, or blown pull-up can silence the tach without killing DC to the fan. Requires the control-board schematic and hot-air rework skills — D-Central bench territory.
Cross-check per-model RPM thresholds. Not every Whatsminer generation uses the same target RPM. M30S class: 5500-7500 RPM target. M50S+: 6000-8000 RPM. M60S+ and M66S: 7000-9000 RPM (their higher power density demands higher fan RPM — which is why Code 130 at 3000 RPM deviation exists specifically for the M50+ / M60+ classes). If you're seeing Code 120 on an M60-class unit with a spare M30S fan cross-installed, that's your cause — undersized for the thermal envelope. Use the chassis-class-correct fan.
Stop DIY. Stop if any of: fan-sense channel on the control board is isolated as the fault (Step 14); multiple sockets show tach-signal degradation simultaneously (indicating a failed shared reference or surge event); PSU fan-rail sag is severe enough that other rails are borderline (full PSU bench test required); the chassis shows burn marks, capacitor bulging, or discolored solder on the control board (surge damage — bench rework territory). Book a D-Central ASIC Repair slot — iron-only SMD rework lifts pads and makes the board worse.
What D-Central does at the bench. Whatsminer control boards mount on our fixture with a programmable fan-load dummy pulling 6.5A per channel. If the tach channel reads our dummy correctly, the fault is in the miner's fan or harness — we return it with a fan swap. If the tach channel fails to read our dummy, we component-level repair: replace the comparator network, swap the failed SMD reference, reflow the tach-input filter if capacitor drift is implicated. Every repaired control board runs 24-hour burn-in on a known-good chassis before shipping back.
Ship it right. Pack the full chassis in the original MicroBT box or double-box with 5 cm+ foam on every side, anti-static bag around the exposed control board. Include the PSU — we test your exact stack. Include a note with: observed-symptom timeline, firmware version, aftermarket fan part numbers you installed, the exported miner.log Code 120 lines, and contact info. Saves diagnostic hours, which saves you money. Repair quote issued before bench work begins — no surprise invoices. Canadian shipping routine; US/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.
