diff --git a/fab.dcm b/fab.dcm
index fc409d29bdfc4e1023164b793bd038b1f15a6d0f..d3f2994f73cd8fc39644341617853935485bd816 100644
--- a/fab.dcm
+++ b/fab.dcm
@@ -540,6 +540,12 @@ K RF Radio BT ESP ESP32 Espressif onboard PCB antenna
 F https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf
 $ENDCMP
 #
+$CMP Radio_ESP8266EX
+D IC RF TxRx + MCU WiFi 802.11b/g/n 2.4GHz 32-VFQFN Exposed Pad
+K IC RF TxRx + MCU WiFi 802.11b/g/n 2.4GHz 32-VFQFN Exposed Pad
+F https://espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf
+$ENDCMP
+#
 $CMP Radio_Microchip_RN4871
 D Bluetooth Bluetooth v5.0 Transceiver Module 2.4GHz Integrated, Chip Surface Mount
 K Bluetooth Low Energy 4.2 Module
diff --git a/fab.lib b/fab.lib
index 484bee798af1f02ea16757d4ad7c6efbaedf66ca..a515222f097b582695eb024b94d0dfd3983cc0d4 100644
--- a/fab.lib
+++ b/fab.lib
@@ -1429,54 +1429,6 @@ X A 2 150 0 100 L 50 50 1 1 P
 ENDDRAW
 ENDDEF
 #
-# ESP8266EX
-#
-DEF ESP8266EX U 0 20 Y Y 1 F N
-F0 "U" 0 100 50 H V C CNN
-F1 "ESP8266EX" 0 -100 50 H V C CNN
-F2 "fab:fab-QFN-32-1EP_5x5mm_P0.5mm_EP3.45x3.45mm" 0 -1300 50 H I C CNN
-F3 "" 100 -1300 50 H I C CNN
-$FPLIST
- QFN*1EP*5x5mm*P0.5mm*
-$ENDFPLIST
-DRAW
-S -800 900 800 -1000 0 1 10 f
-X VDDA 1 -500 1000 100 D 50 50 1 1 W
-X MTDI 10 900 -700 100 L 50 50 1 1 B
-X VDDPST 11 0 1000 100 D 50 50 1 1 W
-X MTCK 12 900 -300 100 L 50 50 1 1 B
-X MTDO 13 900 -600 100 L 50 50 1 1 B
-X GPIO2 14 900 -200 100 L 50 50 1 1 B
-X GPIO0 15 900 0 100 L 50 50 1 1 B
-X GPIO4 16 900 -800 100 L 50 50 1 1 B
-X VDDPST 17 100 1000 100 D 50 50 1 1 W
-X SDIO_DATA_2 18 900 400 100 L 50 50 1 1 B
-X SDIO_DATA_3 19 900 300 100 L 50 50 1 1 B
-X LNA 2 -900 0 100 R 50 50 1 1 B
-X SDIO_CMD 20 900 700 100 L 50 50 1 1 B
-X SDIO_CLK 21 900 600 100 L 50 50 1 1 B
-X SDIO_DATA_0 22 900 500 100 L 50 50 1 1 B
-X SDIO_DATA_1 23 900 -100 100 L 50 50 1 1 B
-X GPIO5 24 900 -400 100 L 50 50 1 1 B
-X U0RXD 25 900 200 100 L 50 50 1 1 B
-X U0TXD 26 900 100 100 L 50 50 1 1 B
-X XTAL_OUT 27 -900 -300 100 R 50 50 1 1 B
-X XTAL_IN 28 -900 -800 100 R 50 50 1 1 B
-X VDDD 29 200 1000 100 D 50 50 1 1 W
-X VDD3P3 3 -300 1000 100 D 50 50 1 1 W
-X VDDA 30 -400 1000 100 D 50 50 1 1 W
-X RES12K 31 -900 300 100 R 50 50 1 1 I
-X ~EXT_RSTB~ 32 -900 200 100 R 50 50 1 1 I
-X GND 33 0 -1100 100 U 50 50 1 1 W
-X VDD3P3 4 -200 1000 100 D 50 50 1 1 W
-X VDD_RTC 5 -100 1000 100 D 50 50 1 1 W
-X TOUT 6 -900 500 100 R 50 50 1 1 I
-X CHIP_PU 7 -900 400 100 R 50 50 1 1 I
-X XPD_DCDC 8 -900 100 100 R 50 50 1 1 B
-X MTMS 9 900 -500 100 L 50 50 1 1 B
-ENDDRAW
-ENDDEF
-#
 # FT230XS
 #
 DEF FT230XS U 0 20 Y Y 1 F N
