Site icon techtutorialsx

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.

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.

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

Exit mobile version