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 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

Advertisements
This entry was posted in ESP8266 and tagged , , , , , . Bookmark the permalink.

2 Responses to ESP8266: Get MAC address

  1. Parth says:

    In ESP32 can anybody help me of scanning BLE devices using Arduino IDE 1.8.3

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s