Otp.bin Seeprom.bin
What "otp.bin" and "seeprom.bin" mean
These filenames commonly appear when dumping or backing up low-level firmware/ROM areas on embedded systems (e.g., routers, SoCs, microcontrollers, mobile basebands). They refer to two distinct non-volatile storage regions:
-
otp.bin
- Stands for “OTP” = One-Time Programmable memory (also called fuse memory, eFuse, or one-time-programmable ROM).
- Typically stores permanent device data written once or very rarely changed (blown fuses).
- Common contents:
- Device unique IDs (serial number, chip ID, IMEI in phones)
- Cryptographic keys (device root key, secure boot keys)
- Calibration data permanently tied to hardware
- Security/configuration fuses (disabling debug, locking bootloader)
- Properties:
- Write-once (or write-very-rarely via irreversible fuse blow)
- High security sensitivity — leaking otp contents often compromises device identity or security
- Small size (hundreds of bytes to a few kilobytes)
-
seeprom.bin
- Short for “serial EEPROM” (often I2C/SPI EEPROM) or secure EEPROM image.
- Typically stores writable configuration and calibration data, and sometimes security metadata.
- Common contents:
- NVRAM-style settings (MAC addresses, Wi‑Fi calibration, network config)
- Small firmware blobs or boot parameters
- Less sensitive keys or tokens (though can contain sensitive items)
- Properties:
- Electrically erasable and rewritable
- Larger and more flexible than OTP
- Can be read/modified by the system or during servicing
Viewing otp.bin
xxd otp.bin | head -n 8
00000000: ffff ffff 83a2 1400 ffff ffff 0000 0100 ................
00000010: 0000 0000 0000 0000 3c94 5a1f 0000 0000 ........<.Z.....
0x00-0x03:0xFFFFFFFF(Unprogrammed OTP is typically all 1s).0x04-0x07:0x83a21400– This might be a vendor ID + chip revision.- Notice the
0x3c945a1fat offset0x18. That is likely the 32-bit Root of Trust Hash (first 4 bytes).
Critical sign: If otp.bin is entirely 0xFF or 0x00, the chip is virgin (not fused). Writing a blank OTP into a fused chip will erase security locks? No. OTP is read-only after fusing. You cannot "write" a new OTP; you can only program an unfused one.
Part 2: The Cold Hard Dependency – Why You Cannot Mix These Files
The most dangerous misconception in hardware repair is believing that "firmware is firmware." If you take seeprom.bin from Board A and otp.bin from Board B, you have a 99% chance of creating a non-functional device. otp.bin seeprom.bin
Python Script to View File Contents
Here's a simple Python script to read these files and display their contents in both hexadecimal and text formats:
def view_binary_file(filename):
try:
with open(filename, 'rb') as file:
data = file.read()
print(f"Contents of filename:")
print("Hexadecimal View:")
for i, byte in enumerate(data):
print(f"i:04x: byte:02x", end=' ')
if (i + 1) % 16 == 0:
print()
print("\nText View (ASCII):")
try:
print(data.decode('ascii'))
except UnicodeDecodeError:
print("Non-ASCII text encountered.")
except FileNotFoundError:
print(f"filename not found.")
# Usage
filenames = ["otp.bin", "seeprom.bin"]
for filename in filenames:
view_binary_file(filename)
print("\n---\n")
4. Region Unlocking (Consoles)
On some consoles, the seeprom.bin stores the region code (US, JP, EU). Editing it (after removing checksums) can change the region, though modern consoles now bind region to OTP. What "otp
Example scenarios
- Device bricked after firmware update: restoring SEEPROM may recover config; OTP typically unaffected.
- Migrating settings to a replacement board: SEEPROM can be copied; OTP values (IDs/keys) may prevent full cloning.
- Security audit: look for secrets in both—OTP for root keys, SEEPROM for API tokens or plaintext passwords.
Why both appear in device dumps
Manufacturers include both in full device images to preserve:
- Device identity and secure provisioning (OTP).
- Configurable settings and operational parameters (EEPROM). Together they allow full device restoration, cloning (if desired), or forensic analysis.
Part 4: Dangerous Operations – Writing and Cloning
This is where most people brick their devices. Treat otp.bin as immutable truth. Attempting to write it is usually impossible by design (true OTP fuses cannot be reprogrammed), but some SoCs implement OTP emulation in e-fuse arrays, which can be locked permanently if you write garbage. Stands for “OTP” = One-Time Programmable memory (also
otp.bin (One-Time Programmable memory)
- Nature: Physically write-once, read-many. Cannot be erased or reprogrammed after locking.
- Typical contents:
- Chip unique ID / serial number
- Root of trust / hardware security keys (e.g., for secure boot)
- Device configuration bits (voltage, clock, trim values)
- Permanent lock bits for debug interfaces (JTAG disable)
- Size: Very small (e.g., 128 bytes, 1 Kbit).
- Usage: Factory-programmed once; immutable at runtime.