Passer au contenu

Nous améliorons nos opérations pour mieux vous servir. Les commandes sont expédiées normalement depuis Laval, QC. Questions? Contactez-nous

Bitcoin accepté au paiement  |  Expédié depuis Laval, QC, Canada  |  Soutien expert depuis 2016

BX_SELFTEST Critical

Bitaxe – Stuck in Recovery / Self-Test Never Completes

AxeOS Power-On Self-Test halts boot on VCORE / ASIC / I2C / FAN / HASHRATE subsystem failure — OLED stuck on `SELF TEST`, device never reaches app_main, no AxeOS web UI, no hashrate.

Critical — Immediate action required

Affected Models: Bitaxe Supra (BM1368 rev 401), Ultra (BM1366 boards 202/204/205/207), Gamma (BM1370 boards 600/601/602/600-ESP-MON16), Gamma Turbo / GT (2x BM1370 board 800), Hex v303/v304 (6x BM1366), UltraHex

Symptoms

  • OLED displays `SELF TEST` on boot and stays there for more than 30 seconds with no progress
  • OLED cycles SELF TEST -> splash -> reboot -> SELF TEST indefinitely (selftest loop)
  • OLED briefly shows POWER FAIL, VCORE FAIL, HASHRATE FAIL, ASIC FAIL, or FAN FAIL before halting or rebooting
  • Serial console at 115200 baud prints `E (xxx) self_test: POST stuck` or `E (xxx) self_test: <subsystem> failed`
  • Serial log shows `VCORE_init failed` or `TPS546 Device ID mismatch` (Gamma-specific TPS546D24S vs D24A)
  • Serial log shows `i2c_master_transmit_receive` errors or `ESP_ERR_INVALID_ARG 1206` during selftest
  • AxeOS web UI at http://bitaxe.local/ never becomes reachable; device never reaches app_main
  • Fan spins up momentarily during selftest then drops to zero; no steady-state RPM
  • Status LED blinks in a repeating pattern matching the boot cycle (not steady)
  • Recently flashed the wrong factory image (BM1366 onto a BM1370 Gamma, or BM1370 onto an Ultra)
  • Just upgraded to v2.12.2+ on a Bitaxe Ultra 205/207 (known selftest regression, ESP-Miner issue #1600)
  • Just upgraded to v2.1.2-v2.1.3 on Supra rev 401 (POWER FAIL false-positive, ESP-Miner issue #145)
  • Device worked fine until an OTA update then started halting at SELF TEST on every boot

Step-by-Step Fix

1

Hold the BOOT button for 2 seconds during the SELF TEST screen to force-skip the test on AxeOS v2.12.x+ firmware. Supported on Supra rev 401, Ultra 205/207, Gamma, and GT. If this gets you into AxeOS and the miner hashes cleanly for 10+ minutes, the selftest was a false-positive and the hardware is fine - run it this way until you can upgrade firmware. On older Ultras without a dedicated BOOT button, momentarily shorting GPIO0 to GND with tweezers during boot is the equivalent.

2

Cold-unplug the barrel jack for a full 10 seconds, then power back up. Do not soft-reboot. The TPS546 fault latch and the ESP32-S3 RTC domain both need real discharge time to clear any stale selftest-fail flag. A 2-second blink leaves capacitors partially charged and the latch set. Roughly 15% of selftest halts - especially Gamma/GT POWER FAIL events - resolve on a proper cold cycle alone because the TPS546 was sitting on a latched undervoltage condition from a prior brownout.

3

Move the Bitaxe to its own wall outlet. Remove every USB hub, extension cord, and surge strip in the power path. A shared USB hub feeding a Raspberry Pi, webcam, and the Bitaxe will brown out the miner whenever another device spikes current - and a brownout during the selftest hashrate benchmark trips a false POWER FAIL. If the selftest passes after cleaning up the topology, you had a shared-rail problem, not firmware or silicon.

4

Swap to a larger PSU. Selftest includes a short hashrate benchmark that loads the ASIC. A cheap 5V 2A or 5V 3A adapter that measures fine at idle can collapse the rail to 4.6V the instant the ASIC starts hashing, triggering POWER FAIL. Use 5V 6A+ for Gamma, 60W+ USB-PD or 5V 10A+ barrel for GT. Ultra and Supra are more tolerant at 5V 4A+. Always rate the PSU at least 1.5x the miner's nominal draw.

5

Confirm you flashed the correct factory image for your exact chip family. Read the board sticker: BM1366 = Ultra/Supra 202-207/401, BM1370 = Gamma 600/601/602 and GT 800, BM1397 = Max, BM1368 = some Supra rev. Go to https://github.com/bitaxeorg/ESP-Miner/releases and match the artifact name to your board. If there's any chance you grabbed the wrong .bin, reflash the correct one via the Bitaxe Web Flasher before diving into deeper diagnostics.

6

Capture the serial log. Plug USB-C from Bitaxe to laptop. Open a serial monitor at 115200 8N1 (idf.py monitor, PlatformIO device monitor, Arduino Serial Monitor, screen, or PuTTY). Power the Bitaxe from the barrel jack so you see real rail behaviour. Capture at least two full boot cycles. Search for `self_test:` - the first FAIL line names the exact subsystem that tripped (POWER, VCORE, ASIC, HASHRATE, FAN, I2C). That single line turns guesswork into a targeted fix.

7

Flash the correct factory image via the Bitaxe Web Flasher at https://bitaxe.org/flasher (Chrome or Edge; WebSerial required - Safari and Firefox don't work). Click Connect, select the Bitaxe COM port, pick the factory image for your exact board, click Erase then Flash. Wait for completion, unplug, power up from the barrel jack. Roughly 40% of selftest halts clear at this step because either a partial OTA corrupted the app partition or the wrong image was originally written.

8

Reflash via esptool.py from a terminal if the Web Flasher fails. Install esptool: `pip install esptool`. Download the correct factory image from bitaxeorg/ESP-Miner releases. Hold BOOT, plug USB-C, release BOOT. Run `esptool.py --chip esp32s3 --port COM4 --baud 460800 erase_flash` then `esptool.py --chip esp32s3 --port COM4 --baud 460800 write_flash 0x0 esp-miner-factory-gamma-v2.x.x.bin`. Replace COM4 with your port (/dev/ttyUSB0 or /dev/ttyACM0 on Linux/Mac). Bypasses browser and WebSerial bugs entirely.

9

Downgrade or upgrade around a known-bad selftest build. Issue #145 documents POWER FAIL false-positives on Supra rev 401 across v2.1.2-v2.1.3 (fixed v2.1.4+). Issue #1600 documents Ultra 205/207 selftest regressions on v2.12.2+ (downgrade to v2.12.1 or wait for retune). Issue #1291 documents v2.8.0-v2.9.0 I2C race on Gamma 601/602 (upgrade past v2.9.1). Read the release notes before picking a version. Stick to tagged stable releases - never b1 or rc builds on production miners.

10

Measure VIN at the barrel jack under selftest load. Multimeter on DC, probes on the barrel connector, negative on outer shell. Power the Bitaxe and watch the reading during the hashrate benchmark phase of selftest. Healthy: >=4.9V sustained. Below that, the PSU is sagging and either the selftest's power check or the TPS546 undervoltage detector is correctly flagging it. Swap PSU and re-test - don't fight firmware over what is genuinely a hardware margin problem.

11

Full NVS erase then factory reflash. Stale NVS (non-volatile storage) can hold bad VCORE overrides, corrupt WiFi credentials, or sticky selftest-fail flags that re-trigger the halt across reflashes. Run `esptool.py --chip esp32s3 --port COM4 erase_flash` to wipe everything - app, www, and NVS. Then write the factory image fresh. Reconfigure WiFi, pool, and VCORE from scratch on first boot. This is the 'I've already reflashed three times' fix. ESP-Miner issue #516 is the canonical report for this escape path.

12

Flash a debug build and read panic/selftest decoder output. Clone bitaxeorg/ESP-Miner, run `idf.py set-target esp32s3`, `idf.py build`, then `idf.py flash monitor`. When selftest fails, idf.py monitor runs the output through the ELF and gives you source-line attribution inside main/self_test/self_test.c - you see exactly which check tripped and at which line. That file path plus line tells you whether it's a firmware bug worth filing on GitHub or an actual hardware fault.

13

Check the TPS546 Device ID on Gamma / GT. Probe the I2C bus with a logic analyzer or scope. Issue a PMBus read of register 0xAD (IC_DEVICE_ID) against the TPS546 address. Compare returned bytes against the TPS546D24A vs TPS546D24S datasheet values. If the IC on your board doesn't match what your firmware expects, you either need the alternate-variant firmware or an IC swap. Community discussion on ESP-Miner issue #1291 has board-rev-to-variant mapping tables.

14

Measure TPS546 VCORE output under selftest load. Probe VOUT on the TPS546 with a multimeter while the ASIC tries to start during the hashrate benchmark. Gamma VCORE is typically around 1.1-1.3V (firmware configurable). Drop below spec under load or oscillation visible on a scope = failing TPS546 or out-of-spec input. If 5V input is clean but VCORE collapses, the TPS546 is toast - QFN / SOIC-10 bench-level rework job.

15

Re-seat or resolder suspect components. EMC2101 fan/I2C controller, SSD1306 OLED, TPS546 itself, and the ESP32-S3-WROOM module are surface-mount parts that fatigue from 24/7 thermal cycling. Cold joints under the ESP32 shield are a known pattern on heavily-used Bitaxes. Reflow from the bottom with a preheat stage (<=150 C bottom, ~300 C top for ~30 s) and hot air. Touch up suspect pads with flux and a fine tip. On GT specifically, re-seat or re-solder the XT30 connector - it's a known weak point.

16

Stop DIY when: you've flashed the correct factory image + completed a full erase_flash + tested two known-good PSUs, and selftest still halts on the same subsystem. Or: VCORE rail is dead, TPS546 output is stuck at 0V or oscillating, EMC2101 won't ACK on I2C across three firmware versions, or there's visible damage (scorched IC, lifted pads, bulging cap, cracked MLCC, cooked smell). On a ~$150-$450 Bitaxe the economics favour shipping to D-Central over buying a reflow station you'll use once. Book the repair slot at d-central.tech/services/asic-repair/.

17

What the D-Central bench does: every inbound Bitaxe runs on a dedicated fixture with programmable load per rail. Per-chip ASIC isolation via official bitaxeorg/ESP-Miner factory binaries. TPS546 variant identification and swap to matched-rev IC. EMC2101 / SSD1306 replacement from salvaged-grade stock. ESP32-S3-WROOM module swap where needed. Full reflow, full reseal, 24-hour burn-in with a real pool before return shipping. Bench fixtures for every variant - Supra, Ultra, Gamma, GT, Hex, UltraHex - because D-Central pioneered the Bitaxe Mesh Stand and the first Bitaxe + Bitaxe Hex heatsinks.

18

Ship safely. Pack the Bitaxe in an anti-static bag, double-box with at least 5 cm of foam on every side. Remove any stand, heatsink screws loose in the package, and spare cables - they score the PCB in transit. Include a note with your firmware version, the selftest subsystem that failed (POWER / VCORE / ASIC / HASHRATE / FAN / I2C), and everything you've already tried. That single page saves us diagnostic time, which saves you repair dollars.

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.