# STM32Ethernet
**Repository Path**: mirrors_stm32duino/STM32Ethernet
## Basic Information
- **Project Name**: STM32Ethernet
- **Description**: Arduino library to support Ethernet for STM32 based board
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-26
- **Last Updated**: 2026-02-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# STM32 Ethernet Library for Arduino
With an STM32 board with Ethernet compatibility, this library allows a STM32
board (NUCLEO, DISCOVERY, ...) to connect to the internet.
This library follows the Ethernet API from Arduino.
For more information about it please visit: http://www.arduino.cc/en/Reference/Ethernet
## Dependency
This library is based on LwIP, a Lightweight TCP/IP stack, available here:
http://git.savannah.gnu.org/cgit/lwip.git
The LwIP has been ported as Arduino library and is available thanks Arduino Library Manager.
Source: https://github.com/stm32duino/LwIP
## Configuration
The LwIP has several user defined options, which is specified from within the `lwipopts.h` file.
This library provides a default user defined options file named `lwipopts_default.h`.
User can provide his own defined options at sketch level by adding his configuration in a file named `STM32lwipopts.h` or
extend the default one by adding some extra configuration in a file named `lwipopts_extra.h`.
## New alternative init procedure **!!!**
There are alternative inits of the Ethernet interface with following orders:
Ethernet.begin();
Ethernet.begin(ip);
Ethernet.begin(ip, subnet);
Ethernet.begin(ip, subnet, gateway);
Ethernet.begin(ip, subnet, gateway, dns);
This is more logical. A MAC address is no more needed and will retrieved internally by the mbed MAC address!
You can get the MAC address with following function, this must be done after Ethernet.Begin()
uint8_t *mac;
Ethernet.begin();
Ethernet.MACAddress(mac);
You can also set a new user based MAC address, this must be done before Ethernet.begin()
uint8_t newMAC[] = {0x00, 0x80, 0xE1, 0x01, 0x01, 0x01};
Ethernet.setMACAddress(newMAC);
Ethernet.begin();
## Note
`EthernetClass::maintain()` in no more required to renew IP address from DHCP.
It is done automatically by the LwIP stack in a background task.
An Idle task is required by the LwIP stack to handle timer and data reception.
This idle task is called inside a timer callback each 1 ms by the
function `stm32_eth_scheduler()`.
A `DEFAULT_ETHERNET_TIMER` is set in the library to `TIM14`.
`DEFAULT_ETHERNET_TIMER` can be redefined in the core variant.
Be careful to not lock the system in a function which disabling IRQ.
Call `Ethernet::schedule()` performs an update of the LwIP stack.
## Wiki
You can find information at https://github.com/stm32duino/Arduino_Core_STM32/wiki/STM32Ethernet