From b71239f394b308498184653712e42c41b7c11780 Mon Sep 17 00:00:00 2001 From: Brunoz78 Date: Sat, 3 Oct 2026 17:10:01 +0200 Subject: [PATCH] machine: add keepLink KP-9000-9XHML-X V3.2 (2M-PCB23-V3.2) The V3.2 board has the same component placement as V3.1 and works with its machine definition: RJ45 links at 2.5G, LEDs, SFP detection with DOM readings at 10G, factory MAC at 0x1FC000 and the reset button. The new target only reports "V3.2" as the machine name. Installed from the original firmware V100.9.25 through its web interface with the OEM installer image. Reading the flash in-circuit with a SOIC-8 clip gave the chip ID EF FF FF, as on a V3.1 board. Co-Authored-By: Claude Opus 5.5 --- doc/devices/2M-PCB23-V3_2.md | 36 ++++++++++++++++++++++++++++++++++++ doc/supported_devices.md | 1 + machine.c | 7 ++++++- machine.h | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 doc/devices/2M-PCB23-V3_2.md 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