Olimex has listed the UEXT-CH390, a small open-source hardware module that adds wired Ethernet over SPI. It is built around WCH's CH390 controller. On its product page the board maker describes it as an "Ethernet SPI UEXT module with Home assistant support". The price listed on 6 November 2026 is EUR 4.95 for a single unit. The listing status is pre-order, with an expected availability date of 09 Nov 2026.
The board is aimed at a specific gap: microcontroller boards with no wired network port. Olimex names the Raspberry Pi Pico and Pico 2, and ESP32 variants such as the ESP32-S3, ESP32-C3, ESP32-C5 and ESP32-C6. CNX Software pitches it at wired IoT sensors and Home Assistant devices where Wi-Fi is unreliable or unwanted. The hardware is the simple part, though. Most of the interesting detail is in the software, and especially in what is and is not upstream.
The hardware
Olimex lists the feature set briefly: a "CH390 SPI to Ethernet 100MB controller", UEXT and pUEXT connectors, and dimensions of 50 x 21 mm (1.96 x 0.83 in).
CNX Software's write-up, published 6 November, gives more detail on the CH390 itself:
- Integrated 10/100 Mbps MAC and PHY, supporting 10BASE-T and 100BASE-TX with auto-negotiation
- Auto-MDIX
- 16KB SRAM packet buffer
- Factory-programmed MAC address
- IPv4/IPv6 TCP/UDP checksum generation and checking
- IEEE 802.3x flow control
- SPI modes 0 and 3, with clocks up to 72 MHz supported by the controller
The module takes 3.3V through either connector, per CNX. It has the standard 10-pin UEXT header plus a 10-pin pUEXT connector with 1.0 mm pitch.
One architectural point matters for anyone comparing it with WIZnet parts. CNX notes that, unlike Ethernet controllers with a hardware TCP/IP stack, the CH390 uses the host MCU to process network protocols. The CH390 handles MAC, PHY and buffering. CNX cites WIZnet's W6300 as an example of a controller with hardware TCP/IP offloading. With the CH390, the stack (lwIP in Olimex's Pico SDK example) and its RAM and CPU cost stay on your microcontroller. That may well be acceptable on an RP2040 or ESP32, but it is a real difference, not a footnote.
The RP2040 driver, and why it matters
The product page says the module is "supported natively by Arduino and ESPHome/Homeassistant", and lists Pico, Pico 2 and ESP32 modules as targets. That holds cleanly for ESP32. For the Raspberry Pi parts it needs some qualification.
The ESPHome Ethernet component documentation (the version shown at the time of reading was ESPHome 2026.10.2) lists CH390 as "SPI, ESP32 only". For RP2040 and RP2350, the SPI/PIO Ethernet chips that ESPHome documents are the W5100, W5500, W6100, W6300 and ENC28J60. The CH390 is not on that list.
According to CNX Software, Olimex filled the gap by developing its own RP2040 driver. The company tested it on an RP2040-PICO30U-16 development board, connected through a 100 mm pUEXT cable and running ESPHome 2026.9.0. CNX reports that the firmware supports:
- DHCP
- Automatic discovery in Home Assistant
- OTA firmware updates over Ethernet after the initial USB flashing
- A local web interface that works without an internet connection or Home Assistant
Olimex supplies a ready-to-flash UF2 firmware file for the RP2040-PICO30U-16, along with the source code and configuration files. There is also a separate Raspberry Pi Pico SDK example, using lwIP and a simple web server, for people who don't use ESPHome. The product page lists both a Pico SDK example and an ESPHome/Home Assistant example under software.
In practice, then: on an ESP32 the CH390 is a documented ESPHome Ethernet option. On an RP2040, today, it depends on Olimex's driver, and the board CNX reports testing is the RP2040-PICO30U-16. The ESPHome documentation does not list the CH390 for that platform. That may change if the work is upstreamed. Until then, an RP2040 build using this module follows Olimex's code, and ESPHome releases may not cover it.
A configuration gotcha on ESP32
ESPHome's documentation includes a note that will save some debugging time. The CH390 shares the Davicom DM9051's register map but reports its own vendor and product IDs. If you configure it as a DM9051, initialization fails with a wrong Vendor ID error. The correct config type is CH390, with clk_pin, mosi_pin, miso_pin, cs_pin and interrupt_pin. ESPHome gives the CH390's maximum SPI clock on ESP32 as 72MHz, which matches the controller limit CNX cites.
Licensing and sources
The OLIMEX/UEXT-CH390 GitHub repository describes the project as a "CH390 SPI 100MB Ethernet UEXT module with Arduino and ESPHome support". Each part has its own licence:
- Hardware: CERN Open Hardware Licence Version 2, Strongly Reciprocal. The README says the silkscreen credits to Bernardo Kastrup and Dean Belfield should remain.
- Software: MIT
- Documentation: CC BY-SA 3.0
The CERN OHL v2 Strongly Reciprocal licence generally requires that modified designs you distribute be released under the same terms. The product page links the schematic PDF and the KiCad source repository. It also links a user manual, the CH390 datasheet, and EU and UKCA declarations. The repository is very new: it had 2 commits and 1 star when we read it.
What It Means for Makers
Who it is for: people building ESPHome or Home Assistant nodes on ESP32-S3, -C3, -C5 or -C6 boards who want wired Ethernet without switching to a different MCU family. It may also suit Pico users who want an Ethernet add-on and are comfortable running a vendor-supplied driver, bearing in mind that CNX reports Olimex's testing on an RP2040 board. The module has UEXT and pUEXT connectors, so boards with matching headers can connect by cable.
What it replaces or enables: it is an alternative to W5500- and ENC28J60-based modules. The CH390 has a 100BASE-TX PHY and checksum handling, but no hardware TCP/IP stack, so the host MCU carries more of the network load than with a hardware-offload controller. For RP2040 ESPHome users the important point is that the W5500 and ENC28J60 are already documented upstream, while the CH390 currently goes through Olimex's own driver. Choose with that in mind.
Price and availability, as Olimex lists them on 6 November 2026: EUR 4.95 for one unit, EUR 4.70 each for 10–49 pieces, and EUR 4.46 each for 50–10000 pieces. The status is pre-order, with an expected availability date of 09 Nov 2026. The hardware design files, Pico SDK example and ESPHome example are already public on GitHub.