---
title: "Why W5500 in ESP32-H2 MicroPython Firmware? (Production-Ready)"
url: "https://maker.wiznet.io/Benjamin/projects/micropython-esp32-h2-mini-1-firmware/"
markdown_url: "https://maker.wiznet.io/Benjamin/projects/micropython-esp32-h2-mini-1-firmware/md"
type: "UCC: User Created Content"
author: "Sharil Tumin"
author_url: "https://github.com/shariltumin/esp32-h2-w5500-micropython"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Sharil Tumin"
original_url: "https://github.com/shariltumin/esp32-h2-w5500-micropython"
license: "MIT license (MIT)"
published: "2026-01-09"
language: "en"
tags: ["ESP32", "W5500", "MicroPython"]
hardware: ["WIZnet W5500"]
likes: 0
views: 1360
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Why W5500 in ESP32-H2 MicroPython Firmware? (Production-Ready)

> This project provides a production-ready MicroPython firmware for the ESP32-H2-MINI-1, enabling 100Mbps Ethernet via WIZnet W5500.

Original author: Sharil Tumin (source: https://github.com/shariltumin/esp32-h2-w5500-micropython)

## Components

- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))
- Software: **MicroPython** ([docs](http://micropython.org/))

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Article

### **4. DESCRIPTION**

### **Project Overview (Context & Origin)**

This project was released just **2 days ago (January 7, 2026)** by **shariltumin**, an active contributor in the MicroPython community.

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767975244%2Epng)

*https://github.com/shariltumin*

The ESP32-H2 is a specialized MCU that supports only **IEEE 802.15.4 (Zigbee/Thread)** and **Bluetooth LE**, lacking native Wi-Fi. Therefore, wired Ethernet is essential for external internet connectivity. At a time when official MicroPython support for H2 was incomplete, the author integrated the **W5500 driver and critical ADC fixes** to release a "Production-Ready" firmware.

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767974779%2Epng)

*source : https://www.espressif.com/en/products/socs/esp32-h2*

### **Hardware Analysis**

It is based on connecting an ESP32-H2-MINI-1 board and a W5500 module via SPI. The pin map specified in the README is:

- **SPI Bus**: GPIO 4(SCLK), 5(MOSI), 0(MISO)

- **Control**: GPIO 1(CS), 11(INT)

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767975617%2Epng)

*source : https://github.com/shariltumin/esp32-h2-w5500-micropython/blob/main/foto/PXL_20260107_162813968~3.jpg*

### **Technical Analysis: Why WIZnet?**

The ESP32-H2 is inherently a **No Wi-Fi** chipset. This means it is optimized for low-power Zigbee/Thread devices or battery-operated sensors. However, to send collected data to the cloud or a local server, an **Internet Gateway** function is mandatory.

**WIZnet W5500 serves as the unique and powerful solution here.**

1. **Essential Connectivity**: It breathes internet life into the Wi-Fi-less H2 chip.

2. **Reliability**: Since the 2.4GHz band is occupied by Zigbee and Thread, a wired Ethernet backhaul free from RF interference is ideal.

3. **Resource Efficiency**: The H2 is a resource-constrained MCU. W5500 offloads TCP/IP processing to hardware, allowing H2's memory and CPU to focus entirely on the Zigbee/Thread stack.

*![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767975879%2Epng)*

### **Firmware/Software Analysis**

This project is more than just a driver addition; it's a **custom build** with core fixes for real-world usage.

- **Ethernet Integration**: Natively supports W5500 via the `network.LAN` module.

- **ADC Bug Fixes**: Resolved the Guru Meditation Error crash that occurred when invoking `machine.ADC()` on the ESP32-H2.

- **Ready-to-use Scripts**: Includes utility scripts like `start_lan.py` to help users get Ethernet running immediately.

```python
# Excerpt from scripts/start_lan.py (Actual code)
# Concise code for W5500 initialization and IP assignment
spi = SPI(1, sck=Pin(4), mosi=Pin(5), miso=Pin(0))
lan = network.LAN(spi=spi, cs=Pin(1), int=Pin(11), phy_addr=1, phy_type=network.PHY_W5500)
lan.active(True)
print("IP:", lan.ifconfig())
```