@@ -2835,6 +2787,54 @@ X IO33 9 600 -900 100 L 50 50 1 1 B
 ENDDRAW
 ENDDEF
 #
+# Radio_ESP8266EX
+#
+DEF Radio_ESP8266EX U 0 20 Y Y 1 F N
+F0 "U" 0 100 50 H V C CNN
+F1 "Radio_ESP8266EX" 0 -100 50 H V C CNN
+F2 "fab:QFN-32_EP_5x5_Pitch0.5mm" 0 -1300 50 H I C CNN
+F3 "" 100 -1300 50 H I C CNN
+$FPLIST
+ QFN*1EP*5x5mm*P0.5mm*
+$ENDFPLIST
+DRAW
+S -800 900 800 -1000 0 1 10 f
+X VDDA 1 -500 1000 100 D 50 50 1 1 W
+X MTDI 10 900 -700 100 L 50 50 1 1 B
+X VDDPST 11 0 1000 100 D 50 50 1 1 W
+X MTCK 12 900 -300 100 L 50 50 1 1 B
+X MTDO 13 900 -600 100 L 50 50 1 1 B
+X GPIO2 14 900 -200 100 L 50 50 1 1 B
+X GPIO0 15 900 0 100 L 50 50 1 1 B
+X GPIO4 16 900 -800 100 L 50 50 1 1 B
+X VDDPST 17 100 1000 100 D 50 50 1 1 W
+X SDIO_DATA_2 18 900 400 100 L 50 50 1 1 B
+X SDIO_DATA_3 19 900 300 100 L 50 50 1 1 B
+X LNA 2 -900 0 100 R 50 50 1 1 B
+X SDIO_CMD 20 900 700 100 L 50 50 1 1 B
+X SDIO_CLK 21 900 600 100 L 50 50 1 1 B
+X SDIO_DATA_0 22 900 500 100 L 50 50 1 1 B
+X SDIO_DATA_1 23 900 -100 100 L 50 50 1 1 B
+X GPIO5 24 900 -400 100 L 50 50 1 1 B
+X U0RXD 25 900 200 100 L 50 50 1 1 B
+X U0TXD 26 900 100 100 L 50 50 1 1 B
+X XTAL_OUT 27 -900 -300 100 R 50 50 1 1 B
+X XTAL_IN 28 -900 -800 100 R 50 50 1 1 B
+X VDDD 29 200 1000 100 D 50 50 1 1 W
+X VDD3P3 3 -300 1000 100 D 50 50 1 1 W
+X VDDA 30 -400 1000 100 D 50 50 1 1 W
+X RES12K 31 -900 300 100 R 50 50 1 1 I
+X ~EXT_RSTB~ 32 -900 200 100 R 50 50 1 1 I
+X GND 33 0 -1100 100 U 50 50 1 1 W
+X VDD3P3 4 -200 1000 100 D 50 50 1 1 W
+X VDD_RTC 5 -100 1000 100 D 50 50 1 1 W
+X TOUT 6 -900 500 100 R 50 50 1 1 I
+X CHIP_PU 7 -900 400 100 R 50 50 1 1 I
+X XPD_DCDC 8 -900 100 100 R 50 50 1 1 B
+X MTMS 9 900 -500 100 L 50 50 1 1 B
+ENDDRAW
+ENDDEF
+#
 # Radio_Microchip_RN4871
 #
 DEF Radio_Microchip_RN4871 U 0 40 Y Y 1 F N
