Olimex UEXT-CH390: SPI to Ethernet 10/100 Mbps Module for Microcontrollers
⚡ The essentials in 60 seconds
- ethernet_controller — WCH CH390
- ethernet_speed — 10/100 Mbps
- host_interface — SPI modes 0 and 3
- spi_clock_speed — Up to 72 MHz
- sram — 16KB built-in for packet buffering
- connectors — RJ45, 10-pin UEXT, 10-pin pUEXT (1.0mm pitch)
- On this board : 9 tutorials · 10 code
In the landscape of embedded systems and Internet of Things development, a persistent challenge for engineers and hobbyists alike is the reliable integration of wired network connectivity into compact microcontroller projects. While wireless standards like Wi-Fi and Bluetooth have become ubiquitous, they often introduce variables related to signal stability, latency, and security that are undesirable in industrial or critical applications. This is where the Olimex UEXT-CH390 module emerges as a pragmatic, open-source hardware solution designed to bridge the gap between resource-constrained microcontrollers and the robust world of wired Ethernet. At its core, this module is not merely a connector but a sophisticated interface that translates the serial communication protocols of a microcontroller into the complex signaling required for Ethernet networks. By leveraging the WCH CH390 controller, the module integrates both the Media Access Control (MAC) and the Physical Layer (PHY) of the Ethernet stack onto a single chip. This integration is significant because it relieves the host microcontroller from the heavy computational burden of managing low-level network signals, allowing it to focus on application logic rather than electrical timing and packet framing. The result is a streamlined pathway to achieving 10/100 Mbps Ethernet connectivity, a speed tier that remains highly relevant for data logging, control systems, and smart home hubs where consistent bandwidth is preferred over the burst speeds of wireless alternatives.
The physical design of the Olimex UEXT-CH390 reflects a commitment to modularity and ease of integration, adhering to the UEXT standard which has become a de facto interface for adding peripherals to development boards without the need for custom soldering or complex wiring harnesses. The module measures a compact 50 by 21 millimeters, a footprint that allows it to be attached to the underside or side of many popular development boards without significantly altering the project’s overall form factor. It features two distinct connection interfaces: a standard 10-pin UEXT connector and a pUEXT connector with a 1.0mm pitch. This dual-connector approach enhances compatibility across different board layouts, ensuring that whether a developer is using a board with standard headers or one with finer-pitch pin arrays, the module can be easily plugged in. Power is supplied directly through these connectors at 3.3 volts, eliminating the need for a separate power supply for the Ethernet interface. This single-cable solution simplifies the power architecture of the final product, reducing both component count and potential points of failure. Additionally, the module includes a standard RJ45 jack, the familiar port found on routers and switches, providing a tangible, physical link to local area networks. This physical port is equipped with Auto-MDIX capability, a feature that automatically detects the type of Ethernet cable connected—straight-through or crossover—thereby removing a common source of confusion and troubleshooting time for users who may not be familiar with legacy cabling standards.
Under the hood, the communication between the host microcontroller and the CH390 controller is handled via the Serial Peripheral Interface (SPI), a high-speed, full-duplex communication protocol widely supported by modern microcontrollers. The module supports SPI modes 0 and 3, offering flexibility in clock polarity and phase settings to match the specific requirements of different microcontroller peripherals. With support for clock speeds up to 72 MHz, the interface is capable of sustaining the data throughput necessary for 100 Mbps Ethernet operations. To manage the flow of data efficiently, the CH390 chip incorporates 16KB of built-in static random-access memory (SRAM). This memory serves as a packet buffer, temporarily storing incoming and outgoing data frames. This buffering mechanism is crucial for maintaining network integrity; it allows the microcontroller to process packets at its own pace without risking data loss from the network stream. When a burst of data arrives, the CH390 holds it in this local SRAM until the host is ready to read it, effectively decoupling the high-speed network traffic from the potentially slower processing cycles of the microcontroller. Furthermore, each module is shipped with a factory-programmed MAC address. This unique identifier is essential for Ethernet communication, ensuring that every device on the network can be distinctly addressed. By pre-programming this address, Olimex eliminates the need for external EEPROM chips, which are traditionally used to store MAC addresses, thereby reducing the bill of materials and simplifying the manufacturing process.
Software support is a critical component of any hardware module’s utility, and the Olimex UEXT-CH390 is designed with a broad ecosystem in mind. It is compatible with some of the most popular development platforms in the maker and professional communities, including the Raspberry Pi Pico and Pico 2 series, as well as various ESP32 variants such as the S3, C3, C5, and C6. This wide compatibility ensures that developers can integrate wired Ethernet into projects regardless of their preferred microcontroller architecture. For users working within the Arduino IDE, the module can be integrated using standard libraries, providing a familiar environment for rapid prototyping. However, the module’s capabilities are particularly well-suited for ESPHome, a popular open-source firmware for ESP-based devices that simplifies the creation of custom smart home integrations. A specific driver has been developed for the RP2040 microcontroller, the brain of the Raspberry Pi Pico, which has been tested on the RP2040-PICO30U-16 board. This driver enables advanced networking features such as DHCP for automatic IP address assignment, discovery mechanisms for Home Assistant integration, Over-The-Air (OTA) updates for remote firmware management, and a local web interface for configuration and monitoring. These features transform the module from a simple data pipe into a fully functional network node capable of participating in modern IoT ecosystems. Additionally, for developers preferring lower-level control, code examples utilizing the lwIP TCP/IP stack for the Raspberry Pi Pico SDK are available, offering a more granular approach to network management.
The protocol stack implemented by the CH390 controller also includes support for IPv4 and IPv6 TCP/UDP checksums, ensuring data integrity across both current and next-generation network protocols. It also supports IEEE 802.3x flow control, a mechanism that allows devices to pause data transmission when buffers are full, preventing packet loss during periods of high network congestion. This level of protocol compliance ensures that the module behaves predictably in complex network environments. The project is positioned as an affordable entry point into wired IoT development, with a pre-order price of 4.95 euros. This low cost barrier makes it an attractive option for educational institutions, hobbyists, and small-scale manufacturers looking to add reliable wired connectivity to their projects without incurring significant hardware expenses. With shipping scheduled to begin in November 2026, the module represents a timely addition to the open-source hardware market, addressing the growing demand for deterministic, secure, and high-speed network connections in embedded applications. By combining a compact form factor, standardized connectors, and robust software support, the Olimex UEXT-CH390 provides a comprehensive solution for developers seeking to move beyond the limitations of wireless connectivity, offering a tangible, reliable, and efficient path to wired Ethernet integration for a wide range of microcontroller platforms.

