An IEEE EUI-64 address consists of two parts:

* Company ID - a 24-bit MA-L (MAC Address Block Large), formerly called OUI (Organizationally Unique Identifier)
* Extension identifier - a 40-bit device unique identifier

You can configure the EUI-64 for a device in the following ways:

Use the default
  By default, the company ID is set to Nordic Semiconductor's MA-L (``f4-ce-36``).
  The extension identifier is set to the DEVICEID from the factory information configuration registers (FICR).

Replace the company ID
  You can enable :kconfig:option:`CONFIG_IEEE802154_VENDOR_OUI_ENABLE` to replace Nordic Semiconductor's company ID with your own company ID.
  Specify your company ID in :kconfig:option:`CONFIG_IEEE802154_VENDOR_OUI`.

  The extension identifier is set to the default, namely the DEVICEID from FICR.

Replace the full EUI-64
  You can provide the full EUI-64 value by programming certain user information configuration registers (UICR).
  For nRF52 Series devices, the CUSTOMER registers block is used.
  For nRF53 Series devices, the OTP registers block is used.

  To use the EUI-64 value from the UICR, enable :kconfig:option:`CONFIG_IEEE802154_NRF5_UICR_EUI64_ENABLE` and set :kconfig:option:`CONFIG_IEEE802154_NRF5_UICR_EUI64_REG` to the base of the two consecutive registers that contain your EUI-64 value.

  The following example shows how to replace the full EUI-64 on an nRF52840 device:

  1. Enable :kconfig:option:`CONFIG_IEEE802154_NRF5_UICR_EUI64_ENABLE`.
  #. Specify the offset for the UICR registers in :kconfig:option:`CONFIG_IEEE802154_NRF5_UICR_EUI64_REG`.
     This example uses UICR->CUSTOMER[0] and UICR->CUSTOMER[1], which means that you can keep the default value ``0``.
  #. Build and program your application erasing the whole memory (replace *serial_number* with the serial number of your debugger):

     .. parsed-literal::
      :class: highlight

       west build -b nrf52840dk/nrf52840 -p always
       west flash --snr *serial_number* --erase

  #. Program the registers UICR->CUSTOMER[0] and UICR->CUSTOMER[1] with your EUI-64 value (replace *serial_number* with the serial number of your debugger):

     .. parsed-literal::
      :class: highlight

       nrfjprog --snr *serial_number* --memwr 0x10001080 --val 0x11223344
       nrfjprog --snr *serial_number* --memwr 0x10001084 --val 0x55667788
       nrfjprog --snr *serial_number* --reset

     If you used a different value for :kconfig:option:`CONFIG_IEEE802154_NRF5_UICR_EUI64_REG`, you must use different register addresses.
