Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 595dc01

Browse filesBrowse files
dpnebertP-R-O-C-H-YSuGlider
authored
Added example 'get mac address' (espressif#8618)
* Example sketch prints MAC for different interfaces Interfaces described in documenation: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/misc_system_api.html#mac-address * Update README.md to include 'MacAddress' * Add files via upload * Delete libraries/ESP32/examples/MacAddress/GetMacAddress.ino * Delete libraries/ESP32/examples/MacAddress/GetMacAddress/GetMacAddress.ino * Delete libraries/ESP32/examples/MacAddress/GetMacAddress/MacAddress directory * Add files via upload * Add files via upload * Adds necessary MAC header file * Reverting - moving to the sketch * Adds include with esp_mac_type_t values --------- Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com> Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
1 parent 00a9579 commit 595dc01
Copy full SHA for 595dc01

File tree

Expand file treeCollapse file tree

2 files changed

+88
-0
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+88
-0
lines changed
+87Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/*
2+
* GetMacAddress
3+
*
4+
* This sketch prints out the MAC addresses for different interfaces.
5+
*
6+
* Written by: Daniel Nebert
7+
*
8+
* The first printed MAC address is obtained by calling 'esp_efuse_mac_get_default'
9+
* (https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32/api-reference/system/misc_system_api.html#_CPPv425esp_efuse_mac_get_defaultP7uint8_t)
10+
* which returns base MAC address which is factory-programmed by Espressif in EFUSE.
11+
*
12+
* The remaining printed MAC addresses is obtained by calling 'esp_read_mac'
13+
* (https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32/api-reference/system/misc_system_api.html#_CPPv412esp_read_macP7uint8_t14esp_mac_type_t)
14+
* and passing in the 'esp_mac_type_t' type.
15+
* (https://docs.espressif.com/projects/esp-idf/en/release-v5.1/esp32/api-reference/system/misc_system_api.html#esp__mac_8h_1a1b19aca597277a2179682869c140477a)
16+
*
17+
18+
esp_mac_type_t values:
19+
20+
ESP_MAC_WIFI_STA - MAC for WiFi Station (6 bytes)
21+
ESP_MAC_WIFI_SOFTAP - MAC for WiFi Soft-AP (6 bytes)
22+
ESP_MAC_BT - MAC for Bluetooth (6 bytes)
23+
ESP_MAC_ETH - MAC for Ethernet (6 bytes)
24+
ESP_MAC_IEEE802154 - if CONFIG_SOC_IEEE802154_SUPPORTED=y, MAC for IEEE802154 (8 bytes)
25+
ESP_MAC_BASE - Base MAC for that used for other MAC types (6 bytes)
26+
ESP_MAC_EFUSE_FACTORY - MAC_FACTORY eFuse which was burned by Espressif in production (6 bytes)
27+
ESP_MAC_EFUSE_CUSTOM - MAC_CUSTOM eFuse which was can be burned by customer (6 bytes)
28+
ESP_MAC_EFUSE_EXT - if CONFIG_SOC_IEEE802154_SUPPORTED=y, MAC_EXT eFuse which is used as an extender for IEEE802154 MAC (2 bytes)
29+
30+
*/
31+
32+
#include "esp_mac.h" // required - exposes esp_mac_type_t values
33+
34+
void setup() {
35+
36+
Serial.begin(115200);
37+
while(!Serial) { delay( 100 ); }
38+
39+
Serial.println("Interface\t\t\t\t\t\tMAC address (6 bytes, 4 universally administered, default)");
40+
41+
Serial.print("Wi-Fi Station (using 'esp_efuse_mac_get_default')\t");
42+
Serial.println(getDefaultMacAddress());
43+
44+
Serial.print("WiFi Station (using 'esp_read_mac')\t\t\t");
45+
Serial.println(getInterfaceMacAddress(ESP_MAC_WIFI_STA));
46+
47+
Serial.print("WiFi Soft-AP (using 'esp_read_mac')\t\t\t");
48+
Serial.println(getInterfaceMacAddress(ESP_MAC_WIFI_SOFTAP));
49+
50+
Serial.print("Bluetooth (using 'esp_read_mac')\t\t\t");
51+
Serial.println(getInterfaceMacAddress(ESP_MAC_BT));
52+
53+
Serial.print("Ethernet (using 'esp_read_mac')\t\t\t\t");
54+
Serial.println(getInterfaceMacAddress(ESP_MAC_ETH));
55+
}
56+
57+
void loop() { /* Nothing in loop */ }
58+
59+
String getDefaultMacAddress() {
60+
61+
String mac = "";
62+
63+
unsigned char mac_base[6] = {0};
64+
65+
if(esp_efuse_mac_get_default(mac_base) == ESP_OK) {
66+
char buffer[18]; // 6*2 characters for hex + 5 characters for colons + 1 character for null terminator
67+
sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", mac_base[0], mac_base[1], mac_base[2], mac_base[3], mac_base[4], mac_base[5]);
68+
mac = buffer;
69+
}
70+
71+
return mac;
72+
}
73+
74+
String getInterfaceMacAddress(esp_mac_type_t interface) {
75+
76+
String mac = "";
77+
78+
unsigned char mac_base[6] = {0};
79+
80+
if(esp_read_mac(mac_base, interface) == ESP_OK) {
81+
char buffer[18]; // 6*2 characters for hex + 5 characters for colons + 1 character for null terminator
82+
sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", mac_base[0], mac_base[1], mac_base[2], mac_base[3], mac_base[4], mac_base[5]);
83+
mac = buffer;
84+
}
85+
86+
return mac;
87+
}

‎libraries/README.md

Copy file name to clipboardExpand all lines: libraries/README.md
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ arduino-esp32 includes libraries for Arduino compatibility along with some objec
3333
* GPIO
3434
* HallSensor
3535
* I2S
36+
* MacAddress
3637
* ResetReason
3738
* RMT
3839
* Time

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.