Skip to content

Chip database

etch341’s chip database lives in two TOML files at the repo root, embedded into the binary at build time via include_str!. Running etch341 chips from the CLI lists the live, in-binary set.

Source: chips/chips.toml. Listed jedec_id is the 3-byte response to opcode 0x9F, formatted as 6 uppercase hex chars.

Winbond W25Q (3.3V, manufacturer 0xEF, family 0x40)

Section titled “Winbond W25Q (3.3V, manufacturer 0xEF, family 0x40)”
ChipJEDECSizeNotes
W25Q80DVEF40141 MB8 Mbit
W25Q16JVEF40152 MB16 Mbit
W25Q32JVEF40164 MB32 Mbit
W25Q64JVEF40178 MB64 Mbit — common BIOS flash
W25Q128JVEF401816 MB128 Mbit — common BIOS flash
W25Q256JVEF401932 MB256 Mbit (4-byte addressing)
W25Q512JVEF402064 MB512 Mbit, 3.3V (4-byte addressing)

Winbond W25X (legacy 3.3V, manufacturer 0xEF, family 0x30)

Section titled “Winbond W25X (legacy 3.3V, manufacturer 0xEF, family 0x30)”
ChipJEDECSize
W25X10EF3011128 KB
W25X20EF3012256 KB
W25X40EF3013512 KB
W25X80EF30141 MB
W25X16EF30152 MB
W25X32EF30164 MB
W25X64EF30178 MB

Winbond W25Q*JW (1.8V, manufacturer 0xEF, family 0x60)

Section titled “Winbond W25Q*JW (1.8V, manufacturer 0xEF, family 0x60)”

Common in newer Intel + AMD BIOS chips and M.2 modules. Needs a 1.8V-capable programmer — see Wiring + voltage.

ChipJEDECSize
W25Q16JWEF60152 MB
W25Q32JWEF60164 MB
W25Q64JWEF60178 MB
W25Q128JWEF601816 MB
W25Q256JWEF601932 MB
ChipJEDECSize
MX25L8005C220141 MB
MX25L1606EC220152 MB
MX25L3206EC220164 MB
MX25L6406EC220178 MB
MX25L12835FC2201816 MB
MX25L25635FC2201932 MB

Macronix MX25U (1.8V, manufacturer 0xC2, family 0x25)

Section titled “Macronix MX25U (1.8V, manufacturer 0xC2, family 0x25)”
ChipJEDECSizeNotes
MX25U4033EC22533512 KBCommon GPU VBIOS (e.g. GTX 1060) — hardware-validated
MX25U8035EC225341 MB
MX25U1635FC225352 MB
MX25U3235FC225364 MB
MX25U6435FC225378 MB
MX25U12835FC2253816 MB
MX25U25645GC2253932 MB(4-byte addressing)

GigaDevice GD25Q + GD25LQ (manufacturer 0xC8)

Section titled “GigaDevice GD25Q + GD25LQ (manufacturer 0xC8)”
ChipJEDECSizeVoltage
GD25Q80C840141 MB3.3V
GD25Q16C840152 MB3.3V
GD25Q32C840164 MB3.3V
GD25Q64C840178 MB3.3V
GD25Q128C8401816 MB3.3V
GD25Q256C8401932 MB3.3V (4-byte addressing)
GD25LQ16C860152 MB1.8V
GD25LQ32C860164 MB1.8V
GD25LQ64C860178 MB1.8V
GD25LQ128C8601816 MB1.8V
ChipJEDECSizeManufacturer
SST25VF016BBF25412 MBSST (AAI word-program)
SST25VF032BBF254A4 MBSST
SST25VF064CBF254B8 MBSST
AT25SF0411F8401512 KBAdesto
AT25SF0811F85011 MBAdesto
AT25SF1611F86012 MBAdesto
EN25QH321C70164 MBEON
EN25QH641C70178 MBEON
EN25QH1281C701816 MBEON
P25Q40H856013512 KBPUYA
P25Q80H8560141 MBPUYA
P25Q16H8560152 MBPUYA
P25Q32H8560164 MBPUYA
P25Q64H8560178 MBPUYA
IS25LP0649D60178 MBISSI (FPGA dev boards)
IS25LP1289D601816 MBISSI (FPGA dev boards)

Source: chips/i2c_chips.toml. No JEDEC ID for I²C; chips are identified by name only via --chip <NAME>. The bit-stuffing / addr-width / page-size differences across the family are handled automatically.

ChipSizePageAddr widthSlave-addr bits stuffed
24C01128 B8 B1 byte0
24C02256 B8 B1 byte0
24C04512 B16 B1 byte1 (A0 used for mem-bit 8)
24C081 KB16 B1 byte2 (A0/A1 used for mem-bits 8-9)
24C162 KB16 B1 byte3 (A0/A1/A2 used for mem-bits 8-10)
24C324 KB32 B2 bytes0
24C648 KB32 B2 bytes0
24C12816 KB64 B2 bytes0
24C25632 KB64 B2 bytes0
24C51264 KB128 B2 bytes0

Most chips that aren’t in the database still work via the --chip <NAME> override if their pinout and opcodes match a chip that is in the database (it’s almost always one of the W25Q / MX25L / GD25Q / 24Cxx clones).

For chips that need first-class support, add an entry to the right TOML file:

[[chip]]
name = "MX25R8035F"
jedec_id = "C22814"
size_kb = 1024
page_size = 256
sector_size = 4096
erase_time_ms = 60
notes = "Macronix 8 Mbit, low-power 1.8V"

The chipdb unit tests validate that every entry has a unique JEDEC ID (6 hex chars, all-hex) at build time, so a duplicate or malformed ID will fail CI before the chip lands in a release. PRs welcome at github.com/packetThrower/etch341.