diff --git a/doc/devices/2M-PCB23-V3_2.md b/doc/devices/2M-PCB23-V3_2.md new file mode 100644 index 00000000..706b44b4 --- /dev/null +++ b/doc/devices/2M-PCB23-V3_2.md @@ -0,0 +1,36 @@ +### 2M-PCB23-V3.2 + +## Brands +|Brand|Type|Managed|PCB|Flash|Chip RTL| +|---|---|---|---|---|---| +| keepLINK | KP-9000-9XHML-X | Yes| 2M-PCB23-V3.2 | 2M (Winbond 25Q) | | + +The original web interface reports this board as hardware version V3.2 +(original firmware V100.9.25, January 2026). + +## Compared to V3.1 + +The component placement matches [2M-PCB23-V3.1](2M-PCB23-V3_1.md): same +positions for the flash (U8), the T7/T8/T9/T10 headers, the SFP cage and its +LED, and the unpopulated U7/U9 footprints. Build with +`MACHINE=KP_9000_9XHML_X_V3_2`, which uses the V3.1 machine definition and +only differs in the reported name. + +## Tested + +Installed from the original firmware through its web interface with +`installer/output/rtlplayground_oem_upgrade.bin`, then: + +- RJ45 ports link at 2.5G; LEDs: orange at 2.5G, green below +- SFP port: module detected with vendor/model/serial and DOM readings + (temperature, Vcc, TX bias, TX/RX power), link up at 10G +- factory MAC read from flash (0x1FC000) +- reset button (GPIO48): held for more than 10 s it restores the default config + +## Flash access + +Reading the flash in-circuit with a SOIC-8 clip did not work: the chip ID +comes back as `EF FF FF` (only the manufacturer byte is right) and reads +return 0xff, the same as on a V3.1 board. The switch chip is powered through +the clip and keeps driving the SPI lines. Make sure a way back is acceptable +before installing, or hold the switch chip in reset while reading. diff --git a/doc/supported_devices.md b/doc/supported_devices.md index 740ae1da..ee2d2c47 100644 --- a/doc/supported_devices.md +++ b/doc/supported_devices.md @@ -22,6 +22,7 @@ The following devices have been tested and are fully working: | Keeplink | KP-9000-6XH-X2 / KP-9000-6XHML-X2 | No/Yes | [2M-PCB43-V1.2 / V2.1](devices/KP-9000-6XH-X2.md) | | 4 + 2 | | keepLINK | KP-9000-9XHML-X | Yes | [2M-PCB23-V2.2](devices/2M-PCB23-V2_2.md) | 2M | 8 + 1 | | keepLINK | KP-9000-9XHML-X | Yes | [2M-PCB23-V3.1](devices/2M-PCB23-V3_1.md) | 2M | 8 + 1 | +| keepLINK | KP-9000-9XHML-X | Yes | [2M-PCB23-V3.2](devices/2M-PCB23-V3_2.md) | 2M | 8 + 1 | | LIANGUO | SWTG024AS | No | [SWTG024AS-v2.0-17452](devices/SWTG024AS.md) | 0.5M | 4 + 2 | | Lianguo | ZX-SWTGW215AS | Yes | [PCB-SWTG115AS-V2.0 / PCB-SWTG115AS-V2.1](devices/SWTGW215AS.md) | 2M | 5 + 1 | | Lianguo | HYWS-SGT0108S | No | [2G5F_20G_V1.01](devices/HYWS-SGT0108S.md) | 0.5M | 8 + 1 | diff --git a/machine.c b/machine.c index 01ec5767..aab941d6 100644 --- a/machine.c +++ b/machine.c @@ -237,9 +237,14 @@ __code const struct machine machine = { }, }; -#elif defined MACHINE_KP_9000_9XHML_X_V3_1 +#elif defined(MACHINE_KP_9000_9XHML_X_V3_1) || defined(MACHINE_KP_9000_9XHML_X_V3_2) +// 2M-PCB23-V3.2 is wired like V3.1 (SFP detection, LEDs, factory MAC location) __code const struct machine machine = { +#if defined(MACHINE_KP_9000_9XHML_X_V3_2) + .machine_name = "keepLink KP-9000-9XHML-X V3.2", +#else .machine_name = "keepLink KP-9000-9XHML-X V3.1", +#endif .isRTL8373 = 1, .min_port = 0, .max_port = 8, diff --git a/machine.h b/machine.h index cd393073..84367c2d 100644 --- a/machine.h +++ b/machine.h @@ -22,6 +22,7 @@ // #define MACHINE_KP_9000_9XH_X_EU // #define MACHINE_KP_9000_9XHML_X_V2_2 // #define MACHINE_KP_9000_9XHML_X_V3_1 +// #define MACHINE_KP_9000_9XHML_X_V3_2 // #define MACHINE_SWGT024_V2_0_MANAGED // #define MACHINE_SWGT024_V2_0_UNMANAGED // #define MACHINE_TRENDNET_TEG_S562