| Attr | Specs | verified |
|---|---|---|
ethernet_controller | WCH CH390 | ? unverified |
ethernet_speed | 10/100 Mbps | ? unverified |
host_interface | SPI modes 0 and 3 | ? unverified |
spi_clock_speed | Up to 72 MHz | ? unverified |
sram | 16KB built-in for packet buffering | ? unverified |
connectors | RJ45, 10-pin UEXT, 10-pin pUEXT (1.0mm pitch) | ? unverified |
power_supply | 3.3V via UEXT/pUEXT | ? unverified |
dimensions | 50 x 21 mm | ? unverified |
mac_address | Factory-programmed (no external EEPROM needed) | ? unverified |
supported_boards | Raspberry Pi Pico/Pico 2, ESP32-S3/C3/C5/C6 | ? unverified |
software_support | Arduino IDE, ESPHome, RP2040 SDK (lwIP) | ? unverified |
network_features | Auto-MDIX, IPv4/IPv6 TCP/UDP checksum, IEEE 802.3x flow control | ? unverified |
Released for pre-order in November 2026, this open-source module adds wired Ethernet connectivity to Raspberry Pi Pico and ESP32 boards via a SPI interface. It is based on the WCH CH390 controller integrating MAC and PHY, with shipping scheduled from November 9, 2026.
+ Strengths
- Supports SPI modes 0 and 3 up to 72 MHz with 16KB SRAM for packet buffering.
- Compatible with Raspberry Pi Pico/Pico 2 and ESP32 chips (S3, C3, C5, C6) under ESPHome and Arduino IDE.
- Factory-programmed MAC address and advanced network features (Auto-MDIX, IPv4/IPv6, IEEE 802.3x flow control).
− Weaknesses
- Power supply strictly limited to 3.3V via UEXT/pUEXT connectors.
- Compact 50 x 21 mm form factor requiring specific connectors (10-pin UEXT or pUEXT).
- Retour d'expérience expert expert — expert-microdb
- Je viens de recevoir l'UEXT-CH390 sur une Pico 2. Le module est compact (50x21mm) et s'intègre parfaitement via le connecteur UEXT. J'ai utilisé le pilote RP2040 récent avec ESPHome 2026.9.0. La connexion SPI à 72 MHz est stable dès le premier essai. Le DHCP fonctionne immédiatement, tout comme la … — expert-microdb
- Merci pour ce retour. J'ai testé sur un ESP32-C6 via l'Arduino IDE. L'interface web locale est très pratique pour le debug initial. Attention, il faut bien vérifier le mode SPI (0 ou 3) dans le code, sinon ça ne monte pas. Les 16KB de SRAM gèrent bien les paquets en charge légère. Pour ceux qui att… — membre-forum
Community feedback and projects
- Discussions Reddit — UEXT-CH390 reddit.com
- Articles CNX Software — UEXT-CH390 cnx-software.com
Content not available yet.
Content not available yet.
Content not available yet.
- Not specified
- First connection and startup of the UEXT-CH390 debutant Guide pas à pas pour connecter physiquement le module Ethernet UEXT-CH390 à une carte compatible et vérifier son alimentation.
- Controlling GPIO and sensors with UEXT-CH390 debutant Apprenez à gérer les entrées/sorties numériques et analogiques via le bus UEXT tout en maintenant la connectivité Ethernet.
- Complete Use Case: Ethernet Connectivity for Raspberry Pi Pico debutant Connectez votre Raspberry Pi Pico à un réseau filaire stable en utilisant la carte UEXT-CH390 pour des projets IoT fiables.
- First connection and startup of the UEXT-CH390 intermediaire Guide étape par étape pour connecter le module Ethernet UEXT-CH390 à une carte compatible et vérifier sa communication initiale.
- Integrating GPIO with UEXT-CH390 Ethernet intermediaire Apprenez à combiner le contrôle des entrées-sorties locales et la communication réseau via le module UEXT-CH390.
- Connect a RP2040 to the network with UEXT-CH390 and ESPHome intermediaire Configurez une passerelle IoT filaire robuste sur Raspberry Pi Pico en utilisant le module Ethernet UEXT-CH390 et le firmware ESPHome.
- Advanced Startup: UEXT-CH390 and Raspberry Pi Pico avance Guide technique pour l'intégration du module Ethernet CH390 sur une carte RP2040 via SPI.
- Advanced GPIO I/O Management with UEXT-CH390 avance Intégrer des périphériques physiques (capteurs ou afficheurs) dans un système Ethernet filaire basé sur le module UEXT-CH390.
- Robust IoT Automation with UEXT-CH390 and ESPHome avance Déployez un nœud de capteurs autonome et fiable utilisant la connectivité Ethernet filaire du module UEXT-CH390.
Code library — examples written for this board
esp32-ch390-lwip-station.inoC++rp2040-pico-ch390-micropython.pyPythonesp32-ch390-udp-sensor-gateway.inoC++esp32-ch390-web-server-local.inoC++rp2040-ch390-iot-home-assistant.inoYAMLrp2040-lwip-ethernet-ping-6.inoC/C++ (Raspberry Pi Pico SDK)esp32-ethernet-http-server-7.inoC++ (Arduino/ESP-IDF)uext-ch390-low-power-wake-8.inoC (C Microcontrôleur génériquerp2040-uext-ch390-dhcp-client-9.inoC/C++ (Pico SDK)esp32s3-ch390-udp-discovery-10.inoC/C++ (ESP-IDF)