There are several ESP32 ethernet PHY options available in the market, thanks to the native RMII interface and high speed SPI ports that the ESP32 offers.
However, firmware and library support for ethernet PHY chips is extremely important and can save you countless hours of firmware development.
Here are notes on what ethernet phy chips are supported by ESP32 Arduino releases (and therefore, definitely supported by the ESP-IDF as well).
ESP32 Arduino and ESP-IDF Version Limitations
This article uses ESP-IDF v.5.0 (latest stable at the time of writing) and ESP32 Arduino v.2.0.5 (within Arduino IDE 1).
If you are using an older or newer release, support may or may not be the same. Please double-check before finalizing your BoM!
Microchip LAN8720 [Cost @100 pcs: $1.8]
The Microchip LAN8720 is a very common chipset used by most commercially available ESP32 hardware and development boards out there. Support for LAN8720 is good within almost all releases of Arduino and ESP-IDF as it was one of the very first ethernet PHY chips to be supported by the ESP32 development environment.
We have used LAN8720 in several of our ESP32 PCB designs and there is an ESP32 LAN8720 schematic design available for your reference. LAN8720 is also being used in our ESP32 cellular Gateway design (Gen.1).
Wiznet IP101 [Cost @100 pcs: $1.4]
Wiznet IP101 is supported by several recent ESP32 Arduino releases. This chip is a good pick but I do not see an obvious reason for picking this over the LAN8720. Stock status of the IP101 is questionable in my experience.
Note that the IP101 datasheet provides pad pinouts for its silicon die. This does sound like Wiznet is open to supplying IP101 in silicon die format – which is extremely useful for making ultra small ESP32 ethernet PCB designs that can fit inside the ethernet connector itself.
Texas Instruments TLK110 [no stock!]
I did not find stock on any reliable vendor site at the time of writing this article. This is probably not a good idea if you are looking to design a new product.
Also, I have never seen this chip being used in any popular hardware design in recent years.
Realtek RTL8201 [Cost @100 pcs: $0.24]
The Realtek RTL8201 seems like a very good option for designing ESP32 ethernet PHY. The chip has seen decades of use and is very similar to the LAN8720 in terms of how it functions. Using a 25MHz crystal for the PHY clock produces the lowest part cost possible for ESP32 ethernet designs.
Power consumption of this chip is almost the same as the LAN8720 (~50mA in 100mbps full duplex mode).
I have never used this chip before, but I look forward to trying this out soon. The results may be covered in a future blog.
Please drop a note in the Quick Contact form (sidebar) if you would like updates on this.
Texas Instruments DP83848 [Cost @100 pcs: $1.0]
The DP83848 is yet another ESP32 ethernet phy option supported by Arduino and ESP-IDF.
Personally, I would not consider this option for typical applications unless there is a strong reason to pick this part. The chip has a large pin count and draws higher current than LAN8720 or RTL8201.
Davicom DM9051 [Cost @100 pcs: $2.3]
This is one of those SPI to ethernet bridge ICs that make your life easier with low GPIO usage. The ESP32 RMII PHY interface takes up many GPIO pins. SPI, in comparison, can provide ethernet functionality using less than 6 ESP32 GPIOs. There is no major loss in terms of speed.
However, given popularity of this chip, I would recommend W5500 instead, even though it does not seem to be officially supported within the ESP32 Arduino ethernet driver files.
Microchip KSZ8041 [Cost @100 pcs: $4.8]
I do not see a reason to use this given the alternatives.
Microchip KSZ8081 [Cost @100 pcs: $2.0]
Again, this chip makes the list because it is supported. I do not see a great reason to use this.
Wiznet W5500 [Cost @100 pcs: $2.0]
This is a solid and extremely popular ESP32 ethernet interface option if you are looking to design using SPI interface.
However, I did not spot dedicated source code that adds support for this chip within current ESP32 Arduino release. Please let me know if I am missing something!
Here is one recent external reference where someone documents using W5500 with ESP32 using Arduino IDE. I am sure the W5500 is well-supported and will post an update here after trying this chip out.
Conclusion - ESP32 ethernet PHY options
ESP32 ethernet systems are easy to design and there are a ton of options available that are natively supported by Espressif.
My default choice is still the LAN8720 for now. However, I look forward to trying out RTL8201 and W5500. W5500 is a potential candidate for our ESP32 cellular Gateway design (generation 2) because we need to save some ESP32 GPIOs.
Feel free to drop a comment if you would like to see updates!
Feel free to ask away via the Quick Contact form in the sidebar, or leave a comment below.
- Initial Release: 21 November 2022