ESP8266: Get MAC address

The objective of this short post is to explain how to get the MAC address of the ESP8266.


Introduction

The objective of this short post is to explain how to get the MAC address of the ESP8266.

Explaining in detail what is a MAC address is outside of the scope of this post. But, just as a quick explanation, the MAC address is a unique value associated with a network adapter [1]. So, MAC addresses are hardware addresses that uniquely identify a network adapter [1].

Taking in consideration the OSI model, MAC addressing works at a layer (layer 2) lower than IP addressing (layer 3) [1].

In terms of format, MAC addresses are 48-bit in length [2] and typically represented in hexadecimal format, with each two hexadecimal digits separated by “:”.

The first 24 bits of the MAC are the identifier number of the manufacturer and the second 24 bits are a serial number assigned by the manufacturer [2].

You can read more about MAC addresses here.

The tests were performed using a NodeMCU board, a very cheap and easy to use ESP8266 board. The board can be bought at eBay here.


The code

The code for this tutorial is very simple, since we already have a function to get the MAC of the ESP8266.

Since we only want to print the MAC, we will do all the coding on the setup function and leave the main loop empty.

First, we include the ESP8266WiFi library, which we typically use to access all the functionality needed for the ESP8266 to connect to a WiFi network. Then, in our setup function, we open the serial port, so we can print the output of our program.

To get the MAC dress of the ESP8266, we simply call the macAdress method on the WiFi global variable, which will return the MAC address in the hexadecimal format mentioned early.

You can check the full working code bellow, which also includes the empty loop function.

#include <ESP8266WiFi.h>

void setup(){

   Serial.begin(115200);
   delay(500);

   Serial.println();
   Serial.print("MAC: ");
   Serial.println(WiFi.macAddress());

}

void loop(){}


Testing the code

To test the code, just upload it to the ESP8266 and open the Arduino IDE console. You should get something similar to figure 1.

ESP8266 Get MAC

Figure 1 – Output of the function to get the MAC of the ESP8266.

Just to confirm what was explained in the introduction section, we can check if the first 24 bits of the MAC correspond to the manufacturer of the ESP8266, which is Espressif. You can check yours here. It should indicate Espressif, as shown i figure 2.

ESP8266 MAC vendor lookup

Figure 2 – Result of vendor lookup from the ESP8266 MAC.


References

[1] https://people.richland.edu/dkirby/141macaddress.htm

[2] https://www.iplocation.net/mac-address


Technical details

ESP8266 libraries: v2.3.0

23 thoughts on “ESP8266: Get MAC address”

  1. Hi, you are making great tutorials for the ESP32 and I like to read them.
    Maybe you can create a/some tutorials for the efuse?
    There isn’t any tutorial for Arduino and there isn’t any library for it. Also the READ/WRITE protection is not really documented, so I don’t know what happens if I read-protect a block… Can I still read it if I upload a sketch? How can I read this block if I protect it from read?

    I opened an Issue on GitHub:
    https://github.com/espressif/arduino-esp32/issues/2556

    But I see that it is something that is not used much on the ESP (I think). But since there isn’t any tutorial – only the python script tutorial on the wiki – maybe a new one will be helpful for many users 🙂

  2. Hi, you are making great tutorials for the ESP32 and I like to read them.
    Maybe you can create a/some tutorials for the efuse?
    There isn’t any tutorial for Arduino and there isn’t any library for it. Also the READ/WRITE protection is not really documented, so I don’t know what happens if I read-protect a block… Can I still read it if I upload a sketch? How can I read this block if I protect it from read?
    I opened an Issue on GitHub:
    https://github.com/espressif/arduino-esp32/issues/2556
    But I see that it is something that is not used much on the ESP (I think). But since there isn’t any tutorial – only the python script tutorial on the wiki – maybe a new one will be helpful for many users 🙂

Leave a Reply

Discover more from techtutorialsx

Subscribe now to keep reading and get access to the full archive.

Continue reading