diff --git a/doc/devices/K0501W.md b/doc/devices/K0501W.md
new file mode 100644
index 0000000..7a48236
--- /dev/null
+++ b/doc/devices/K0501W.md
@@ -0,0 +1,23 @@
+# K0501W
+
+This board appears for example in the Davuaz Da-K6501W switch.
+
+It is designed similarly to Hi-K0402WS. However, there are a few differences:
+- One SFP port is replaced by a RTL8221B 2.5G PHY
+- Only one LED is populated for the SFP port
+- No mode switch and only one flash chip
+- Like earlier revisions of the K0402W(S) board, there is no UART
+
+Even though board looks very similar to K0402W(S), the actual GPIO and LED configuration is quite different.
+All ports and LEDs are supported.
+
+Installation is possible using a flash programmer.
+The BoyaMicro 25Q16BSSIG flash chip is supported by flashprog with chip name "B.25D16AS/BY25Q16BS/BY25Q16ES".
+
+## PCB pictures
+
+The board is marked `PCB-K0501W-V2.0 DIP-K0501WS-V2.0`.
+
+
+
+
diff --git a/doc/devices/photos/K0501W/pcb-bottom.jpg b/doc/devices/photos/K0501W/pcb-bottom.jpg
new file mode 100644
index 0000000..bd3f1d2
Binary files /dev/null and b/doc/devices/photos/K0501W/pcb-bottom.jpg differ
diff --git a/doc/devices/photos/K0501W/pcb-top.jpg b/doc/devices/photos/K0501W/pcb-top.jpg
new file mode 100644
index 0000000..0fda4f3
Binary files /dev/null and b/doc/devices/photos/K0501W/pcb-top.jpg differ
diff --git a/machine.c b/machine.c
index 4671eeb..4c083cc 100644
--- a/machine.c
+++ b/machine.c
@@ -408,6 +408,44 @@ __code const struct machine machine = {
void machine_custom_init(void) {
reg_bit_set(RTL837X_REG_LED_GLB_IO_EN, 6);
}
+
+#elif defined MACHINE_K0501W
+__code const struct machine machine = {
+ .machine_name = "K0501W",
+ .isRTL8373 = 0,
+ .min_port = 3,
+ .max_port = 8,
+ .n_sfp = 1,
+ .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, 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 = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
+
+ .reset_pin = GPIO_NA,
+ .port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
+ .led_sets = {
+ {
+ LEDS_2G5 | LEDS_LINK | LEDS_ACT,
+ 0,
+ LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
+ 0
+ },
+ {
+ LEDS_10G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
+ 0,
+ 0,
+ 0
+ },
+ },
+};
+
+void machine_custom_init(void) { }
+
#else
#error "Please select a machine type in machine.h"
#endif
diff --git a/machine.h b/machine.h
index a5f1952..451c6b1 100644
--- a/machine.h
+++ b/machine.h
@@ -17,6 +17,7 @@
// #define MACHINE_SWTG018AS_A_V_2_0
// #define MACHINE_SWTGW218AS
// #define MACHINE_HI_K0402WS
+// #define MACHINE_K0501W
// #define MACHINE_DEFAULT_8C_1SFP
typedef struct {