IceRiver KS0/KS0 Pro Fan Swap: 4010 Internal + 12025/12038 External
Informational — Monitor and address as needed
Symptoms
- Dashboard Temp1 (intake) above 60 C sustained, or Temp2 (chip / exhaust) above 70 C sustained, in <=25 C ambient
- Hashrate sitting 15-35% below nameplate (KS0 ~100 GH/s, KS0 Pro ~200 GH/s, KS0 Ultra ~400 GH/s on the 1004LV100-class chip)
- Web UI shows thermal-throttle / governor downclock active even at stock TDP, or hashrate cliff after 5-15 minutes of mining
- Stock 4010 audibly pinned at 100% PWM duty (~7,000 RPM, characteristic high-pitch whine) within 30 seconds of boot, never throttling down
- Measured noise floor 55-65 dB(A) at 1 m vs IceRiver's marketed ~35 dB
- Running community OC firmware (xyys, tswift, rdugan/iceriver-oc) and Temp2 jumped 8-15 C immediately
- Stock 4010 showing pre-failure: bearing rumble, ticking that tracks RPM, intermittent RPM:0 reads, or impeller stiff to spin by hand
- Ambient >25 C deployment (Texas garage, attic mining shed, un-airconditioned summer office) - OEM 4010 at its envelope before you start
- Cold-weather-deploying the KS0 as a dual-purpose space heater and want headroom for sustained 100%-duty operation
- Already done firmware Fan-Mode tuning and need additional CFM, not a smarter PWM curve
- Want the chassis to outlive its 12-month factory bearing-life envelope (preventive mod)
- Fan-error code (Error 110 / Error 140-equivalents on KS0 firmware) firing repeatedly after the new fan was installed - controller's RPM-window check rejecting the new tach reading
Step-by-Step Fix
Choose the fan size and class. 12025 (120x120x25 mm) for quiet builds: Noctua NF-A12x25 PWM at 22.6 dB(A) and ~60 CFM, suitable for stock TDP. 12038 (120x120x38 mm) for thermal headroom: Delta AFC1212DE or Sanyo 9G1212H4D03 at 140-250 CFM and 50-65 dB(A), suitable for aggressive OC and hot ambients. Verify-flag: KS0 Ultra running aggressive OC needs 12038 industrial; smaller fan won't keep up. Match by deployment, not brand loyalty.
Choose the mounting approach. (a) 3D-printed PETG/ABS bracket from Printables (Mario's KS0 cooling mods or rdugan community forks), filament cost CAD $2-5. (b) Aluminium 120 mm fan L-bracket from Amazon or AliExpress, CAD $8-25. (c) Custom-machined adapter plate, CAD $30-60. Most builds settle on (a) or (b). Verify-flag: KS0/KS0 Pro/KS0 Ultra dimensions vary slightly across revisions; confirm bracket fitment against your specific unit before printing or ordering.
Confirm the connector style. Most KS0 revisions use JST-PH 2.0 mm-pitch 4-pin housing. Some early units shipped with proprietary 2510-style connectors. Easiest path: cut the 4010's pigtail at the fan body, salvage the original connector, splice it onto the new 12025's leads. Cleaner: order a JST-PH 4-pin housing kit and crimp a fresh pigtail. Hackiest: a 4-pin Molex-to-JST-PH adapter cable from a fan-mod vendor.
Order the BOM for the chosen build. Quiet 12025 build: Noctua NF-A12x25 PWM (CAD $35-45), printed PETG bracket or aluminium L-bracket (CAD $2-15), four M3 x 25 mm screws + nuts (CAD $3), rubber vibration grommets (CAD $0-5), JST-PH 4-pin housing + crimp terminals (CAD $5), heat-shrink tubing (CAD $5). Total CAD $50-75. Industrial 12038 build: Delta AFC1212DE or Sanyo 9G1212H4D03 (CAD $25-55), printed bracket sized for 38 mm thickness (CAD $3-6), four M4 x 30 mm screws + nuts (CAD $4), grommets, connector kit. Total CAD $42-75.
Power off and discharge. Kill the rear rocker, unplug the IEC cord, wait 60 seconds for bulk capacitors to bleed. The 12 V rail can hold dangerous-to-electronics charge for 30+ seconds after switch-off; reseating connectors hot will drop a logic-board MOSFET on a bad day. The KS0 PSU is integrated on most revisions, so this matters more than on units with external PSUs.
Open the chassis. Most KS0 revisions: four Phillips #2 screws on the top cover; some KS0 Ultra builds add a rear-bracket screw. Set screws aside in a labelled cup. With the cover off you'll see the single 1004LV100 ASIC bonded to a small finned heatsink, OEM 4010 mounted directly above pulling air through the fins toward the top vent. The controller PCB sits to the side; the fan header is silkscreened typically FAN1 or J_FAN.
Test-fit the bracket and the new fan dry. Bolt the bracket to the chassis (or set on top cover for non-modified mounts), set the 12025/12038 in place, verify clearance to the chassis, controller PCB, 1004LV100 heatsink, and any cabling. Verify the fan's airflow direction arrow points the correct way - for most KS0 builds the external fan exhausts hot air up and out, so the airflow arrow points away from the chassis. Test pigtail routing without strain or pinch.
Remove or augment the OEM 4010. Replacement path (cleanest): unscrew the OEM 4010 (typically four small M3 screws), unplug its pigtail from the controller header, set it aside as a spare. Augmentation path: leave the 4010 in place and either Y-cable both fans onto the same header or run the new 12025 off +12 V with PWM hard-tied. Most clean builds go replacement; the 4010 stays in the parts bin for a future stock-unit field-repair.
Mount the 12025/12038 to the bracket. Four M3 (12025) or M4 (12038) machine screws + nuts, with rubber vibration grommets on the chassis side if your bracket design includes them. Snug, not gorilla-tight - overtorquing distorts the fan frame and accelerates bearing wear. Verify the airflow direction arrow one more time before final tightening - installing the fan backwards halves your airflow and may push exhaust heat back across the heatsink.
PWM wire color reference - verify against the fan's datasheet, not assumption. Noctua: BLACK=GND, YELLOW=+12 V, GREEN=TACH, BLUE=PWM. Delta industrial: BLACK=GND, RED=+12 V, YELLOW=TACH, BLUE=PWM. Sanyo Denki varies - read the datasheet. OEM IceRiver 4010: typically BLACK=GND, RED=+12 V, YELLOW=TACH, BLUE=PWM. Match by pin position (pin 1=GND, pin 2=+12 V, pin 3=TACH, pin 4=PWM) when remaking a connector, not by colour. Wrong polarity on +12 V instantly fries the new fan's driver IC and may pop the controller's fan-rail fuse.
Splice approach A - salvage the OEM connector. Cut the 4010's pigtail at the fan body, leaving 5-8 cm of wire on the connector side. Strip 4-5 mm of insulation from each conductor. Cut the new 12025's pigtail to the same length. Strip its conductors. Slide heat-shrink tubing onto each wire BEFORE you splice. Twist matching wires (pin-position match: GND-to-GND, +12 V-to-+12 V, TACH-to-TACH, PWM-to-PWM), solder or use a quality crimp, slide heat-shrink over each joint, hit it with a heat gun. Cleanest result for a one-time mod.
Splice approach B - fresh JST-PH housing. Buy a JST-PH 4-pin housing kit + crimp terminals, crimp fresh terminals onto the new 12025's pigtail conductors (pin-position-matched to the IceRiver header), seat them in the housing, verify polarity with a multimeter on continuity before plugging in. Cleaner finish, requires a JST-PH crimp tool (CAD $25-45 for a budget tool). Splice approach C - Y-cable both fans on the same header for augmentation builds; verify the controller's fan-rail current budget can drive both fans (~3-8 W total).
Final connector seating. Apply a trace of dielectric grease to the pin contacts before final seating in the controller header - vibration immunity over 12-24 months. Press the connector latch (if the housing has one), seat with steady pressure on the connector body (not the wires), listen for the click. Verify the keying tab is aligned with the header - JST-PH connectors are keyed but a custom-crimped housing can be flipped if you're not paying attention.
Smoke-test before closing the chassis. Don't put the cover back on yet. Plug power back in, hit the rocker, watch the new fan during the boot self-test. The KS0 controller spins the fan at 100% PWM duty for ~30 seconds during cold-boot self-test before scaling to thermal demand. New fan should ramp from zero to its rated RPM smoothly - no vibration, no rattle, no audible bearing growl. Dashboard should report a non-zero RPM within 60 seconds of boot completing - confirming the tach line is wired correctly.
Check the dashboard for fan RPM, errors, and temperature trend. With a 12025 Noctua, expect ~1,200-2,000 RPM at steady-state mining; with a 12038 industrial, expect ~3,000-6,000 RPM. The tach window the controller expects may not match the new fan's RPM range - if the dashboard throws a fan-error code (Error 110 / Error 140-equivalents on KS0 firmware), the controller's RPM-window check is rejecting the new fan's reading. Two paths: (a) flash a community OC firmware (rdugan/iceriver-oc) with relaxed RPM-window checks, or (b) accept the cosmetic error code and verify chip temps are sane.
Record before/after Temp2 data. Run the miner at full hashrate (or your target OC profile) for 15 minutes with the new fan, log Temp2 at 1, 5, 10, 15 minute marks. Expected results from D-Central bench data on KS0 Pro mods: stock 4010 at stock TDP runs Temp2 ~65-75 C; 12025 Noctua replacement on the same TDP runs Temp2 ~50-60 C (8-15 C improvement). Stock 4010 at moderate OC runs Temp2 ~78-85 C with throttle; 12025 Noctua runs ~62-72 C (12-16 C, no throttle). Stock 4010 at aggressive OC: ~85+ C with hard throttle; 12038 Delta AFC1212DE on same OC: ~60-68 C (18-25 C, full hashrate). Verify-flag: directional bench/community values, not guarantees.
Acoustic before/after measurement. Use the NIOSH SLM iOS app or any A-weighted SPL meter app on Android, 1 m from the chassis, fast response. Stock 4010 at full duty: 55-65 dB(A). Noctua NF-A12x25 PWM 12025 replacement: 30-42 dB(A) (15-25 dB(A) reduction; psycho-acoustically perceived as roughly half as loud). Delta AFC1212DE 12038 industrial: 50-65 dB(A) at full duty (similar overall to stock, but broadband instead of high-frequency whine - easier to live with at the same dB reading).
24-hour burn-in. Watch the dashboard the next morning - Temp1, Temp2, hashrate, fan RPM stability, any new error codes. If everything is clean at the 24-hour mark, the mod is verified. New symptoms - rattle that wasn't there day-one, recurring fan errors, asymmetric temp behaviour between OC and stock profiles - re-verify polarity, connector seating, and fan datasheet match. Most common DIY failure: a marginal crimp on the +12 V line that works for 6 hours then drops out under thermal cycling.
Document the build. Pin to your home-mining notes: ambient operating range, fan model installed, bracket source (printed file ID or aluminium SKU), PWM duty curve (if community firmware exposes it), measured Temp2 at full hashrate, measured dB(A) at 1 m, OC profile if applicable. Photo of the finished mod from above and from the side. Mining Hackers' practice: spreadsheet per-rig service log saves you 30 minutes of forensic work when the next fault appears 18 months later.
Reinstall the top cover and re-torque all chassis screws. Phillips #2 (or Torx where applicable) snug not gorilla-tight. Reinstall any KS0 Ultra rear-bracket screws. Verify nothing is pinched between cover and chassis - fan pigtails, harnesses, ribbon cables. Vibration over the next 12 months will work pinched cables to failure. If your bracket is external (mounted on top of the chassis rather than replacing the top cover), verify the bracket fasteners are tight and the bracket is not flexing under fan vibration.
Tier 4-Pro - When this DIY won't fix it. Stop and book D-Central if any of these appear post-mod: new fan installed with verified polarity but Temp2 still climbs above 75 C at stock TDP within 15 minutes; controller fan-rail fuse popped on first power-on (miswired polarity); visible heat damage, blistered solder mask, or burnt-component odor on the controller; 1004LV100 chip throwing chip-init or kHeavyHash compute errors after the mod; Y-cable build overloaded the fan-rail current budget. Book ASIC Repair at d-central.tech/services/asic-repair/ - D-Central is the Western English-language IceRiver bench authority, Quebec-based, Canadian / US / international shipping, 5-10 business day turnaround.
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.
