This chapter describes common information and instructions of Ethernet on IoT Yocto, such as command to configure DHCP or static IP and so on.
But Ethernet on different platforms may have some platform-specific instructions or test results. For example, you will get different throughputs on different platforms.
Current IoT Yocto does not support changing permanent MAC address with
IoT Yocto v21.3 and later release uses
systemd to manage network settings in Linux OS, including MAC addresses.
systemd generates a temporary MAC address for the ethernet interface with following steps:
systemdgenerates a unique machine-id and store it in
/etc/machine-idduring boot up after whole image has been flashed.
systemduses this machine-id to calculate a unique MAC address.
After that, the unique MAC address will be applied to Ethernet driver. This is a kind of temporary MAC address which is calculated each time during system boot up.
To change the temporary MAC address and store it in the file system, please follow these steps:
Create a file
/etc/systemd/network/00-eth0.link. Systemd will use the setting in this file to override the generated address.
Edit the configuration file and insert the following configurations:
[Match] OriginalName=eth0 [Link] MACAddress=16:55:61:43:11:22
Please replace the example MAC address
16:55:61:43:11:22to the MAC address that you needed.
NetworkManager is enable by default. This service is registered as
NetworkManager.service (also known as
nmcli is the interactive tool for controlling the
User could use
nmcli to check connections managed by
nmcli -p connection show
You should see the following output if you’ve never touched network setting.
====================================== NetworkManager connection profiles ====================================== NAME UUID TYPE DEVICE -------------------------------------------------------------------------------> Wired connection 1 4080d986-b3c7-3601-a837-3ca6ee6b2ab2 ethernet eth0
Enable or Disable NetworkManager
If you want to use another network management service, it’s good to know how to enable and disable the
You need to stop
NetworkManager prior to disable it.
systemctl stop NetworkManager systemctl disable NetworkManager
If you want to switch back
NetworkManager, simply enable and then start the service.
systemctl enable NetworkManager systemctl start NetworkManager
Check the Status of NetworkManager
systemctl to check if the
NetworkManager is still running.
systemctl status NetworkManager
Check the output line which contains
Active: for the status of
For example, the output shows
NetworkManager is running.
The other output show the service has been stopped.
The configuration of
NetworkManager service is stored in file
You can check this file if any customization is required for this service.
Control Network Settings via Tool NMCLI
nmcli is the tool for configuring and controlling each network interface managed by
nmcli can enable or disable the network while keeps
You can set the following commands to enable or disable networking controlled by
NetworkManager. All interfaces managed by
NetworkManager are deactivated when networking is disabled.
For more detail, you can check the online manual of
nmcli networking off nmcli networking on
Configure Static IP
DHCP is enabled by default with
NetworkManager. If static IP is required, use
nmcli to modify connection setting.
For example, set IP
192.168.0.1 and netmask
255.255.255.0 with default gateway
"Wired connection 1" (eth0).
After that, reload
nmcli con mod "Wired connection 1" ip4 "192.168.0.1/24" gw4 192.168.0.1 systemctl reload NetworkManager
ip a to check if the static IP has been applied.
ip a2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 92:b2:7c:21:08:2d brd ff:ff:ff:ff:ff:ff inet 192.168.0.1/24 brd 192.168.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::3154:c53:c5e5:6d6f/64 scope link noprefixroute valid_lft forever preferred_lft forever
Check the new configuration has been stored in file
/etc/NetworkManager/system-connections/Wired connection 1.nmconnection
cat /etc/NetworkManager/system-connections/Wired\ connection\ 1.nmconnection
It should show the new IP value is assigned to variable
Ethernet on different platforms may have some platform-specific instructions or test results. For example, you will get different benchmark results on different platforms. Please find more details about difference of Ethernet on each paltform: