LAN7800 EEPROM Programmer
Public Made by Adomby adom
MPLAB-Connect-parity EEPROM tool for the Microchip LAN7800 USB-3.1 to Gigabit-Ethernet controller (VID 0x0424 / PID 0x7800). Read an adapter's EEPROM to a .bin, edit MAC / VID / PID / bcdDevice / strings / serial and LED/GPIO with a byte-exact preview, and program hardware with verify-after-write. Reads are free; physical writes are gated behind --force-physical-write. Ships an AI-oriented CLI (single source of truth) plus a Hydrogen webapp that shells out to it.
MPLAB Connect parity — feature checklist for the LAN7800 Linux app
Source: CONDUCTOR research scout. Match the MPLAB Connect Configurator GUI feature set. Docs to mirror: DS50002634D (GUI), DS50002552A Ch.11 (CLI/INI field schema), DS50002629 (CLI).
Transport (settles the access-method question)
LAN78xx is driven through Microchip's kernel network driver (NDIS miniport on Windows),
NOT WinUSB/libusb — WinUSB is their USB-hub path only. The Linux analog is the in-tree
lan78xx driver via ethtool -e/-E, which is exactly what Microchip's own support
article "LAN78xx EEPROM/OTP Programming on Linux" recommends. → ethtool is the right primary.
CORE (v1 table-stakes parity)
- EEPROM read → .bin dump, write image + verify, erase / restore defaults (EEPROM only, not OTP). Support both 256- and 512-byte parts.
- Config file = raw binary .bin — byte-for-byte EEPROM image, NOT json. (JSON/.cfg is hub-line only; do not implement it for LAN78xx.) Load base → edit → Preview the exact .bin without touching hardware → Save.
- MAC (single): colon hex; Microchip OUI 00:80:0F.
- USB descriptor overrides: VID, PID, bcdDevice/DID (on LAN7800 set BOTH USB2 and USB3 VID/PID), string descriptors (Manufacturer, Product, Configuration, Interface — each enable/disable; empty string disables), serial number.
- Signature contract (must be byte-exact): EEPROM byte0 =
0xA5; OTP0xF3→payload@0x01,0xF7→payload@0x100;0xFFon OTP sig = permanently dead (guard hard in UI). Tools lay down the signature automatically when compiling settings→image. - Verify-after-write is mandatory — read back and compare on every write cycle.
- Model EEPROM-over-OTP boot precedence in the UI (warn: if it boots from EEPROM, OTP writes appear to "do nothing").
ADVANCED (later)
- OTP program (write-once, "fixed location"), MAC ranges / mass production (Start/Max/Increment for MAC + serial), multi-adapter targeting.
- Config flags / raw register overrides (ConfigFlags0/3/4/5), LED (4 LEDs × 16 modes + behavior), GPIO, PME/wake-up-frame filters, power (Self/Bus, SSMaxPower/HSMaxPower), remote wakeup.
- Live register R/W (control/status + PHY), production test harness (ping/loopback/speed).
- Optional human-readable source format (INI/TOML) that compiles to the .bin (that's what MPLAB's INI layer is). Not required for v1.
LED modes (16), for later parity
0 Link/Act,1 Link1000/Act,2 Link100/Act,3 Link10/Act,4 Link100+1000/Act,5 Link10+1000/Act, 6 Link10+100/Act,7 rsvd,8 Duplex/Collision,9 Collision,10 Activity,11 rsvd,12 AutoNeg Fault, 13 Serial Mode,14 Force Off,15 Force On. + behavior reg (blink 2.5/5/10/20Hz, 5kHz pulse).
Reading order (sources)
- DS50002552A Ch.11 (definitive INI/BIN field schema) 2. DS50002634D (GUI) 3. DS50002629 (CLI)
- EVB-LAN7800 UG DS50002482A (boot precedence) 5. support.microchip.com "LAN78xx EEPROM/OTP Programming on Linux". Local PDFs saved this session under scratchpad (lan7800_sw_guide.pdf, mplab_gui.pdf).
# MPLAB Connect parity — feature checklist for the LAN7800 Linux app
Source: CONDUCTOR research scout. Match the MPLAB Connect Configurator GUI feature set.
Docs to mirror: DS50002634D (GUI), DS50002552A Ch.11 (CLI/INI field schema), DS50002629 (CLI).
## Transport (settles the access-method question)
LAN78xx is driven through Microchip's **kernel network driver (NDIS miniport on Windows)**,
NOT WinUSB/libusb — WinUSB is their USB-hub path only. The Linux analog is the in-tree
`lan78xx` driver via **ethtool -e/-E**, which is exactly what Microchip's own support
article "LAN78xx EEPROM/OTP Programming on Linux" recommends. → ethtool is the right primary.
## CORE (v1 table-stakes parity)
- EEPROM **read → .bin dump**, **write image + verify**, **erase / restore defaults**
(EEPROM only, not OTP). Support both 256- and 512-byte parts.
- **Config file = raw binary .bin** — byte-for-byte EEPROM image, NOT json. (JSON/.cfg is
hub-line only; do not implement it for LAN78xx.) Load base → edit → **Preview** the exact
.bin without touching hardware → Save.
- **MAC (single)**: colon hex; Microchip OUI 00:80:0F.
- **USB descriptor overrides**: VID, PID, bcdDevice/DID (on LAN7800 set BOTH USB2 and USB3
VID/PID), string descriptors (Manufacturer, Product, Configuration, Interface — each
enable/disable; empty string disables), serial number.
- **Signature contract (must be byte-exact)**: EEPROM byte0 = `0xA5`; OTP `0xF3`→payload@0x01,
`0xF7`→payload@0x100; **`0xFF` on OTP sig = permanently dead** (guard hard in UI). Tools lay
down the signature automatically when compiling settings→image.
- **Verify-after-write is mandatory** — read back and compare on every write cycle.
- Model **EEPROM-over-OTP boot precedence** in the UI (warn: if it boots from EEPROM, OTP
writes appear to "do nothing").
## ADVANCED (later)
- OTP program (write-once, "fixed location"), MAC ranges / mass production (Start/Max/Increment
for MAC + serial), multi-adapter targeting.
- Config flags / raw register overrides (ConfigFlags0/3/4/5), LED (4 LEDs × 16 modes + behavior),
GPIO, PME/wake-up-frame filters, power (Self/Bus, SSMaxPower/HSMaxPower), remote wakeup.
- Live register R/W (control/status + PHY), production test harness (ping/loopback/speed).
- Optional human-readable source format (INI/TOML) that compiles to the .bin (that's what
MPLAB's INI layer is). Not required for v1.
## LED modes (16), for later parity
0 Link/Act,1 Link1000/Act,2 Link100/Act,3 Link10/Act,4 Link100+1000/Act,5 Link10+1000/Act,
6 Link10+100/Act,7 rsvd,8 Duplex/Collision,9 Collision,10 Activity,11 rsvd,12 AutoNeg Fault,
13 Serial Mode,14 Force Off,15 Force On. + behavior reg (blink 2.5/5/10/20Hz, 5kHz pulse).
## Reading order (sources)
1. DS50002552A Ch.11 (definitive INI/BIN field schema) 2. DS50002634D (GUI) 3. DS50002629 (CLI)
4. EVB-LAN7800 UG DS50002482A (boot precedence) 5. support.microchip.com "LAN78xx EEPROM/OTP
Programming on Linux". Local PDFs saved this session under scratchpad (lan7800_sw_guide.pdf, mplab_gui.pdf).