Personal tools

Setting MAC address on iMX6ULL

From SomLabs Wiki

Revision as of 21:09, 27 February 2023 by KrzysztofChojnowski (talk | contribs) (Created page with "{{PageHeader|Setting MAC address on iMX6ULL}} __toc__ This article describes a couple of methods to set the board MAC address and avoid the assignment its random value after...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Setting MAC address on iMX6ULL


This article describes a couple of methods to set the board MAC address and avoid the assignment its random value after device reboot.

Setting MAC address in systemd-networkd service files

The systemd-networkd interface configuration is stored in the *.network files within the /etc/systemd/network directory. To assign a MAC address to the chosen interface a new configuration file should be created (if it does not exist already). For the eth0 interface a file named 25-eth.network may be created with the following content:

[Match]
Name=eth0

[Link]
MACAddress=fe:51:11:6c:62:e8

[Network]
DHCP=ipv4

This file will assign the given address to the eth0 interface and enable the DHCP client for IPv4 address setting. More information may be found on the systemd-networkd service documentation.

U-Boot env variable

The default U-Boot configuration generates a random MAC address for the ETH interface. This behavior may be changed by adding a new env variable to the U-Boot. The environment variables are stored in one of the following files:

  • StarSBC-6ULL include/configs/starsbc_6ull.h
  • StarSOM-6ULL include/configs/starsom_6ull.h
  • VisionSOM-6ULL include/configs/visionsom_6ull.h

A new MAC address may be set by adding the following variable:

ethaddr=fe:51:11:6c:62:e8

Linux device tree file

A MAC address may be defined in the dtb file used by the Linux kernel. The address definition should be added in the device tree source in the following section:

&fec1 {
    local-mac-address = [ 70 b3 d5 1a 70 06 ];
}

This code configures given MAC address for the fec1 interface.

To prevent overwriting this value by u-boot, a random address generation should be disabled in the bootloader defconfig:

  • StarSBC-6ULL configs/starsbc_6ull_defconfig
  • StarSOM-6ULL configs/starsom_6ull_defconfig
  • VisionSOM-6ULL configs/visionsom_6ull_defconfig
CONFIG_NET_RANDOM_ETHADDR=n

Processor OTP memory

NOTE! The described operation may be performed only once and cannot be reversed!

The iMX6ULL processor has an OTP memory area that is used by default to store the permanent MAC address. The registers responsible for this are described in the Reference Manual:

  • OTP Bank4 Word2 (MAC Address) (OCOTP_MAC0)
  • OTP Bank4 Word3 (MAC Address) (OCOTP_MAC1)
  • OTP Bank4 Word4 (MAC Address) (OCOTP_MAC2)

This area may be written from the U-Boot console by executing the following commands. In this example the fe:51:11:6c:62:e8 address is stored in OTP:

fuse prog 4 2 0x116c62e8
fuse prog 4 3 0xfe51