# 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).