### **Market Context & Significance**

The ESP32-H2 is gaining attention with the rise of Matter and Thread. This project provides a way for makers who want to build their own **Low-power Matter Bridge** or **Zigbee Coordinator** using H2, to integrate the most reliable wired network solution (W5500).

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767976108%2Epng)

*https://github.com/shariltumin*

### **FAQQ: Does the ESP32-H2 really have no Wi-Fi?**

A: Correct, the ESP32-H2 physically lacks Wi-Fi hardware. It is a specialized chip designed solely for IEEE 802.15.4 (Zigbee/Thread) and Bluetooth LE. To send data to the cloud or local servers, you **must use an external Ethernet controller like W5500**. This is a critical requirement when building Matter Gateways or Zigbee Coordinators.

**Q: How does this differ from official MicroPython firmware?**

A: Official MicroPython support for ESP32-H2 is still experimental, with a critical bug where calling `machine.ADC()` causes a Guru Meditation Error crash. This project **directly modified the ADC channel mapping table** to fix the bug and fully enabled the W5500 `network.LAN` driver to achieve "Production-Ready" quality. GPIO pin mappings are also optimized for the H2's unique characteristics.

**Q: What actual speed can I expect with W5500?**

A: Although the W5500 has a 100Mbps PHY, the ESP32-H2's SPI bus limitation results in effective throughput of **10~15Mbps**. However, this is **more than adequate** for industrial IoT sensor data, MQTT publishing, and HTTP requests. For reference, 1Mbps alone can transmit thousands of sensor messages per second, so there's no bottleneck for typical Zigbee/Thread Gateway applications.

---

### **프로젝트 개요 (Context & Origin)**

이 프로젝트는** 2026년 1월 7일** MicroPython 커뮤니티의 활발한 기여자인 **shariltumin**이 github에 공개한 따끈따끈한 ESP32-H2 전용 커스텀 펌웨어입니다. 그는 229개의 스타를 받은 esp32-cam-micropython을 비롯해 26개의 MicroPython 리포지토리를 운영하는 ESP32 전문가입니다.

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767975244%2Epng)

*https://github.com/shariltumin*

ESP32-H2는 Wi-Fi가 없고 **IEEE 802.15.4 (Zigbee/Thread)** 와 **Bluetooth LE**만을 지원하는 특수 목적 MCU입니다. 따라서 외부 인터넷 연결을 위해서는 유선 이더넷이 필수적인데, 공식 MicroPython 펌웨어가 이를 완벽히 지원하지 않는 시점에서 개발자가 직접 **W5500 드라이버와 ADC 픽스**를 통합하여 "Production-Ready" 수준으로 내놓았습니다.

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767974779%2Epng)

*source : https://www.espressif.com/en/products/socs/esp32-h2*

### **하드웨어 분석**

ESP32-H2-MINI-1 보드와 W5500 모듈을 SPI로 연결하는 구성을 기본으로 합니다. README에 명시된 핀맵은 다음과 같습니다:

- **SPI Bus**: GPIO 4(SCLK), 5(MOSI), 0(MISO)

- **Control**: GPIO 1(CS), 11(INT)

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767975611%2Epng)

*source : https://github.com/shariltumin/esp32-h2-w5500-micropython/blob/main/foto/PXL_20260107_162813968~3.jpg*

### **기술적 분석: Why WIZnet?**

ESP32-H2는 태생적으로 **Wi-Fi가 없는 (No Wi-Fi)** 칩셋입니다. 이는 저전력 Zigbee/Thread 기기나 배터리 구동 센서에 최적화되었음을 의미합니다. 하지만 이들이 수집한 데이터를 클라우드나 로컬 서버로 보내려면 **인터넷 연결(Gateway)** 기능이 반드시 필요합니다.

**WIZnet W5500은 여기서 유일하고도 강력한 해결책이 됩니다.**

1. **필수적 연결성 (Essential Connectivity)**: Wi-Fi가 없는 H2 칩에 인터넷 생명력을 불어넣습니다.

2. **안정성 (Reliability)**: 2.4GHz 대역은 Zigbee와 Thread가 사용해야 하므로, 백홀(Backhaul) 연결은 전파 간섭이 없는 유선 이더넷이 가장 이상적입니다.

