diff --git a/doc/devices/HASIVO_S1100WP_8GT_1SX_SE.md b/doc/devices/HASIVO_S1100WP_8GT_1SX_SE.md
new file mode 100644
index 00000000..c3046c8d
--- /dev/null
+++ b/doc/devices/HASIVO_S1100WP_8GT_1SX_SE.md
@@ -0,0 +1,70 @@
+# Hasivo S1100WP-8GT-1SX-SE
+
+RTL8373-based 8×2.5G PoE + 1×SFP switch.
+
+### Label specifications
+
+- **Manufacturer**: Hasivo
+- **Model**: S1100WP-8GT-1SX-SE
+- **Ports**:
+ - 8 × RJ45: 10/100/1000/2500 Mbps with PoE
+ - 1 × SFP: 1G / 2.5G / 10G
+- **Power input**: DC 52V 2.5A
+- **Stock firmware defaults**: IP 192.168.0.1, user/password `admin`/`admin`
+
+### What works
+
+- All eight 2.5GBASE-T RJ45 ports at 10/100/1000/2500 Mbps (PoE is not configurable via RTLPlayground)
+- SFP port supporting 1G, 2.5G and 10G modules
+- LEDs: green (2.5G) and amber (1G/100M/10M) per copper port; combined link/act on the SFP port
+
+### Photos
+
+Front panel:
+
+
+
+Label:
+
+
+
+### PCB overview
+
+Top side:
+
+
+
+Bottom side:
+
+
+
+### Port layout
+
+| Logical port | Physical port | Type |
+|--------------|---------------|--------|
+| 1-8 | 1-8 | Copper |
+| 9 | 9 | SFP |
+
+### LED configuration
+
+Copper ports use LED SET0, the SFP port uses LED SET1.
+
+| SET | LED0 | LED2 |
+|------|-----------------------------------------------|------------------------------------------------------|
+| SET0 | Green — lights on 2.5G link with activity | Amber — lights on 1G / 100M / 10M link with activity |
+| SET1 | All speeds — lights on any link with activity | — |
+
+### SFP GPIO assignments
+
+| SFP (logical 9) | pin_detect (ModAbs) | pin_los | pin_tx_disable | SerDes | I2C SDA | I2C SCL |
+|-----------------|---------------------|---------|----------------|--------|-----------------|---------------------|
+| SFP | GPIO30_ACL_BIT3_EN | GPIO37 | GPIO_NA | SDS1 | GPIO39_I2C_SDA4 | GPIO40_I2C_SCL3_MDC1 |
+
+### Machine configuration
+
+- `reset_pin`: GPIO54_ACL_BIT2_EN
+- High LEDs (pads 27-29): mux = `LED_27 | LED_28_SYS | LED_29`, enable = `LED_28_SYS | LED_29`
+
+### PoE
+
+The 8 copper ports support PoE (power input DC 52V 2.5A). PoE is not configurable via RTLPlayground, and no `struct poe_port` telemetry is configured for this machine.
diff --git a/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/front.jpg b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/front.jpg
new file mode 100644
index 00000000..028b6382
Binary files /dev/null and b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/front.jpg differ
diff --git a/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/label.jpg b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/label.jpg
new file mode 100644
index 00000000..c5ab79ac
Binary files /dev/null and b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/label.jpg differ
diff --git a/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/pcb_bottom.jpg b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/pcb_bottom.jpg
new file mode 100644
index 00000000..7d388598
Binary files /dev/null and b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/pcb_bottom.jpg differ
diff --git a/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/pcb_top.jpg b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/pcb_top.jpg
new file mode 100644
index 00000000..5065544a
Binary files /dev/null and b/doc/devices/photos/HASIVO_S1100WP-8GT-1SX-SE/pcb_top.jpg differ
diff --git a/machine.c b/machine.c
index a2746fe2..e615300b 100644
--- a/machine.c
+++ b/machine.c
@@ -1325,6 +1325,37 @@ __code const struct machine machine = {
},
};
+#elif defined MACHINE_HASIVO_S1100WP_8GT_1SX_SE
+__code const struct machine machine = {
+ .machine_name = "Hasivo S1100WP-8GT-1SX-SE",
+ .isRTL8373 = 1,
+ .mac_flash_offset = 0x1FC000,
+ .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 = GPIO54_ACL_BIT2_EN,
+ .high_leds = { .mux = LED_27 | LED_28_SYS | LED_29, .enable = LED_28_SYS | LED_29 },
+ .port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
+ .led_sets = { { LEDS_2G5 | LEDS_LINK | LEDS_ACT, // Green LED (right)
+ 0, // unused
+ LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, // Amber LED (left)
+ 0
+ }, // unused
+ { LEDS_10G | LEDS_5G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_LINK | LEDS_ACT, // SFP LED
+ 0, // unused
+ 0, // unused
+ 0
+ }, // unused },
+ },
+};
#elif defined MACHINE_F7008_2_5
__code const struct machine machine = {
.machine_name = "F7008-2.5 8+1 SFP Port Switch",
diff --git a/machine.h b/machine.h
index 4867b8a2..cd393073 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_HASIVO_S1100WP_8GT_1SX_SE
// #define MACHINE_F7008_2_5
#define LED_27 1