Question about MAC address and ESP NOW

Hi, i have something that i don't understand.

i have two ESP32, a receiver and an emitter.

I found the mac adress of the receiver with this :

#include <WiFi.h>

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("ESP Board MAC Address:  ");
  Serial.println(WiFi.macAddress());
}
void loop(){} 

and i get this adress : 3C:61:05:0C:E4:8C

what i don't get is that in my code for the emitter, i must put a different address for it to work :

uint8_t broadcastAddress[] = {0x3C, 0x61, 0x05, 0x0C, 0xE4, 0x8D};

I have never modified any MAC address and my receiver serial output give me 3C:61:05:0C:E4:8C

It works so i'm happy but i would like to now why.

hi...
read THIS

1 Like

why? mac addresses are unique

Thank you @andreaber I didn't know that each communication mode had a modified MAC address.

From the espressif site :

Here is a program to find the different adresses :

#include <WiFi.h>
#include <esp_now.h>

void setup(){
  Serial.begin(115200);
  Serial.print("ESP Board BASE MAC Address:  ");
  Serial.println(WiFi.macAddress());
  
  uint8_t sta_mac[6];
  char buffer [6];
  esp_efuse_mac_get_default(sta_mac);

  esp_read_mac(sta_mac, ESP_MAC_WIFI_SOFTAP);

  Serial.print("SOFT AP MAC Address:  ");
  
  sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", sta_mac[0], sta_mac[1], sta_mac[2], sta_mac[3], sta_mac[4], sta_mac[5], sta_mac[6]);
  Serial.println(buffer);

  esp_read_mac(sta_mac, ESP_MAC_WIFI_STA);

  Serial.print("STATION MAC Address:  ");
  
  sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", sta_mac[0], sta_mac[1], sta_mac[2], sta_mac[3], sta_mac[4], sta_mac[5], sta_mac[6]);
  Serial.println(buffer);

  esp_read_mac(sta_mac, ESP_MAC_BT);

  Serial.print("BLUETOOTH MAC Address:  ");
  
  sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", sta_mac[0], sta_mac[1], sta_mac[2], sta_mac[3], sta_mac[4], sta_mac[5], sta_mac[6]);
  Serial.println(buffer);

  esp_read_mac(sta_mac, ESP_MAC_ETH);

  Serial.print("ETHERNET MAC Address:  ");
  
  sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", sta_mac[0], sta_mac[1], sta_mac[2], sta_mac[3], sta_mac[4], sta_mac[5], sta_mac[6]);
  Serial.println(buffer);
}
void loop(){} 

You should get an output like this :

ESP Board BASE MAC Address:  3C:61:05:0C:E4:8C
SOFT AP MAC Address:  3C:61:05:0C:E4:8D
STATION MAC Address:  3C:61:05:0C:E4:8C
BLUETOOTH MAC Address:  3C:61:05:0C:E4:8E
ETHERNET MAC Address:  3C:61:05:0C:E4:8F

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.