diff --git a/fab.pretty/QFN-32_EP_5x5_Pitch0.5mm.kicad_mod b/fab.pretty/QFN-32_EP_5x5_Pitch0.5mm.kicad_mod
new file mode 100644
index 0000000000000000000000000000000000000000..479444d78f093b4c1ba01d1b1c3f888f66646904
--- /dev/null
+++ b/fab.pretty/QFN-32_EP_5x5_Pitch0.5mm.kicad_mod
@@ -0,0 +1,65 @@
+(module QFN-32_EP_5x5_Pitch0.5mm (layer F.Cu) (tedit 0)
+  (attr smd)
+  (fp_text reference REF** (at 0 -4.15) (layer F.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_text value QFN-32_EP_5x5_Pitch0.5mm (at 0 4.15) (layer F.Fab)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_line (start -1.5 -2.5) (end -2.5 -1.5) (layer F.Fab) (width 0.15))
+  (fp_line (start -2.5 -1.5) (end -2.5 2.5) (layer F.Fab) (width 0.15))
+  (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.15))
+  (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.15))
+  (fp_line (start 2.5 -2.5) (end -1.5 -2.5) (layer F.Fab) (width 0.15))
+  (fp_line (start 2.25 -2.65) (end 2.65 -2.65) (layer F.SilkS) (width 0.12))
+  (fp_line (start 2.65 -2.65) (end 2.65 -2.25) (layer F.SilkS) (width 0.12))
+  (fp_line (start 2.25 2.65) (end 2.65 2.65) (layer F.SilkS) (width 0.12))
+  (fp_line (start 2.65 2.65) (end 2.65 2.25) (layer F.SilkS) (width 0.12))
+  (fp_line (start -2.25 2.65) (end -2.65 2.65) (layer F.SilkS) (width 0.12))
+  (fp_line (start -2.65 2.65) (end -2.65 2.25) (layer F.SilkS) (width 0.12))
+  (fp_line (start -2.25 -2.65) (end -2.9 -2.65) (layer F.SilkS) (width 0.12))
+  (fp_line (start -3.15 -3.15) (end 3.15 -3.15) (layer F.CrtYd) (width 0.05))
+  (fp_line (start 3.15 -3.15) (end 3.15 3.15) (layer F.CrtYd) (width 0.05))
+  (fp_line (start 3.15 3.15) (end -3.15 3.15) (layer F.CrtYd) (width 0.05))
+  (fp_line (start -3.15 3.15) (end -3.15 -3.15) (layer F.CrtYd) (width 0.05))
+  (pad 1 smd rect (at -2.6 -1.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 2 smd rect (at -2.6 -1.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 3 smd rect (at -2.6 -0.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 4 smd rect (at -2.6 -0.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 5 smd rect (at -2.6 0.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 6 smd rect (at -2.6 0.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 7 smd rect (at -2.6 1.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 8 smd rect (at -2.6 1.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 9 smd rect (at -1.75 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 10 smd rect (at -1.25 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 11 smd rect (at -0.75 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 12 smd rect (at -0.25 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 13 smd rect (at 0.25 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 14 smd rect (at 0.75 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 15 smd rect (at 1.25 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 16 smd rect (at 1.75 2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 17 smd rect (at 2.6 1.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 18 smd rect (at 2.6 1.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 19 smd rect (at 2.6 0.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 20 smd rect (at 2.6 0.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 21 smd rect (at 2.6 -0.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 22 smd rect (at 2.6 -0.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 23 smd rect (at 2.6 -1.25 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 24 smd rect (at 2.6 -1.75 90) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 25 smd rect (at 1.75 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 26 smd rect (at 1.25 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 27 smd rect (at 0.75 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 28 smd rect (at 0.25 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 29 smd rect (at -0.25 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 30 smd rect (at -0.75 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 31 smd rect (at -1.25 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 32 smd rect (at -1.75 -2.6) (size 0.25 0.8) (layers F.Cu F.Paste F.Mask))
+  (pad 33 smd rect (at -0.875 -0.875) (size 1.75 1.75) (layers F.Cu F.Paste F.Mask)
+    (solder_paste_margin -0.75))
+  (pad 33 smd rect (at -0.875 0.875) (size 1.75 1.75) (layers F.Cu F.Paste F.Mask)
+    (solder_paste_margin -0.75))
+  (pad 33 smd rect (at 0.875 -0.875) (size 1.75 1.75) (layers F.Cu F.Paste F.Mask)
+    (solder_paste_margin -0.75))
+  (pad 33 smd rect (at 0.875 0.875) (size 1.75 1.75) (layers F.Cu F.Paste F.Mask)
+    (solder_paste_margin -0.75))
+)