diff --git a/doc/devices/ONT-S207CW-62TS-SE.md b/doc/devices/ONT-S207CW-62TS-SE.md index 8cc48a89..cf09d088 100644 --- a/doc/devices/ONT-S207CW-62TS-SE.md +++ b/doc/devices/ONT-S207CW-62TS-SE.md @@ -1,24 +1,18 @@ -# ONT-S207CW-62TS-SE +# ONT-S207CW-62TS-SE / Binardat 2G06-04210GSM ## Overview -ONT-S207CW-62TS-SE is a managed switch with **4x 2.5G RJ45 ports** and **2x 10G SFP+ ports**. -**Note:** This device is **identical in hardware** to PCB-SWTG024AS-A-2.0.1. The only difference is the brand label. +ONT-S207CW-62TS-SE and Binardat 2G06-04210GSM are **managed switches with identical hardware**: +- **CPU:** RTL8372N (confirmed via serial: "Detecting CPU: RTL8372N") +- **Flash:** GD25Q128E (16MB) +- **Ports:** 4x 2.5G RJ45 + 2x 10G SFP+ +- **Console:** 115200 baud (RTLPlayground firmware) / 9600 baud (stock firmware) -## Compatible Devices +**Note:** These devices use **PCB-SWTG024AS-A-2.0.1** but with different port mapping and LED configuration than the stock PCB-SWTG024AS-A-2.0.1 firmware. Therefore, they require their own machine definition (`MACHINE_ONT_S207CW_62TS_SE`). -The following devices use the **same PCB-SWTG024AS-A-2.0.1 hardware** and are fully compatible with the same firmware configuration: +## Device Photos -| Brand | Model | Notes | -|---|---|---| -| ONT | ONT-S207CW-62TS-SE | Original device | -| Binardat | 2G06-04210GSM | Identical hardware, same firmware | -| Mokerlink | KP-9000-6XH-X2 / KP-9000-6XHML-X2 | See [2M-PCB43-V1.1/V2.1](2M-PCB43-V1.1.md) | -| Horaco | ZX-SWTG124AS | See [SWTG024AS-A-V2.0.1_4C_2SFP](SWTG024AS-A-V2.0.1_4C_2SFP.md) | - -All these devices can use **MACHINE_PCB_SWTG024AS_A_2_0_1** with the LED configuration from this document. - -### Binardat 2G06-04210GSM Photos +### Binardat 2G06-04210GSM **Front View:** @@ -29,18 +23,19 @@ All these devices can use **MACHINE_PCB_SWTG024AS_A_2_0_1** with the LED configu **PCB View:** -*Note: Photos courtesy of [andreas5232](https://github.com/andreas5232) from [emesix/ONT-S207CW-62TS-SE#1](https://github.com/emesix/ONT-S207CW-62TS-SE/issues/1)* +*Photos courtesy of [andreas5232](https://github.com/andreas5232) from [emesix/ONT-S207CW-62TS-SE#1](https://github.com/emesix/ONT-S207CW-62TS-SE/issues/1)* ## Hardware Specification | Feature | Value | |---|---| -| **CPU** | RTL8372N (detected via serial: "Detecting CPU: RTL8372N") | +| **CPU** | RTL8372N | | **Flash** | GD25Q128E (16MB) | +| **RAM** | Integrated in RTL8372N | | **RJ45 Ports** | 4x 2.5GBase-T (Ports 1-4) | | **SFP+ Ports** | 2x 10G (Ports 5-6) | -| **Console** | 115200 baud (RTLPlayground firmware) / 9600 baud (stock firmware) | -| **Web UI IP** | 192.168.2.1 | +| **Console** | UART (115200 baud for RTLPlayground, 9600 baud for stock) | +| **Stock Web UI IP** | 192.168.2.1 | | **Loader Mode IP** | 192.168.10.247 | ## Port Layout @@ -56,152 +51,269 @@ All these devices can use **MACHINE_PCB_SWTG024AS_A_2_0_1** with the LED configu └─────────────────────────────────────────────┘ ``` -## LED Behavior (RTLPlayground v10+) +## LED Behavior -### RJ45 Ports (1-4) -| LED Color | Speed | -|---|---| -| **Green** | 2.5G | -| **Orange** | 1G / 100M / 10M | -| **Off** | No link | +### RJ45 Ports (Physical 1-4, Logical 0-3) -### SFP+ Ports (5-6) -| LED Color | Speed | -|---|---| -| **Green** | 10G | -| **Orange** | 2.5G / 1G | -| **Off** | No link / No SFP module | +| LED Color | Speed | Physical LED Position | +|---|---|---| +| **Green** | 2.5G | Right LED | +| **Orange** | 1G / 100M / 10M | Left LED | +| **Off** | No link | - | + +### SFP+ Ports (Physical 5-6, Logical 4-5) + +| LED Color | Speed | Physical LED Position | +|---|---|---| +| **Green** | 10G | Right LED | +| **Orange** | 2.5G / 1G | Left LED | +| **Off** | No link / No SFP module | - | ## RTLPlayground Configuration ### machine.h + ```c -#define MACHINE_PCB_SWTG024AS_A_2_0_1 +// #define MACHINE_PCB_SWTG024AS_A_2_0_1 // Different port/LED mapping +#define MACHINE_ONT_S207CW_62TS_SE +// ONT-S207CW-62TS-SE and Binardat 2G06-04210GSM +// RTL8372N, 4x2.5G RJ45 + 2x10G SFP+, GD25Q128E (16MB) +// Physical ports: 1-4 = RJ45, 5-6 = SFP +// Logical ports: 0-3 = RJ45 (phys 1-4), 4-5 = SFP (phys 5-6) +// LED colors: RJ45 = Green@2.5G, Orange@1G/100M/10M; SFP = Green@10G, Orange@1G/2.5G +// LED mux: Original firmware values (0x08144040, 0x1037f309, ...) ``` -### machine.c (relevant section for PCB_SWTG024AS_A_2_0_1) +### machine.c Configuration + ```c +#elif defined MACHINE_ONT_S207CW_62TS_SE __code const struct machine machine = { - .machine_name = "PCB-SWTG024AS-A-2.0.1", + .machine_name = "ONT-S207CW-62TS-SE / Binardat 2G06-04210GSM", .isRTL8373 = 0, // RTL8372N - .mac_flash_offset = 0x1FC000, - .min_port = 3, - .max_port = 8, + .mac_flash_offset = 0x1FC000, // MAC address storage offset + .min_port = 0, // First logical port + .max_port = 5, // Last logical port (0-5 = 6 ports) .n_sfp = 2, - .log_to_phys_port = {0, 0, 0, 5, 1, 2, 3, 4, 6}, - .phys_to_log_port = {4, 5, 6, 7, 3, 8, 0, 0, 0}, - .is_sfp = {0, 0, 0, 1, 0, 0, 0, 0, 2}, - - // SFP port on SDS0 / logical port 3 + // Physical to logical port mapping: + // Physical port 1 -> Logical port 0 (RJ45) + // Physical port 2 -> Logical port 1 (RJ45) + // Physical port 3 -> Logical port 2 (RJ45) + // Physical port 4 -> Logical port 3 (RJ45) + // Physical port 5 -> Logical port 4 (SFP on SDS0) + // Physical port 6 -> Logical port 5 (SFP on SDS1) + .log_to_phys_port = {1, 2, 3, 4, 5, 6, 0, 0, 0}, + .phys_to_log_port = {0, 1, 2, 3, 4, 5, 0, 0, 0}, + .is_sfp = {0, 0, 0, 0, 1, 1, 0, 0, 0}, // Logical ports 4,5 are SFP + + // SFP port on SDS0 / logical port 4 / physical port 5 .sfp_port[0].pin_detect = GPIO37, .sfp_port[0].pin_los = GPIO_NA, .sfp_port[0].pin_tx_disable = GPIO_NA, .sfp_port[0].sds = 0, .sfp_port[0].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 }, - - // SFP port on SDS1 / logical port 8 + + // SFP port on SDS1 / logical port 5 / physical port 6 .sfp_port[1].pin_detect = GPIO38, .sfp_port[1].pin_los = GPIO_NA, .sfp_port[1].pin_tx_disable = GPIO_NA, .sfp_port[1].sds = 1, .sfp_port[1].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 }, - + .reset_pin = GPIO_NA, .high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 }, - .port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1 }, + .port_led_set = { 0, 0, 0, 0, 1, 1, 0, 0, 0 }, // RJ45=SET0, SFP=SET1 + + /* LED Configuration from original firmware: + * RJ45 ports (logical 0-3, physical 1-4): SET0 + * LED0 (Green): 2.5G Link+Activity + * LED1 (Orange): 1G/100M/10M Link+Activity + * SFP+ ports (logical 4-5, physical 5-6): SET1 + * LED0 (Green): 10G Link+Activity + * LED1 (Orange): 1G/2.5G Link+Activity + */ .led_sets = { - { // SET0: RJ45 - Green for 2.5G, Orange for 1G/100M/10M - LEDS_2G5 | LEDS_LINK | LEDS_ACT, - LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, - 0, - 0 - }, - { // SET1: SFP+ - Green for 10G, Orange for 1G/2.5G - LEDS_10G | LEDS_LINK | LEDS_ACT, - LEDS_2G5 | LEDS_1G | LEDS_LINK | LEDS_ACT, - 0, - 0 - }, + { // SET0: RJ45 Ports + LEDS_2G5 | LEDS_LINK | LEDS_ACT, // Green: 2.5G + LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, // Orange: 1G/100M/10M + 0, + 0 }, + { // SET1: SFP+ Ports + LEDS_10G | LEDS_LINK | LEDS_ACT, // Green: 10G + LEDS_2G5 | LEDS_1G | LEDS_LINK | LEDS_ACT, // Orange: 1G/2.5G + 0, + 0 }, }, .led_mux_custom = 1, - .led_mux = { - 0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x3f,0x0d,0x10,0x11,0x0e, - 0x14,0x11,0x12,0x15,0x15,0x16,0x18,0x19,0x1a,0x19,0x1d,0x1e, - 0x1c,0x1d,0x20,0x21 - }, + // LED mux configuration extracted from original firmware + // Corresponds to register values: + // RTL837X_REG_LED_GLB_MUX_1: 0x08144040 + // RTL837X_REG_LED_GLB_MUX_2: 0x1037f309 + // RTL837X_REG_LED_GLB_MUX_3: 0x12454391 + // RTL837X_REG_LED_GLB_MUX_4: 0x19616555 + // RTL837X_REG_LED_GLB_MUX_5: 0x1c79d65a + // RTL837X_REG_LED_GLB_MUX_6: 0x0002181d + .led_mux = { 0x08, 0x14, 0x40, 0x40, 0x10, 0x37, 0xf3, 0x09, + 0x12, 0x45, 0x43, 0x91, 0x19, 0x61, 0x65, 0x55, + 0x1c, 0x79, 0xd6, 0x5a, 0x00, 0x02, 0x18, 0x1d, + 0x00, 0x00, 0x00, 0x00 }, }; ``` ## Port to Logical Mapping -| Physical Port | Logical Port | Type | LED Set | Web UI Port | +| Physical Port | Logical Port | Type | LED Set | Web UI Display | |---|---|---|---|---| -| 1 | 4 | RJ45 | 0 | 1 | -| 2 | 5 | RJ45 | 0 | 2 | -| 3 | 6 | RJ45 | 0 | 3 | -| 4 | 7 | RJ45 | 0 | 4 | -| 5 | 3 | SFP+ | 1 | 5 | -| 6 | 8 | SFP+ | 1 | 6 | +| 1 | 0 | RJ45 | 0 | Port 1 | +| 2 | 1 | RJ45 | 0 | Port 2 | +| 3 | 2 | RJ45 | 0 | Port 3 | +| 4 | 3 | RJ45 | 0 | Port 4 | +| 5 | 4 | SFP+ (SDS0) | 1 | Port 5 | +| 6 | 5 | SFP+ (SDS1) | 1 | Port 6 | -## Firmware History - -| Version | Date | Changes | Status | -|---|---|---|---| -| v3 | 2026-09-14 | Original PCB_SWTG024AS_A_2_0_1 config | ✅ All ports working, LEDs wrong | -| v10 | 2026-09-17 | LED colors corrected for RJ45 and SFP+ | ✅ All ports + LEDs working | +**Important:** The web UI will show ports in the correct physical order (1-4 RJ45, 5-6 SFP) because the logical-to-physical mapping preserves the order. ## Firmware Files -| File | Purpose | -|---|---| -| `rtlplayground-ONT_S207CW-v10.bin` | Direct flash via CH341A | -| `rtlplayground_oem_upgrade-ONT_S207CW-v10.bin` | OEM upgrade via web UI | +| File | Size | Purpose | +|---|---|---| +| `rtlplayground-ONT_S207CW_62TS_SE-v11.bin` | 524288 bytes | Direct flash via CH341A/SPI programmer | +| `rtlplayground_oem_upgrade-ONT_S207CW_62TS_SE-v11.bin` | 540710 bytes | OEM upgrade via web UI (Loader Mode) | + +### Firmware Size Check +- **Flash chip:** GD25Q128E = 16MB = 16777216 bytes +- **Firmware size:** ~512KB-528KB +- **Status:** ✅ **Plenty of space available** - No size issues with either old or new web UI ## Flashing Instructions -### Via Loader Mode (CH341A) +### Prerequisites +- **GD25Q128E** flash chip (16MB) +- **CH341A** SPI programmer (recommended) +- **flashrom** tool (Linux) or **Flashrom GUI** (Windows) + +### Via CH341A (Direct Flash) + +**Linux (flashrom):** ```bash -flashrom -p ch341a_spi -c "GD25Q128E" -w rtlplayground-ONT_S207CW-v10.bin +# Install flashrom first +sudo apt install flashrom + +# Flash the firmware (may need sudo) +flashrom -p ch341a_spi -c "GD25Q128E/GD25B128E/GD25R128E/GD25Q127C" -w rtlplayground-ONT_S207CW_62TS_SE-v11.bin --noverify-all ``` -### Via Web UI -1. Access the web interface at `http://192.168.2.1` -2. Navigate to **Firmware Update** (under System tab) -3. Upload `rtlplayground_oem_upgrade-ONT_S207CW-v10.bin` -4. Wait for flash completion and automatic reboot +**Alternative command (if above fails):** +```bash +flashrom -p ch341a_spi -c "GD25Q128E" -w rtlplayground-ONT_S207CW_62TS_SE-v11.bin +``` + +### Via Loader Mode (Web UI Upgrade) + +The OEM upgrade file can be flashed via the device's loader mode: + +1. **Enter Loader Mode:** + - Power off the switch + - Hold the reset button + - Power on while holding reset + - Release after ~5 seconds + - Switch should be accessible at `192.168.10.247` + +2. **Upload via HTTP:** + ```bash + curl -T rtlplayground_oem_upgrade-ONT_S207CW_62TS_SE-v11.bin http://192.168.10.247/firmware + ``` + +3. **Or via Web Browser:** + - Access `http://192.168.10.247` + - Use the firmware update function + - Upload `rtlplayground_oem_upgrade-ONT_S207CW_62TS_SE-v11.bin` + - Wait for completion and reboot + +### Via RTLPlayground Web UI (After First Flash) + +Once RTLPlayground firmware is running: +1. Access web interface at `http://192.168.2.1` +2. Navigate to **System > Firmware Update** +3. Upload the `.bin` file +4. Wait for flash completion and reboot ## Recovery If flashing fails and the switch does not boot: -1. **Loader Mode Recovery:** - - Hold reset button while powering on - - Switch should be accessible at `192.168.10.247` - - Flash via `curl -T firmware.bin http://192.168.10.247/firmware` +### Method 1: Loader Mode Recovery +- The loader mode always remains accessible +- Switch boots to `192.168.10.247` when in loader mode +- Flash via: `curl -T firmware.bin http://192.168.10.247/firmware` -2. **Serial Recovery:** - - Connect via UART (115200 baud for RTLPlayground, 9600 for stock) - - Use CH341A: `flashrom -p ch341a_spi -c "GD25Q128E" -w firmware.bin` +### Method 2: Serial Recovery (if loader mode fails) +- Connect UART: 115200 baud, 8N1 +- Use CH341A to flash directly: + ```bash + flashrom -p ch341a_spi -c "GD25Q128E" -w firmware.bin + ``` + +### Method 3: SOIC8 Clip +- Connect SOIC8 clip to CH341A +- Use flashrom as above +- Chip: GD25Q128E (16MB) ## Stock Firmware Information -- **Default IP:** 192.168.10.247 -- **Default Login:** admin/admin (varies by OEM) -- **Console Baud:** 9600 -- **CPU:** RTL8372N +| Property | Value | +|---|---| +| **Default IP** | 192.168.2.1 (ONT) / 192.168.10.247 (Loader Mode) | +| **Default Login** | admin/admin (may vary by OEM) | +| **Console Baud** | 9600 (stock) / 115200 (RTLPlayground) | +| **CPU String** | "RTL8372N" | +| **Loader Mode IP** | 192.168.10.247 | ## Known Issues & Fixes -### Issue: LEDs showing wrong colors -**Symptom:** RJ45 ports show green at all speeds, SFP LEDs don't light up -**Fix:** Use v10 firmware with corrected LED sets and LED mux configuration +### ✅ Issue: LEDs showing wrong colors (FIXED in v11) +**Symptom:** All RJ45 ports show green at all speeds, SFP LEDs incorrect +**Root Cause:** Wrong LED mux configuration and LED set assignments +**Fix:** Use v11 firmware with: +- Original firmware LED mux values (extracted from stock firmware) +- Correct LED set to physical port mapping +- Proper LED color logic (Green=2.5G/10G, Orange=1G/2.5G/100M/10M) -### Issue: No network connectivity after flash +### ✅ Issue: Port order reversed in web UI (FIXED in v11) +**Symptom:** Web UI shows ports as 4321 instead of 1234 +**Root Cause:** Incorrect log_to_phys_port and phys_to_log_port mapping +**Fix:** Corrected mapping to preserve physical port order + +### ✅ Issue: No network connectivity after flash (FIXED) **Symptom:** Switch boots but no ping response -**Fix:** Ensure `.isRTL8373 = 0` (RTL8372N) is set - this device uses RTL8372N, not RTL8373 +**Root Cause:** Wrong CPU type configuration +**Fix:** Ensure `.isRTL8373 = 0` (this is RTL8372N, not RTL8373) + +### ✅ Issue: SFP modules not detected (FIXED) +**Symptom:** SFP ports not working +**Root Cause:** Wrong SFP port SDS assignments +**Fix:** Correct SDS0/SDS1 assignments and GPIO pins + +## Version History + +| Version | Date | Changes | Status | +|---|---|---|---| +| v3 | 2026-09-14 | Initial PCB_SWTG024AS_A_2_0_1 config | ❌ Port order wrong, LEDs wrong | +| v10 | 2026-09-17 | LED colors corrected | ⚠️ LEDs better, port order still wrong | +| v11 | 2026-09-18 | **Separate machine def, correct port mapping, original LED mux** | ✅ All working | ## Notes -- This device shares the exact same PCB as PCB-SWTG024AS-A-2.0.1 -- The hardware detection string is "PCB-SWTG024AS-A-2.0.1" -- Port numbering in the web UI may appear reversed (4321 instead of 1234) due to the port mapping, but physical ports 1-4 are RJ45 and 5-6 are SFP+ +- This device shares PCB-SWTG024AS-A-2.0.1 hardware but requires **different port mapping and LED configuration** than the stock PCB-SWTG024AS-A-2.0.1 definition +- **Binardat 2G06-04210GSM is 100% hardware compatible** with ONT-S207CW-62TS-SE +- Port numbering in web UI now matches physical port order (1-4 RJ45, 5-6 SFP) +- LED colors now match the labels on the device enclosure: + - Green = 2.5G (RJ45) / 10G (SFP) + - Orange = 1G/100M/10M (RJ45) / 1G/2.5G (SFP) +- The **Loader Mode** always remains accessible at 192.168.10.247 for recovery +- Serial console baud rate changes from 9600 (stock) to 115200 (RTLPlayground) + +## References + +- [GitHub Issue: emesix/ONT-S207CW-62TS-SE#1](https://github.com/emesix/ONT-S207CW-62TS-SE/issues/1) - Original photos and discussion +- [PR: logicog/RTLPlayground#465](https://github.com/logicog/RTLPlayground/pull/465) - Feedback and improvements diff --git a/doc/devices/SWTG024AS.md b/doc/devices/SWTG024AS.md index 05e89ee3..6da9c5ce 100644 --- a/doc/devices/SWTG024AS.md +++ b/doc/devices/SWTG024AS.md @@ -1,5 +1,4 @@ -# SWTG024AS - +### SWTG024AS SWTG024AS has at least 4 variants that look the same. Variants are `managed` and a `unmanaged` version. @@ -9,224 +8,16 @@ Also the RJ45 connectors can be all plastic/non-shielded or with metal shielding ## Brands |Brand|Type|Managed|PCB|PCB Label|Flash|Chip RTL| |---|---|---|---|---|---|---| -| Binardat | 2G06-04210GSM | No | PCB-SWTG024AS-A-2.0.1 | --- | 16MB | RTL8372N | -| Horaco | ZX-SWTG124AS | Yes | SWTG024AS-v2.0 | ??? | ??? | 8272 | -| LIANGUO | SWTG024AS | No | SWTG024AS-v2.0-17452 | CM-23-11-2336 023-17453 | 512 KiB | 8272 | -| ONT | ONT-S207CW-62TS-SE | No | PCB-SWTG024AS-A-2.0.1 | --- | 16MB | RTL8372N | +| LIANGUO |SWTG024AS |No| SWTG024AS-v2.0-17452 | CM-23-11-2336 023-17453| 512 KiB | 8272 | +| Horaco |ZX-SWTG124AS | Yes | SWTG024AS-v2.0 | ??? | ??? | 8272 | +| Xikestore |SKS3200M-4GPY2XF | Yes | SWTG024AS-v1.0 | CM-23-08-2043 023-16721 | 2048 KiB | 8272 | | Sodola | SL-SWTG124AS-D | Yes | SWTG024AS-v2.0-17452 | ??? | 2048 KiB | 8272 | -| Xikestore | SKS3200M-4GPY2XF | Yes | SWTG024AS-v1.0 | CM-23-08-2043 023-16721 | 2048 KiB | 8272 | ## PCB -## PCB-SWTG024AS-A-2.0.1 Variant - -**Note:** ONT-S207CW-62TS-SE and Binardat 2G06-04210GSM are **identical in hardware** to this PCB variant. The only difference is the brand label. - -### Compatible Devices - -The following devices use the **same PCB-SWTG024AS-A-2.0.1 hardware** and are fully compatible with the same firmware configuration: - -| Brand | Model | Notes | -|---|---|---| -| ONT | ONT-S207CW-62TS-SE | Original device | -| Binardat | 2G06-04210GSM | Identical hardware, same firmware | - -All these devices can use **MACHINE_PCB_SWTG024AS_A_2_0_1** with the LED configuration from this document. - -### Photos (Binardat 2G06-04210GSM) - -**Front View:** - - -**Back View:** - - -**PCB View:** - - -*Photos courtesy of [andreas5232](https://github.com/andreas5232) from [emesix/ONT-S207CW-62TS-SE#1](https://github.com/emesix/ONT-S207CW-62TS-SE/issues/1)* - -### Hardware Specification - -| Feature | Value | -|---|---| -| **CPU** | RTL8372N (detected via serial: "Detecting CPU: RTL8372N") | -| **Flash** | GD25Q128E (16MB) | -| **RAM** | Integrated in RTL8372N | -| **RJ45 Ports** | 4x 2.5GBase-T (Ports 1-4) | -| **SFP+ Ports** | 2x 10G (Ports 5-6) | -| **Console** | 115200 baud (RTLPlayground firmware) / 9600 baud (stock firmware) | -| **Web UI IP** | 192.168.2.1 | -| **Loader Mode IP** | 192.168.10.247 | - -### Port Layout - -``` -┌─────────────────────────────────────────────┐ -│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ -│ │RJ45 │ │RJ45 │ │RJ45 │ │RJ45 │ │SFP+ │ │SFP+ │ │ -│ │ 1 │ │ 2 │ │ 3 │ │ 4 │ │ 5 │ │ 6 │ │ -│ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ │ -│ │ -│ [System LEDs] │ -└─────────────────────────────────────────────┘ -``` - -### Port Mapping - -Physical front panel (left to right): -- Ports 1-4: RJ45 2.5GBase-T -- Ports 5-6: SFP+ 10G (Port 5 = left/J4/SFP1, Port 6 = right/J2/SFP2) - -RTLPlayground logical mapping: -- Logical port 3 → Physical SFP1 (J4, left) -- Logical port 8 → Physical SFP2 (J2, right) -- Logical ports 4-7 → Physical RJ45 ports 1-4 - -| Physical Port | Logical Port | Type | LED Set | Web UI Port | -|---|---|---|---|---| -| 1 | 4 | RJ45 | 0 | 1 | -| 2 | 5 | RJ45 | 0 | 2 | -| 3 | 6 | RJ45 | 0 | 3 | -| 4 | 7 | RJ45 | 0 | 4 | -| 5 | 3 | SFP+ | 1 | 5 | -| 6 | 8 | SFP+ | 1 | 6 | - -### LED Behavior (RTLPlayground v10+) - -#### RJ45 Ports (1-4) -| LED Color | Speed | -|---|---| -| **Green** | 2.5G | -| **Orange** | 1G / 100M / 10M | -| **Off** | No link | - -#### SFP+ Ports (5-6) -| LED Color | Speed | -|---|---| -| **Green** | 10G | -| **Orange** | 2.5G / 1G | -| **Off** | No link / No SFP module | - -### RTLPlayground Configuration - -**machine.h:** -```c -#define MACHINE_PCB_SWTG024AS_A_2_0_1 -``` - -**machine.c configuration:** -```c -__code const struct machine machine = { - .machine_name = "PCB-SWTG024AS-A-2.0.1", - .isRTL8373 = 0, // RTL8372N - .mac_flash_offset = 0x1FC000, - .min_port = 3, - .max_port = 8, - .n_sfp = 2, - .log_to_phys_port = {0, 0, 0, 5, 1, 2, 3, 4, 6}, - .phys_to_log_port = {4, 5, 6, 7, 3, 8, 0, 0, 0}, - .is_sfp = {0, 0, 0, 1, 0, 0, 0, 0, 2}, - - // SFP port on SDS0 / logical port 3 - .sfp_port[0].pin_detect = GPIO37, - .sfp_port[0].pin_los = GPIO_NA, - .sfp_port[0].pin_tx_disable = GPIO_NA, - .sfp_port[0].sds = 0, - .sfp_port[0].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 }, - - // SFP port on SDS1 / logical port 8 - .sfp_port[1].pin_detect = GPIO38, - .sfp_port[1].pin_los = GPIO_NA, - .sfp_port[1].pin_tx_disable = GPIO_NA, - .sfp_port[1].sds = 1, - .sfp_port[1].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 }, - - .reset_pin = GPIO_NA, - .high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 }, - .port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1 }, - .led_sets = { - { // SET0: RJ45 - Green for 2.5G, Orange for 1G/100M/10M - LEDS_2G5 | LEDS_LINK | LEDS_ACT, - LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, - 0, - 0 - }, - { // SET1: SFP+ - Green for 10G, Orange for 1G/2.5G - LEDS_10G | LEDS_LINK | LEDS_ACT, - LEDS_2G5 | LEDS_1G | LEDS_LINK | LEDS_ACT, - 0, - 0 - }, - }, - .led_mux_custom = 1, - .led_mux = { - 0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x3f,0x0d,0x10,0x11,0x0e, - 0x14,0x11,0x12,0x15,0x15,0x16,0x18,0x19,0x1a,0x19,0x1d,0x1e, - 0x1c,0x1d,0x20,0x21 - }, -}; -``` - -### Firmware History - -| Version | Date | Changes | Status | -|---|---|---|---| -| v3 | 2026-09-14 | Original PCB_SWTG024AS_A_2_0_1 config | All ports working, LEDs wrong | -| v10 | 2026-09-17 | LED colors corrected for RJ45 and SFP+ | All ports + LEDs working | - -### Known Issues & Fixes - -#### Issue: LEDs showing wrong colors -**Symptom:** RJ45 ports show green at all speeds, SFP LEDs don't light up -**Fix:** Use v10 firmware with corrected LED sets and LED mux configuration - -#### Issue: No network connectivity after flash -**Symptom:** Switch boots but no ping response -**Fix:** Ensure `.isRTL8373 = 0` (RTL8372N) is set - this device uses RTL8372N, not RTL8373 - -### Flashing Instructions - -#### Via Loader Mode (CH341A) -```bash -flashrom -p ch341a_spi -c "GD25Q128E" -w rtlplayground-PCB_SWTG024AS_A_2_0_1.bin -``` - -#### Via Web UI -1. Access the web interface at `http://192.168.2.1` -2. Navigate to **Firmware Update** (under System tab) -3. Upload `rtlplayground_oem_upgrade-PCB_SWTG024AS_A_2_0_1.bin` -4. Wait for flash completion and automatic reboot - -### Recovery - -If flashing fails and the switch does not boot: - -1. **Loader Mode Recovery:** - - Hold reset button while powering on - - Switch should be accessible at `192.168.10.247` - - Flash via `curl -T firmware.bin http://192.168.10.247/firmware` - -2. **Serial Recovery:** - - Connect via UART (115200 baud for RTLPlayground, 9600 for stock) - - Use CH341A: `flashrom -p ch341a_spi -c "GD25Q128E" -w firmware.bin` - -### Stock Firmware Information - -- **Default IP:** 192.168.10.247 -- **Default Login:** admin/admin (varies by OEM) -- **Console Baud:** 9600 -- **CPU:** RTL8372N -- **Hardware detection string:** "PCB-SWTG024AS-A-2.0.1" - -**Note:** This variant uses the same PCB as described above but may have different component population. - ---- - -# SWTG024AS-v2.0 managed vs unmanaged - +# SWTG024AS-v2.0 managed vs unmanged Changes I found with my board vs [Managed version](https://github.com/up-n-atom/SWTG118AS/tree/main/photos/SWGT024AS-v2.0) of the PCB. ### Bottom @@ -236,7 +27,7 @@ Changes I found with my board vs [Managed version](https://github.com/up-n-atom/ * LED3: Not installed (System Led) ### Top * K1: Not installed (Reset Button) -* R95: Installed (SFP2 (J2) signal RX-LOS), means that the managed-version can't use the RX-LOS function. +* R95: Installed (SFP2 (J2) signal RX-LOS), means that the managed-version can´t use the RX-LOS function. * R270: Installed (SFP1 (J4) signal RX-LOS), same here as above. * R268: Installed (SFP2 (J2) signal TX-DISABLE, but R262 200R pull-down is to high to drive by the SOC, needs mod!) * U5: Flash is only 512 KiB instead of 2/4 MiB. @@ -269,14 +60,14 @@ Changes I found with my board vs [Managed version](https://github.com/up-n-atom/ |`J4` SFP1 PINs | Signal | Component | GPIO | Notes | |---|---|---|---|---| -|2| TX_FAULT | B-R262 | --- | | -|3| TX_DISABLE | B-R263, T-R268 | GPIO38 | R262 = Pull-down 200R| -|4| MODDEF2 – SDA | B-R261, T-R266 | GPIO39 | | -|5| MODDEF1 – SCL | B-R260, T-R267 | GPIO40 | Shared with both SFP | -|6| MODDEF0 – PRESENT | B-R259, T-R296 | GPIO30 | | -|7| RATE SEL | B-R257 | --- | | -|8| LOS | B-R258, T-R270 | GPIO37 | | -|9| TO? | B-R256 | --- | | +|2| TX_FAULT | B-R262 | --- | | +|3| TX_DISABLE | B-R263, T-R268 | GPIO38 | R262 = Pull-down 200R| +|4| MODDEF2 – SDA | B-R261, T-R266 | GPIO39 | | +|5| MODDEF1 – SCL | B-R260, T-R267 | GPIO40 | Shared with both SFP | +|6| MODDEF0 – PRESENT | B-R259, T-R296 | GPIO30 | | +|7| RATE SEL | B-R257 | --- | | +|8| LOS | B-R258, T-R270 | GPIO37 | | +|9| TO? | B-R256 | --- | | ## J2 @@ -285,14 +76,14 @@ Changes I found with my board vs [Managed version](https://github.com/up-n-atom/ |`J2` SFP2 PINs | Signal | Component | GPIO | Notes | |---|---|---|---|---| -|2| TX_FAULT | B-R70 | --- | | -|3| TX_DISABLE | B-R10, B-R105-R, T-R88-L | GPIO54 | R10 = Pull-down 200R | -|4| MODDEF2 – SDA | B-R26, T-R85 | GPIO41 | | -|5| MODDEF1 – SCL | B-R15, T-R87 | GPIO40 | Shared with both SFP | -|6| MODDEF0 – PRESENT | B-R14, T-R89 | GPIO50 | | -|7| RATE SEL | B-R12 | --- | | -|8| LOS | B-R13, T-R95 | GPIO51 | | -|9| TO? | B-R11 | --- | | +|2| TX_FAULT | B-R70 | --- | | +|3| TX_DISABLE | B-R10, B-R105-R, T-R88-L | GPIO54 | R10 = Pull-down 200R | +|4| MODDEF2 – SDA | B-R26, T-R85 | GPIO41 | | +|5| MODDEF1 – SCL | B-R15, T-R87 | GPIO40 | Shared with both SFP | +|6| MODDEF0 – PRESENT | B-R14, T-R89 | GPIO50 | | +|7| RATE SEL | B-R12 | --- | | +|8| LOS | B-R13, T-R95 | GPIO51 | | +|9| TO? | B-R11 | --- | | Note: component numbering `--` * L: Layer, T=Top, B=Bottom @@ -317,7 +108,7 @@ The Slave Interface allows an extenal host to controll the SOC even if the inter Depending on the `IF_SEL` bootstrap resistors, this can me `I2C`, `SPI` or `SMI`. On this device it is `I2C` on address `0b1011100` or `0x5c` (7-bit notation). -* I2c Read: must be a write_read opperation `` ``. +* I2c Read: must be a write_read opperation `` ``. * I2c Write: ``. Example register `0x0004` return chip id `0x00, 0x00, 0x72, 0x83` = `0x83720000`. @@ -335,9 +126,9 @@ Note: 1 pin is square shaped. |`T8` pin|what|Signal| |---|---|---| | 1 | GPIO46 | | -| 2 | GND | | +| 2 | GND | | | 3 | GPIO48 | | -| 4 | 3V3 | | +| 4 | 3V3 | | | 5 | GPIO47 | | | 6 | GPIO49 | | Note: 1 pin is square shaped. @@ -345,47 +136,47 @@ Note: 1 pin is square shaped. # Reset ciruit | Cmp | Function | |---|---| -| T-R78 | 33k PullUp | -| T-D3 | Discharge Diode | -| T-C187 | RC-Delay | +| T-R78 | 33k PullUp | +| T-D3 | Discharge Diode | +| T-C187 | RC-Delay | Reset-line found at `T-D3-D` active-low. # GPIO -| HEX VAL. | GPIO | Component | What | | GPIO | Component | What | -| -------- | ------ | ---- | ---- | ---- | ---- | ---- | ---- | -| 00000001 | GPIO00 | T-C151-T, T-R28-T, T-R29-T |? | | GPIO32 | T-R143-R | U0RXD | -| 00000002 | GPIO01 | T-C152-T |? | | GPIO33 | | | -| 00000004 | GPIO02 | T-C153-T |? | | GPIO34 | | | -| 00000008 | GPIO03 | T-R33-T |? | | GPIO35 | | | -| 00000010 | GPIO04 | B-C155 |? | | GPIO36 | T-R88-L, T-R84-B | Optional SFP2 TX-DISABLE[^2], Reset | -| 00000020 | GPIO05 | B-C156 |? | | GPIO37 | SFP1-8, T-R270 | SFP-LOS | -| 00000040 | GPIO06 | T-C157-T |? | | GPIO38 | SFP1-3, T-R268 | SFP1 TX-DISABLE[^2] | -| 00000080 | GPIO07 | T-C158-T, R165 |? | | GPIO39 | SFP1-4, T-R266 | I2C-SDA4 | -| 00000100 | GPIO08 | | | | GPIO40 | SFP2-5, T-R87; SFP1-5, T-R267; | I2C-SCL | -| 00000200 | GPIO09 | SFP2-LED, T-R36-T |LED-SFP2 | | GPIO41 | SFP2-4, T-R85 | I2C-SDA | -| 00000400 | GPIO10 | | | | GPIO42 | U8-P6, T-R124 | SPI-MEMORY, CLK | -| 00000800 | GPIO11 | |LEDx[^1] | | GPIO43 | U8-P5, T-R127 | SPI-MEMORY, DI,IO0 | -| 00001000 | GPIO12 | |LEDx[^1] | | GPIO44 | U8-P2, T-R128 | SPI-MEMORY, DO,IO1 | -| 00002000 | GPIO13 | PORT1-LED-GREEN |LEDx[^1] | | GPIO45 | U8-P1, T-R123 | SPI-MEMORY, CS | -| 00004000 | GPIO14 | PORT1-LED-YELLOW |LEDx | | GPIO46 | T8-1, T-R188| ? | -| 00008000 | GPIO15 | |LEDx[^1] | | GPIO47 | T8-5, T-R190 | ? | -| 00010000 | GPIO16 | PORT2-LED-GREEN |LEDx[^1] | | GPIO48 | T8-3, T-R189 | ? | -| 00020000 | GPIO17 | PORT2-LED-YELLOW |LEDx | | GPIO49 | T8-6, T-R190 | ? | -| 00040000 | GPIO18 | |LEDx[^1] | | GPIO50 | SFP2-6, T-R89 | SFP-DETECT | -| 00080000 | GPIO19 | PORT3-LED-GREEN |LEDx[^1] | | GPIO51 | SFP2-8, T-R95 | SFP-LOS | -| 00100000 | GPIO20 | PORT3-LED-YELLOW |LEDx | | GPIO52 | | | -| 00200000 | GPIO21 | |LEDx[^1] | | GPIO53 | | | -| 00400000 | GPIO22 | PORT4-LED-GREEN |LEDx[^1] | | GPIO54 | SFP2-3, T-R105-L | SFP2 TX-DISABLE[^2] or via T-R85 to RESET[^3], T-R84-T | -| 00800000 | GPIO23 | PORT4-LED-YELLOW |LEDx | | GPIO55 | T-R78-B | | -| 01000000 | GPIO24 | SFP1-LED-J4, T-R35 |LED-SFP1 | | GPIO56 | | | -| 02000000 | GPIO25 | | | | GPIO57 | | | -| 04000000 | GPIO26 | ? |LEDx | | GPIO58 | | | -| 08000000 | GPIO27 | R44L |? | | GPIO59 | | | -| 10000000 | GPIO28 | LED-SYSTEM, T-R50-R |LED-SYSTEM | | GPIO60 | | | -| 20000000 | GPIO29 | T-R187-R | | | GPIO61 | | | -| 40000000 | GPIO30 | SFP1-6, T-R269 |SFP-DETECT | | GPIO62 | | | -| 80000000 | GPIO31 | T-R144-R |U0TXD| | GPIO63 | | | +| HEX VAL. | GPIO | Component | What | | GPIO | Component | What | +| -------- | ------ | ---- | ---- | ---- | ---- | ---- | ---- | +| 00000001 | GPIO00 | T-C151-T, T-R28-T, T-R29-T |? | | GPIO32 | T-R143-R | U0RXD | +| 00000002 | GPIO01 | T-C152-T |? | | GPIO33 | | | +| 00000004 | GPIO02 | T-C153-T |? | | GPIO34 | | | +| 00000008 | GPIO03 | T-R33-T |? | | GPIO35 | | | +| 00000010 | GPIO04 | B-C155 |? | | GPIO36 | T-R88-L, T-R84-B | Optional SFP2 TX-DISABLE[^2], Reset | +| 00000020 | GPIO05 | B-C156 |? | | GPIO37 | SFP1-8, T-R270 | SFP-LOS | +| 00000040 | GPIO06 | T-C157-T |? | | GPIO38 | SFP1-3, T-R268 | SFP1 TX-DISABLE[^2] | +| 00000080 | GPIO07 | T-C158-T, R165 |? | | GPIO39 | SFP1-4, T-R266 | I2C-SDA4 | +| 00000100 | GPIO08 | | | | GPIO40 | SFP2-5, T-R87; SFP1-5, T-R267; | I2C-SCL | +| 00000200 | GPIO09 | SFP2-LED, T-R36-T |LED-SFP2 | | GPIO41 | SFP2-4, T-R85 | I2C-SDA | +| 00000400 | GPIO10 | | | | GPIO42 | U8-P6, T-R124 | SPI-MEMORY, CLK | +| 00000800 | GPIO11 | |LEDx[^1] | | GPIO43 | U8-P5, T-R127 | SPI-MEMORY, DI,IO0 | +| 00001000 | GPIO12 | |LEDx[^1] | | GPIO44 | U8-P2, T-R128 | SPI-MEMORY, DO,IO1 | +| 00002000 | GPIO13 | PORT1-LED-GREEN |LEDx[^1] | | GPIO45 | U8-P1, T-R123 | SPI-MEMORY, CS | +| 00004000 | GPIO14 | PORT1-LED-YELLOW |LEDx | | GPIO46 | T8-1, T-R188| ? | +| 00008000 | GPIO15 | |LEDx[^1] | | GPIO47 | T8-5, T-R190 | ? | +| 00010000 | GPIO16 | PORT2-LED-GREEN |LEDx[^1] | | GPIO48 | T8-3, T-R189 | ? | +| 00020000 | GPIO17 | PORT2-LED-YELLOW |LEDx | | GPIO49 | T8-6, T-R190 | ? | +| 00040000 | GPIO18 | |LEDx[^1] | | GPIO50 | SFP2-6, T-R89 | SFP-DETECT | +| 00080000 | GPIO19 | PORT3-LED-GREEN |LEDx[^1] | | GPIO51 | SFP2-8, T-R95 | SFP-LOS | +| 00100000 | GPIO20 | PORT3-LED-YELLOW |LEDx | | GPIO52 | | | +| 00200000 | GPIO21 | |LEDx[^1] | | GPIO53 | | | +| 00400000 | GPIO22 | PORT4-LED-GREEN |LEDx[^1] | | GPIO54 | SFP2-3, T-R105-L | SFP2 TX-DISABLE[^2] or via T-R85 to RESET[^3], T-R84-T | +| 00800000 | GPIO23 | PORT4-LED-YELLOW |LEDx | | GPIO55 | T-R78-B | | +| 01000000 | GPIO24 | SFP1-LED-J4, T-R35 |LED-SFP1 | | GPIO56 | | | +| 02000000 | GPIO25 | | | | GPIO57 | | | +| 04000000 | GPIO26 | ? |LEDx | | GPIO58 | | | +| 08000000 | GPIO27 | R44L |? | | GPIO59 | | | +| 10000000 | GPIO28 | LED-SYSTEM, T-R50-R |LED-SYSTEM | | GPIO60 | | | +| 20000000 | GPIO29 | T-R187-R | | | GPIO61 | | | +| 40000000 | GPIO30 | SFP1-6, T-R269 |SFP-DETECT | | GPIO62 | | | +| 80000000 | GPIO31 | T-R144-R |U0TXD| | GPIO63 | | | # LEDs @@ -394,10 +185,10 @@ Reset-line found at `T-D3-D` active-low. | SYSTEM | T-R50-R (PU-4k2), T-R49-L, T-C185-L, B-R90 | GPIO28 | Low | | SFP1 | T-R35-L (PU-3k9), T-R34-L, T-C179-L | GPIO24 | Low | | SFP2 | T-R36-T (PD-4k0) | GPIO09 | High | -| PORT1-LED-YELLOW | | GPIO14 | Low | -| PORT2-LED-YELLOW | | GPIO17 | Low | -| PORT3-LED-YELLOW | | GPIO20 | Low | -| PORT4-LED-YELLOW | | GPIO23 | Low | +| PORT1-LED-YELLOW | | GPIO14 | Low | +| PORT2-LED-YELLOW | | GPIO17 | Low | +| PORT3-LED-YELLOW | | GPIO20 | Low | +| PORT4-LED-YELLOW | | GPIO23 | Low | # Power supply diff --git a/machine.c b/machine.c index 3784ef6d..1b06e60b 100644 --- a/machine.c +++ b/machine.c @@ -864,9 +864,6 @@ __code const struct machine machine = { #elif defined MACHINE_PCB_SWTG024AS_A_2_0_1 -// NOTE: ONT-S207CW-62TS-SE and Binardat 2G06-04210GSM use this same configuration -// Both devices share identical PCB (PCB-SWTG024AS-A-2.0.1) with RTL8372N CPU -// See doc/devices/SWTG024AS.md section "PCB-SWTG024AS-A-2.0.1 Variant" for details __code const struct machine machine = { .machine_name = "PCB-SWTG024AS-A-2.0.1", .isRTL8373 = 0, @@ -894,19 +891,18 @@ __code const struct machine machine = { .reset_pin = GPIO_NA, .high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 }, .port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1}, - // ONT-S207CW LED fix: RJ45=green@2.5G/orange@1G, SFP=green@10G/orange@1G/2.5G .led_sets = { - { // SET0: RJ45 - Green for 2.5G, Orange for 1G/100M/10M + { LEDS_2G5 | LEDS_LINK | LEDS_ACT, LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, - 0, - 0 + LEDS_DUPLEX, + LEDS_2G5 | LEDS_LINK | LEDS_ACT }, - { // SET1: SFP+ - Green for 10G, Orange for 1G/2.5G + { + LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_LINK | LEDS_ACT, LEDS_10G | LEDS_LINK | LEDS_ACT, - LEDS_2G5 | LEDS_1G | LEDS_LINK | LEDS_ACT, - 0, - 0 + LEDS_2G5 | LEDS_LINK, + LEDS_COL | LEDS_DUPLEX }, }, .led_mux_custom = 1, @@ -915,6 +911,69 @@ __code const struct machine machine = { }, }; +#elif defined MACHINE_ONT_S207CW_62TS_SE +// ONT-S207CW-62TS-SE and Binardat 2G06-04210GSM +// RTL8372N, 4x2.5G RJ45 + 2x10G SFP+, GD25Q128E (16MB) +// Physical ports: 1-4 = RJ45, 5-6 = SFP +// Logical ports: 0-3 = RJ45 (phys 1-4), 4-5 = SFP (phys 5-6) +// LED colors: RJ45 = Green@2.5G, Orange@1G/100M/10M; SFP = Green@10G, Orange@1G/2.5G +// LED mux values extracted from original firmware +__code const struct machine machine = { + .machine_name = "ONT-S207CW-62TS-SE / Binardat 2G06-04210GSM", + .isRTL8373 = 0, + .mac_flash_offset = 0x1FC000, + .min_port = 0, + .max_port = 5, + .n_sfp = 2, + .log_to_phys_port = {1, 2, 3, 4, 5, 6, 0, 0, 0}, + .phys_to_log_port = {0, 1, 2, 3, 4, 5, 0, 0, 0}, + .is_sfp = {0, 0, 0, 0, 1, 1, 0, 0, 0}, + + // SFP port on SDS0 / logical port 4 / physical port 5 + .sfp_port[0].pin_detect = GPIO37, + .sfp_port[0].pin_los = GPIO_NA, + .sfp_port[0].pin_tx_disable = GPIO_NA, + .sfp_port[0].sds = 0, + .sfp_port[0].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 }, + + // SFP port on SDS1 / logical port 5 / physical port 6 + .sfp_port[1].pin_detect = GPIO38, + .sfp_port[1].pin_los = GPIO_NA, + .sfp_port[1].pin_tx_disable = GPIO_NA, + .sfp_port[1].sds = 1, + .sfp_port[1].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 }, + + .reset_pin = GPIO_NA, + .high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 }, + .port_led_set = { 0, 0, 0, 0, 1, 1, 0, 0, 0 }, + /* LED Configuration: + * RJ45 ports (0-3, phys 1-4): SET0 + * LED0 (Green): 2.5G Link+Activity + * LED1 (Orange): 1G/100M/10M Link+Activity + * SFP+ ports (4-5, phys 5-6): SET1 + * LED0 (Green): 10G Link+Activity + * LED1 (Orange): 1G/2.5G Link+Activity + */ + .led_sets = { + { // SET0: RJ45 Ports + LEDS_2G5 | LEDS_LINK | LEDS_ACT, // Green: 2.5G + LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, // Orange: 1G/100M/10M + 0, + 0 }, + { // SET1: SFP+ Ports + LEDS_10G | LEDS_LINK | LEDS_ACT, // Green: 10G + LEDS_2G5 | LEDS_1G | LEDS_LINK | LEDS_ACT, // Orange: 1G/2.5G + 0, + 0 }, + }, + .led_mux_custom = 1, + // LED mux configuration from original firmware + .led_mux = { 0x08, 0x14, 0x40, 0x40, 0x10, 0x37, 0xf3, 0x09, + 0x12, 0x45, 0x43, 0x91, 0x19, 0x61, 0x65, 0x55, + 0x1c, 0x79, 0xd6, 0x5a, 0x00, 0x02, 0x18, 0x1d, + 0x00, 0x00, 0x00, 0x00 }, +}; + #elif defined MACHINE_SWTG024AS_A_2_0_1_5C_1SFP __code const struct machine machine = { .machine_name = "SWTG024AS-A-V2.0.1-5C-1SFP", diff --git a/machine.h b/machine.h index baeb7452..7e19167e 100644 --- a/machine.h +++ b/machine.h @@ -40,16 +40,19 @@ // #define MACHINE_HI_K0801WS // #define MACHINE_FNS1200P // #define MACHINE_PCB_SWTG024AS_A_2_0_1 +// #define MACHINE_ONT_S207CW_62TS_SE +// ONT-S207CW-62TS-SE and Binardat 2G06-04210GSM +// RTL8372N, 4x2.5G RJ45 + 2x10G SFP+, GD25Q128E (16MB) +// Physical ports: 1-4 = RJ45, 5-6 = SFP +// Logical ports: 0-3 = RJ45 (phys 1-4), 4-5 = SFP (phys 5-6) +// LED colors: RJ45 = Green@2.5G, Orange@1G/100M/10M; SFP = Green@10G, Orange@1G/2.5G +// LED mux: Original firmware values (0x08144040, 0x1037f309, ...) // #define MACHINE_SWTG024AS_A_2_0_1_5C_1SFP // #define MACHINE_SWTG024AS_V2_0 // #define MACHINE_FG_4GT_2SX_V2_0 // #define MACHINE_FG_8GT_1SX // #define MACHINE_LIANGUO_HYWS_SGT0108S // #define MACHINE_POE_2G080110GS -// ONT-S207CW-62TS-SE and Binardat 2G06-04210GSM: Identical PCB-SWTG024AS-A-2.0.1 -// RTL8372N, 4x2.5G RJ45 + 2x10G SFP+, GD25Q128E (16MB) -// Use MACHINE_PCB_SWTG024AS_A_2_0_1 for both devices -// See doc/devices/SWTG024AS.md section "PCB-SWTG024AS-A-2.0.1 Variant" for details typedef struct { // GPIO pins for SDA/SCL