An explanation on how mac addresses are derived on the ESP32:
https://docs.espressif.com/projects/esp … dress.html
An explanation for how many universal (unique) mac addresses are allocated to each ESP32
https://docs.espressif.com/projects/esp … ystem.html
Read MAC Address
8 bytes are stroed in total. 6 bytes for MAC-48, 8 bytes for EUI-64
#include "esp_mac.h"
//**********************************************************
//**********************************************************
//********** READ THIS DEVICES UNIQUE MAC ADDRESS **********
//**********************************************************
//**********************************************************
//MacAddress
// 8 byte array. (6 bytes for MAC-48, 8 bytes for EUI-64)
//Returns:
// 1 = success
// 0 = failed
int ReadFactorySetMacAddress (uint8_t *MacAddress)
{
if (esp_efuse_mac_get_default(MacAddress) != ESP_OK)
{
return(1);
}
else
{
MacAddress[0] = 0;
MacAddress[1] = 0;
MacAddress[2] = 0;
MacAddress[3] = 0;
MacAddress[4] = 0;
MacAddress[5] = 0;
MacAddress[6] = 0;
MacAddress[7] = 0;
return(0);
}
}
Display device MAC address to console
#include "esp_mac.h"
uint8_t MacAddress[8];
if (esp_efuse_mac_get_default(MacAddress) != ESP_OK)
ESP_LOGI(TAG, "Unable to read MAC address");
else
ESP_LOGI(TAG, "MAC address: 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X", (uint16_t)MacAddress[0], (uint16_t)MacAddress[1], (uint16_t)MacAddress[2], (uint16_t)MacAddress[3], (uint16_t)MacAddress[4], (uint16_t)MacAddress[5], (uint16_t)MacAddress[6], (uint16_t)MacAddress[7]);
