diff --git a/doc/devices/F7008-2.5.md b/doc/devices/F7008-2.5.md new file mode 100644 index 00000000..f069d250 --- /dev/null +++ b/doc/devices/F7008-2.5.md @@ -0,0 +1,70 @@ +# F7008-2.5 + +Documentation for the unmanaged 8 + 1 switch sold as `7018-2.5G` by Guangnianwei +(光年微), board marking `F7008-2.5`, PCB `F7008-2.5GPOE-V1.2`. + +### Brands + +| Brand | Type | Managed | PCB | Flash | Chip RTL | +|-------|------|---------|-----|-------|----------| +| Guangnianwei (光年微) | 7018-2.5G | No | F7008-2.5GPOE-V1.2 | W25Q64JVSSIQ | 8373N + 8224N | + +### What works + +- All eight 2.5GBASE-T RJ45 ports at 10/100/1000/2500 Mbps +- SFP+ port with 1G/2.5G/10G modules +- LEDs of the eight RJ45 ports + +### Not verified + +- The LED pads for the SFP+ cage are not mapped yet. The SFP+ lamps are left + undriven, so an inserted module lights nothing. +- The UART header footprint is present but unpopulated, and no boot log could be + captured from it, so the baud rate is unknown. There are most likely + unpopulated 0-Ohm resistors next to the header; bridging those should bring + the console to life. + +### Build target + +``` +make MACHINE=F7008_2_5 +``` + +### LED wiring + +Measured pad to lamp map (`led_mux` index -> lamp): + +| Port | green lamp | yellow lamp | +|------|-----------|-------------| +| 1 | pad 0 | pad 1 | +| 2 | pad 2 | pad 3 | +| 3 | pad 4 | pad 5 | +| 4 | pad 6 | pad 8 | +| 5 | pad 9 | pad 10 | +| 6 | pad 12 | pad 15 | +| 7 | pad 18 | pad 21 | +| 8 | pad 24 | pad 25 | + +Pads 7, 11, 13, 14, 16, 17, 19, 20, 22, 23, 26 and 27 do not drive an RJ45 lamp. + +The front panel is silkscreened `2.5G: Green / 10/100M: Yellow`, and the target +follows it: the green lamp is on while the port is linked at 2.5G, the yellow +lamp blinks while data is flowing. + +### PCB overview + +The board is marked `F7008-2.5GPOE-V1.2`. + +Top side: + + + +Bottom side: + + + +### Hardware notes + +- 4 x `RT4802SNE` magnetics +- Unpopulated UART header footprint, next to the magnetics +- Power input 12V 1A, 180 x 84 x 29 mm metal case diff --git a/doc/devices/photos/F7008-2.5/PCB-bottom.jpg b/doc/devices/photos/F7008-2.5/PCB-bottom.jpg new file mode 100644 index 00000000..c4b34c13 Binary files /dev/null and b/doc/devices/photos/F7008-2.5/PCB-bottom.jpg differ diff --git a/doc/devices/photos/F7008-2.5/PCB-top.jpg b/doc/devices/photos/F7008-2.5/PCB-top.jpg new file mode 100644 index 00000000..c8f73825 Binary files /dev/null and b/doc/devices/photos/F7008-2.5/PCB-top.jpg differ diff --git a/doc/supported_devices.md b/doc/supported_devices.md index dbb217ee..7a08013b 100644 --- a/doc/supported_devices.md +++ b/doc/supported_devices.md @@ -36,6 +36,7 @@ The following devices have been tested and are fully working: | Xikestore| SKS3200M-4GPY2XF| Yes | [SWTG024AS-v1.0](devices/SWTG024AS.md) | | 4 + 2 | | XikeStor | SKS3200-8E1X | Yes | [SWTG118AS-V2.1-17462](devices/SWTGW218AS.md) | 2M | 8 + 1 | | Ztyuav | Z-QWYT0402 | No | [PCB-K0402WS-V3.0](devices/PCB-K0402WS-V3.0.md) | | 4 + 2 | +| Guangnianwei | 7018-2.5G | No | [F7008-2.5GPOE-V1.2](devices/F7008-2.5.md) | 8M | 8 + 1 | For KP-9000-6XH-X2 / KP-9000-6XHML-X2 / Mokerlink 2G040210GSM devices, select the machine target by PCB revision. The ML/non-ML or managed/unmanaged label diff --git a/machine.c b/machine.c index 23e7ca41..a2746fe2 100644 --- a/machine.c +++ b/machine.c @@ -1325,6 +1325,47 @@ __code const struct machine machine = { }, }; +#elif defined MACHINE_F7008_2_5 +__code const struct machine machine = { + .machine_name = "F7008-2.5 8+1 SFP Port Switch", + .isRTL8373 = 1, + .min_port = 0, + .max_port = 8, + .n_sfp = 1, + .log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9}, + .phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8}, + .is_sfp = {0, 0, 0, 0, 0, 0, 0, 0, 1}, + .sfp_port[0].pin_detect = GPIO30_ACL_BIT3_EN, + .sfp_port[0].pin_los = GPIO37, + .sfp_port[0].pin_tx_disable = GPIO_NA, + .sfp_port[0].sds = 1, + .sfp_port[0].i2c = I2CBUS( GPIO39_I2C_SDA4, GPIO40_I2C_SCL3_MDC1 ), + .reset_pin = GPIO_NA, + .high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 }, + .port_led_set = {0, 0, 0, 0, 0, 0, 0, 0, 1}, + .led_sets = { + { /* SET0 */ + LEDS_2G5 | LEDS_LINK, /* LEDID0 - green: 2.5G link */ + LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, /* LEDID1 - yellow: traffic */ + 0, + 0, + }, + { /* SET1 - SFP+ */ + LEDS_10G | LEDS_5G | LEDS_2G5 | LEDS_LINK, + LEDS_10G | LEDS_5G | LEDS_2G5 | LEDS_1G | LEDS_LINK | LEDS_ACT, + 0, + 0, + }, + }, + .led_mux_custom = 1, + .led_mux = { + 0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0c, 0x02, + 0x0d, 0x10, 0x11, 0x02, 0x14, 0x02, 0x02, 0x15, + 0x02, 0x02, 0x18, 0x02, 0x02, 0x19, 0x02, 0x02, + 0x1c, 0x1d, 0x02, 0x02, + }, +}; + #else #error "Please select a machine type in machine.h" #endif diff --git a/machine.h b/machine.h index ecf5f617..4867b8a2 100644 --- a/machine.h +++ b/machine.h @@ -48,6 +48,7 @@ // #define MACHINE_POE_2G080110GS // #define MACHINE_PB_2132 // #define MACHINE_HASIVO_S600W_4GT_2XGT_SE +// #define MACHINE_F7008_2_5 #define LED_27 1 // SYSTEM LED