Skip to content

We're upgrading our operations to serve you better. Orders ship as usual from Laval, QC. Questions? Contact us

Bitcoin accepted at checkout  |  Ships from Laval, QC, Canada  |  Expert support since 2016

BITAXE_DISP_GARBAGE Warning

Bitaxe – Display Shows Garbage / Corrupted Characters

Bitaxe OLED/LCD lights up but shows garbage - random pixel scatter, scrambled framebuffer rows, or mojibake (Chinese/Japanese characters) where hashrate digits should be. Most often a wrong AxeOS binary flashed onto the wrong variant (SSD1306 vs SH1106 controller mismatch); also I2C clock too fast on a long ribbon, ground bounce from a noisy PSU, NVS corruption holding stale init parameters, or a dying display.

Warning — Should be addressed soon

Affected Models: Bitaxe Supra, Ultra, Gamma 601, Gamma 602, GT, Hex (any Bitaxe with an SSD1306/SH1106 0.96-inch I2C OLED at address 0x3C/0x3D, plus the Bitaxe GT 240x240 ST7789 SPI LCD)

Symptoms

  • OLED lights up at boot but shows random pixel scatter - no recognizable text or numbers
  • Hashrate digits appear, but rows above and below are scrambled or shifted by a few pixels
  • Garbled Chinese / Japanese / Korean characters where ASCII text should be - classic byte-shift mojibake
  • Screen shows the AxeOS splash/logo correctly but goes garbage once mining starts
  • Vertical bands or horizontal stripes that flicker with each frame update
  • Display worked before the most recent firmware update (AxeOS v2.7.x to v2.8.x or v2.8.x to v2.9.x)
  • Display worked before you swapped the OLED for a different module
  • Symptom appears at full hashrate but not at idle - I2C integrity drops under thermal load
  • Symptom worsens when the unit is mounted vertically with a long ribbon, clears when horizontal
  • Serial console at 115200 baud shows `i2c_master_transmit_receive` warnings or repeated NACKs
  • You hand-flashed via esptool.py from a binary you found on Discord or a third-party fork
  • You replaced a dead OLED with a generic Aliexpress module and it has been garbage ever since
  • Bitaxe GT ST7789 240x240 LCD shows torn frames or color-channel swaps (red/blue inverted)

Step-by-Step Fix

1

Cold-boot at the wall outlet. Pull the PSU plug, wait 30 seconds for the rails to fully drain, plug back in. I2C peripherals occasionally lock into a half-state where the OLED has the bus master attention but the controller registers point at random framebuffer addresses. A cold boot resets that. Costs nothing, takes 30 seconds, clears about 5% of garbage-character reports on the D-Central bench. Always step one before reaching for tools.

2

Re-flash via the Bitaxe Tool, not esptool.py. Plug the miner into USB-C, open bitaxe-tool, let it auto-detect the variant, flash the latest stable AxeOS for that exact board (Supra, Ultra, Gamma 601, Gamma 602, GT, or Hex). The Tool gets the binary right; esptool.py from a Discord drop usually does not. This single step clears the largest share of garbage-character tickets D-Central sees - wrong binary on the wrong board sends wrong driver commands to the OLED controller and you get scrambled rows.

3

Photograph the garbage pattern before you touch anything. The pattern is diagnostic. Shifted-but-recognizable digits = controller mismatch (SSD1306 vs SH1106). Random scatter = dying display or bus integrity. Same garbage layout every cold boot = NVS corruption. Save the photo for the next tier - and for the bench, if it ends up shipped to D-Central. Five seconds of phone photography saves diagnostic time later.

4

Confirm AxeOS is hashing. Open http://<bitaxe-ip> in a browser on the same Wi-Fi network. If hashrate is normal and shares are landing, the screen is the only thing broken - you are losing nothing while you work the diagnostic. If the dashboard does not load, this is bigger than a display problem and you need the Bitaxe - Not Hashing diagnostic page first. Mining can continue while you debug a cosmetic screen problem.

5

Try a different PSU. Some 5 V 3 A USB-C supplies are cleaner than others. A noisy rail glitches I2C levels and produces intermittent garbage. Swap to a known-good supply (an Apple or Anker 45 W USB-PD brick set to 5 V is a reasonable test reference) and watch the screen for 10 minutes at full hashrate. If garbage clears, your previous PSU was the issue; replace it permanently. Cheap PSUs with noisy rails are a tax on every peripheral on the bus.

6

Multimeter the OLED VCC under load. With the miner hashing at full power, probe VCC at the OLED ribbon: target 3.3 V plus or minus 0.1 V. Sagging below 3.0 V means the on-board regulator is stressed or there is a high-impedance fault on the rail; trace the 3.3 V rail back from the OLED pad to the regulator, jumper a broken via with 30 AWG wire if needed. Out-of-spec VCC will produce garbage characters all by itself.

7

Identify the OLED controller (SSD1306 vs SH1106). Power off, lift the OLED daughter board, look at the silkscreen on the back of the panel. Read the part number. If your panel is SH1106 and your firmware was built SSD1306-only, that is the entire problem - flash a current AxeOS release with auto-detect (any release after v2.6.x should handle both). If unmarked or in Chinese only, assume SH1106 for a generic Aliexpress replacement and SSD1306 for a stock-shipped panel.

8

