AT24C02 EEPROM — Board Identification Memory
AT24C02 EEPROM specifications, I2C interface, data layout, and troubleshooting for hash board identification and calibration storage in mining hardware.
Overview
The AT24C02 is a 2-Kilobit (256 bytes) I2C EEPROM manufactured by Microchip (Atmel). It is found on virtually every hash board in Antminer and many Whatsminer models, serving as the board's identity and calibration memory. The EEPROM stores critical information including the board serial number, hardware version, model identifier, and calibration data that the control board reads during initialization.
When the EEPROM data is corrupted, unreadable, or contains a mismatched serial number, the miner will refuse to recognize the hash board — reporting errors like "board not detected", "chain find 0 ASIC", or "EEPROM read error". This is one of the most common causes of a hash board being rejected by the control board despite being electrically functional.
Specifications
| Parameter | Value |
|---|---|
| Manufacturer | Microchip (Atmel) |
| Memory Size | 2 Kbit (256 bytes) |
| Interface | I2C / Two-Wire |
| I2C Speed | 100kHz (standard), 400kHz (fast) |
| Supply Voltage | 1.8V to 5.5V |
| Write Time | 5ms per page |
| Page Size | 8 bytes |
| Endurance | 1,000,000 write cycles |
| Data Retention | 100 years |
| I2C Address | 0x50-0x57 (A0-A2 configurable) |
| Package | SOIC-8, SOT-23-5, DFN-8 |
| Write Protect | WP pin (active HIGH disables writes) |
I2C Address Configuration
The AT24C02 I2C address is formed from a fixed upper nibble (1010) and three configurable bits (A2, A1, A0):
| A2 | A1 | A0 | I2C Address |
|---|---|---|---|
| GND | GND | GND | 0x50 |
| GND | GND | VCC | 0x51 |
| GND | VCC | GND | 0x52 |
| GND | VCC | VCC | 0x53 |
| VCC | GND | GND | 0x54 |
| VCC | GND | VCC | 0x55 |
| VCC | VCC | GND | 0x56 |
| VCC | VCC | VCC | 0x57 |
In Antminer hash boards, the EEPROM is typically at 0x50 (all address pins grounded).
On Antminer hash boards, the EEPROM sits behind the PIC16F1704 I2C bridge. The PIC and EEPROM addresses shift together across resets — if the PIC is at 0x21, the EEPROM will be at 0x51 (offset +0x30). Always scan the full address range when searching for the EEPROM.
Memory Layout
The 256 bytes of EEPROM storage are organized into functional regions. The exact layout varies by manufacturer and model, but a typical Antminer hash board uses:
| Offset | Length | Description |
|---|---|---|
| 0x00-0x03 | 4 bytes | Magic header / board type identifier |
| 0x04-0x0F | 12 bytes | Board serial number (ASCII) |
| 0x10-0x13 | 4 bytes | Hardware version |
| 0x14-0x17 | 4 bytes | Model identifier |
| 0x18-0x1F | 8 bytes | Manufacturing date |
| 0x20-0x3F | 32 bytes | Voltage calibration data per domain |
| 0x40-0x5F | 32 bytes | Frequency calibration data |
| 0x60-0x7F | 32 bytes | Temperature sensor offsets |
| 0x80-0xEF | 112 bytes | Chip performance data / bad chip bitmap |
| 0xF0-0xFE | 15 bytes | Reserved / manufacturer data |
| 0xFF | 1 byte | Checksum |
The EEPROM layout is not standardized and varies between miner models and firmware versions. The table above is a general guide based on common Antminer configurations. Always dump and study the EEPROM contents before making modifications.
Reading and Writing
I2C Read Operation
To read a byte from the AT24C02:
# Sequential read from AT24C02 at 0x50
# Step 1: Send the memory address to read from
i2c_start()
i2c_write(0x50 << 1 | 0) # Write mode, device address
i2c_write(0x00) # Memory address (0x00 = first byte)
# Step 2: Read the data
i2c_start() # Repeated start
i2c_write(0x50 << 1 | 1) # Read mode
data = i2c_read_nack() # Read one byte, NACK to end
i2c_stop()I2C Write Operation
Writing to the AT24C02 uses page write mode (up to 8 bytes at a time):
# Page write to AT24C02 at 0x50
i2c_start()
i2c_write(0x50 << 1 | 0) # Write mode
i2c_write(0x00) # Starting memory address
i2c_write(0x41) # Data byte 1
i2c_write(0x5A) # Data byte 2
# ... up to 8 bytes per page
i2c_stop()
# CRITICAL: Wait 5ms for the write cycle to complete
time.sleep(0.005)Page boundary: The AT24C02 has 8-byte pages. If a write crosses a page boundary (e.g., writing 4 bytes starting at address 0x06), the address wraps around within the page — bytes 3 and 4 overwrite addresses 0x00 and 0x01 instead of 0x08 and 0x09. Always align multi-byte writes to page boundaries.
Reading via PIC Bridge (Antminer)
On Antminer boards, the EEPROM is accessed through the PIC16F1704 I2C bridge. The control board does not communicate with the EEPROM directly — it sends a sensor read command (CMD 0x3C) to the PIC, which performs the I2C transaction with the EEPROM.
Common Issues
1. Corrupted Data — "Board Not Detected"
Symptoms: The miner reports the hash board as not detected or shows "EEPROM error" in the log. The board is physically connected and powered.
Causes:
- Power glitch during a firmware-initiated EEPROM write (calibration update)
- Electrical noise on the I2C bus corrupting a write transaction
- EEPROM reaching its write endurance limit (unlikely — 1 million cycles)
Fix: Re-program the EEPROM with correct data. This requires knowing the correct values for the board model. Some repair shops maintain EEPROM image databases. The firmware's "factory reset" function may also re-initialize the EEPROM.
2. Wrong Serial Number — "Hashboard Mismatch"
Symptoms: The miner detects the board but reports a serial number mismatch or refuses to start hashing. This commonly occurs when a hash board is moved from one miner to another.
Causes:
- Some firmware versions bind hash boards to a specific control board by storing a pairing key in the EEPROM
- Board was reprogrammed with generic data that does not match the control board's expected configuration
Fix: Re-pair the hash board to the control board using the miner's pairing function (available in some firmware versions), or reprogram the EEPROM with the expected pairing data.
3. EEPROM Not Responding
Symptoms: I2C scan shows no device at the expected EEPROM address.
Causes:
- Failed EEPROM IC
- Missing 3.3V power (check LDO regulator)
- Broken SDA or SCL trace between connector and EEPROM
- PIC bridge failure (Antminer — EEPROM may be fine but PIC is not forwarding I2C)
- Write protect (WP) pin stuck HIGH (prevents writes, but reads should still work)
4. All Data Reads as 0xFF
Symptoms: EEPROM responds on I2C but all bytes read as 0xFF (erased state).
Causes:
- EEPROM was accidentally erased (full-chip write of 0xFF)
- New/replacement EEPROM was installed but not programmed
- Data corruption that set all bits high
Fix: Reprogram the EEPROM with the correct board data.
Testing Procedures
I2C Bus Scan
Scan the I2C bus for devices in the 0x50-0x57 range:
- On Antminer boards: scan through the PIC bridge, or access the hash board's internal I2C bus directly
- Expected: One device responding at 0x50 (or 0x51-0x57 if address pins are configured)
Dump EEPROM Contents
Read all 256 bytes and examine:
- First few bytes: Should contain a recognizable magic header (not 0xFF or 0x00)
- Serial number region: Should contain printable ASCII characters
- Overall: Should not be all 0xFF (erased) or all 0x00 (zeroed)
# Example hex dump of a valid EEPROM (first 32 bytes)
# 00: 42 4D 31 33 53 31 39 58 50 30 31 32 33 34 35 00
# 10: 01 02 00 05 13 68 00 01 32 30 32 33 30 35 31 35Verify Checksum
If the EEPROM format includes a checksum byte (typically the last byte at 0xFF):
- Calculate the expected checksum from the stored data
- Compare with the stored checksum value
- A mismatch indicates data corruption
Write Test
To verify the EEPROM is writable (use a non-critical address):
- Read a byte from a known unused location
- Write a test value
- Wait 5ms for the write cycle
- Read back and verify the test value was stored
- Restore the original value
Do not write to addresses containing board identification data unless you have a backup of the full EEPROM contents. Corrupting the serial number or calibration data will require reprogramming from a known-good source.
Replacement Notes
- The AT24C02 in SOIC-8 is straightforward to replace with a soldering iron
- SOT-23-5 packages require more precision but are still manageable
- After replacement, the EEPROM must be programmed — a blank EEPROM will cause the miner to reject the board
- If you have a copy of the original EEPROM data, write it to the replacement chip before or after installation
- If the original data is lost, the board may need to be re-initialized through the miner's firmware diagnostic tools
- Compatible alternatives: AT24C02D, AT24C02C, CAT24C02, M24C02 — any 2Kbit I2C EEPROM with the same pinout
Found In These Miners
- Antminer S19 Series — 1 per hash board (behind PIC bridge)
- Antminer S19 XP — 1 per hash board
- Antminer S21 — 1 per hash board
- Whatsminer M50 — 1 per hash board (direct I2C access)
- Whatsminer M30S — 1 per hash board
Related Pages
- PIC16F1704 I2C Bridge (EEPROM access on Antminer)
- Hashboard Connectors & Pinouts (I2C signal path)
- LDO Regulators (EEPROM power supply)
- UART, SPI & I2C Explained
- How Hash Boards Work
Capacitors in Mining Hardware
Types of capacitors used in ASIC mining hash boards — MLCC, electrolytic, and polymer — including common failures, testing procedures, and replacement guidance.
PIC16F1704 — I2C Bridge Controller
PIC16F1704 microcontroller used as an I2C bridge in Antminer hash boards — protocol specification, command reference, and troubleshooting procedures.