3. **자원 효율성 (Resource Efficiency)**: H2는 리소스가 제한적인 MCU입니다. W5500은 TCP/IP 스택을 하드웨어로 처리하므로 H2의 메모리와 CPU를 Zigbee/Thread 스택 운용에 온전히 집중시킬 수 있습니다.

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767975870%2Epng)

### **펌웨어/소프트웨어 분석**

이 프로젝트는 단순한 드라이버 추가를 넘어, 실사용에 필요한 핵심 기능들을 수정한 **커스텀 빌드**입니다.

- **Ethernet 통합**: `network.LAN` 모듈을 통해 W5500을 네이티브하게 지원합니다.

- **ADC 버그 수정**: ESP32-H2의 `machine.ADC()` 구동 시 발생하는 크래시(Guru Meditation Error) 문제를 해결했습니다.

- **스크립트 제공**: `start_lan.py`와 같은 유틸리티 스크립트를 포함하여, 사용자가 즉시 이더넷을 구동해볼 수 있도록 배려했습니다.

```python
# scripts/start_lan.py 발췌 (실제 코드)
# W5500 초기화 및 IP 할당을 위한 간결한 코드
spi = SPI(1, sck=Pin(4), mosi=Pin(5), miso=Pin(0))
lan = network.LAN(spi=spi, cs=Pin(1), int=Pin(11), phy_addr=1, phy_type=network.PHY_W5500)
lan.active(True)
print("IP:", lan.ifconfig())
```

### **시장 맥락 및 의의**

ESP32-H2는 최근 Matter와 Thread의 부상으로 주목받는 칩셋입니다. 이 프로젝트는 H2를 이용해 **저전력 Matter Bridge**나 **Zigbee 코디네이터**를 직접 만들고 싶은 메이커들에게, 가장 신뢰할 수 있는 유선 네트워크 솔루션(W5500)을 접목하는 방법을 제시합니다.

![](https://maker.wiznet.io/upload/ckeditor5/1122402%5F1767976103%2Epng)

*https://github.com/shariltumin*

### **FAQQ: ESP32-H2에 Wi-Fi가 정말 없나요?**

A: 네, ESP32-H2는 Wi-Fi 하드웨어 자체가 물리적으로 존재하지 않습니다. IEEE 802.15.4(Zigbee/Thread)와 Bluetooth LE만을 지원하도록 설계된 특수 목적 칩입니다. 따라서 클라우드나 로컬 서버로 데이터를 전송하려면 **W5500과 같은 외부 이더넷 컨트롤러가 필수**입니다. 이는 Matter Gateway나 Zigbee Coordinator를 구축할 때 핵심적인 요구사항입니다.

**Q: 공식 MicroPython 펌웨어와 다른 점은 무엇인가요?**

A: 공식 MicroPython은 ESP32-H2 지원이 아직 실험 단계이며, 특히 `machine.ADC()`를 호출하면 Guru Meditation Error로 크래시되는 치명적 버그가 있습니다. 이 프로젝트는 **ADC 채널 매핑 테이블을 직접 수정**하여 해당 버그를 해결했고, W5500 `network.LAN` 드라이버를 완전히 활성화하여 "Production-Ready" 수준으로 끌어올렸습니다. 또한 GPIO 핀맵도 H2 특성에 맞게 최적화되어 있습니다.

**Q: W5500 연결 시 실제 속도는 어느 정도인가요?**

A: W5500은 100Mbps PHY를 탑재했지만, ESP32-H2의 SPI 버스 속도 제한으로 인해 실효 Throughput은 **10~15Mbps** 수준입니다. 하지만 이는 산업용 IoT 센서 데이터 전송, MQTT 메시지 발행, HTTP 요청 등에는 **충분히 넉넉한 대역폭**입니다. 참고로, 1Mbps만 있어도 초당 수천 개의 센서 메시지를 전송할 수 있으므로, 대부분의 Zigbee/Thread Gateway 용도에서는 병목이 전혀 발생하지 않습니다.

---

Source: https://maker.wiznet.io/Benjamin/projects/micropython-esp32-h2-mini-1-firmware/