Replace the OLED with a known-good SSD1306 at 0x3C. A 0.96-inch 128x64 SSD1306 I2C OLED is $5 USD from Adafruit, Mouser, Digi-Key, or Aliexpress. Confirm the address-select solder bridge is at 0x3C, confirm 3.3 V tolerance, wire it up to VCC/GND/SDA/SCL, power on. If the new module shows clean text, your old display was dying. Keep the dead one for practice rework - pad reflow on a dead OLED is the cheapest soldering practice you can do.

9

Re-seat or replace I2C pull-ups. On the bottom of the Bitaxe near the ESP32-S3, find the two pull-up resistors on SDA and SCL to 3.3 V. Stock value is 4.7 kOhm or 10 kOhm per the schematic. Measure each with the board powered off. Out-of-spec or open = lifted pad, replace. If schematic-specified pull-ups are missing entirely (possible on community-built or low-cost clones), tack-solder 2.2 kOhm 0603 resistors SDA-to-3.3V and SCL-to-3.3V. Faster I2C rise time, narrower race window, garbage clears.

10

Tape the ribbon flat and run for 20 minutes. If the symptom correlates with vertical mounting or with bumping the chassis, the ribbon is stressed and SDA/SCL are intermittently high-impedance. Lay the unit flat, tape the OLED ribbon to the chassis with 5 cm of low-tack masking tape so it cannot flex. Run for 20 minutes at full hashrate. If garbage clears in this position and returns when you re-mount vertically, reflow the four ribbon-pad solder joints before re-mounting.

11

Erase NVS flash and re-flash from scratch. With Bitaxe Tool: erase_flash (full chip erase, not just app partition), then re-flash the matching AxeOS binary, then re-enter Wi-Fi credentials and pool URL. This wipes any NVS-resident corruption that survives a normal OTA update. If garbage cleared, the OLED init parameters in NVS were corrupt. Document the AxeOS version that introduced the corruption - sometimes it is the upgrade itself that wrote bad data - and consider filing an issue at bitaxeorg/ESP-Miner.

12

Capture I2C bus traffic with a logic analyzer. Hook a Saleae Logic Pro 8 or a $15 clone onto SDA/SCL near the ESP32-S3. Set at least 1 MHz sample rate, capture from power-up. Decode I2C. Look at the first 100 bytes of OLED traffic - that is the init sequence. Compare against the canonical SSD1306 init in the Adafruit_SSD1306 source. If init bytes match SSD1306 but your panel is SH1106, you have your answer. If init looks fine but data writes are corrupt mid-frame, scope the bus for ground bounce.

13

Lower the I2C clock to 100 kHz Standard mode. AxeOS defaults to 400 kHz Fast mode for fast OLED refresh. Some community forks expose a config flag to drop to 100 kHz. On a marginal bus (long ribbon, weak pull-ups, noisy rail) 100 kHz runs cleanly where 400 kHz glitches. Trade-off is slower screen update (still imperceptible to humans). If you build AxeOS from source, the i2c_master_bus_config_t in the OLED init code is where the clk_speed lives.

14

Reflow the OLED daughter-board connector with hot air at 290 to 310 C for 15 to 20 seconds, with flux. Do NOT dwell - connector plastic melts above 320 C. If a ribbon-pad reflow with a fine-tip iron at Tier 2 did not fix the symptom and the panel is otherwise healthy, the connector body itself may have failed. Practice on a known-bad module before risking a working-but-marginal one. This is the difference between garbage-when-bumped and garbage-clean-across-all-mounting-positions.

15

Roll back AxeOS one minor version. If the symptom started immediately after a firmware update and Tier 2 / Tier 3 hardware steps are clean, the upstream ESP-Miner build has a regression on your hardware. Download the previous stable release from GitHub releases, flash via Bitaxe Tool. If the OLED prints clean after rollback, file a bitaxeorg/ESP-Miner issue with the version range and your variant. The Bitaxe community fixes regressions fast when reported with detail.

16

Stop DIY and ship to D-Central's Bitaxe bench. Triggers: re-flashed matching binary plus erased NVS plus swapped to known-good SSD1306 plus replaced pull-ups - and screen still garbage; or logic analyzer shows ESP32-S3 not driving SDA/SCL cleanly on known-correct firmware; or garbage partners with fan-stuck-100, undervoltage, or intermittent reboots indicating broader I2C bus damage; or you see scorching, discolouration, or burnt-component odour anywhere on the PCB; or you cooked a pad during rework. That is ESP32-S3 I2C peripheral fault or PCB-level signal integrity territory - test-fixture work.

17

D-Central bench process: logic-analyzer capture on SDA/SCL at the SoC pads, scope on VCC ground reference for bounce, hot-air rework on the OLED daughter-board, replacement OLED from stocked SSD1306 and SH1106 inventory, ESP32-S3 module reflow or replacement if the SoC I2C peripheral pads are damaged, full re-flash of the matching variant binary on freshly-erased flash. D-Central has been pioneering Bitaxe accessories since the platform launched - original Mesh Stand manufacturer, first-to-market Bitaxe and Bitaxe Hex heatsinks - and the bench has every variant on the shelf for cross-comparison.

18

Ship safely. Anti-static bag, thick foam on every side, in a box that does not flex. Tape the OLED ribbon flat against the chassis before packing - most screen-broke-in-shipping tickets are loose ribbons that bent during transit. Include a note with: observed symptom, photo of the garbage pattern, AxeOS version flashed, PSU model, and your contact info. Saves D-Central diagnostic time, which saves you money. Turnaround 5 to 10 business days, Canada-wide, US and international welcomed.

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.