设置、查询 ESP32 设备的 MAC 地址有多种方式,如下:
1 使用 AT 指令来设置、查询 ESP32 设备的 MAC 地址
1.1 使用 AT 指令设置、查询 Wi-Fi Station 模式的 MAC 地址
1.2 使用 AT 指令设置、查询 Wi-Fi SoftAP 模式的 MAC 地址
1.3 使用 AT 指令设置、查询 Ethernet 的 MAC 地址
1.4 使用 AT 指令设置、查询 BLE(BT)模式 的 MAC 地址
1.5 使用 ESP32 设备当前模式下的 MAC 地址
只有当 ESP32 设备获取到有效接口信息后,才能查询到它的 MAC 地址
- 使用
AT+CIFSR
指令来查询
ESP32 设备当前模式下的 MAC 地址。
2 使用 esptool 工具来设置、查询 ESP32 设备的 MAC 地址
可先使用 espefuse.py -h
命令来查询相关命令的使用方法,如下:
2.1 使用 esptool 工具来查询
ESP32 设备默认出厂写入 EFUSE BLOCK0
中的 MAC 地址
-
使用
espefuse.py summary
命令可查询 ESP32 设备默认出厂写入 EFUSE BLOCK0
中的 MAC 地址,如下:
- 查询到的
EFUSE BLOCK0
中的 MAC 地址为 base_mac
, base_mac
默认是 Wi-Fi Station
模式的 MAC 地址。根据 Wi-Fi Station
模式的 MAC 地址可获取 Wi-Fi SoftAP 模式、蓝牙模式、以太网的 MAC 地址。可参考 MAC Address 说明。如下:
2.2 使用 esptool 工具向 EFUSE BLOCK3
中设置
用户自定义的 MAC 地址
- 使用
espefuse.py burn_custom_mac 12:22:33:44:55:66
命令可向 EFUSE BLOCK3
中设置用户自定义的 MAC 地址
,如下:
注意:EFUSE BLOCK3
的 Bit 1
不能为 1
2.3 使用 esptool 工具查询
EFUSE BLOCK3
中设置的用户自定义的 MAC 地址
-
使用
espefuse.py get_custom_mac
命令可查询
用户自定义设置的 EFUSE BLOCK3
中的 MAC 地址,如下:
-
也可以使用
espefuse.py summary
命令来查询
用户自定义设置的 EFUSE BLOCK3
中的 MAC 地址,如下:
3 使用相关 API 来设置、查询 Wi-Fi 的 MAC 地址
-
使用 esp_base_mac_addr_set(uint8_t *mac); 设置用户自定义的 MAC 地址(base_mac)到 EFUSE BLOCK3
中,默认为 WI-Fi STA 的 MAC 地址。例如:
“ esp_base_mac_addr_set(12:22:33:44:55:FF)“,
-
对应的是:
> STA(FF)
> AP(FF + 1 -> 00)
> BT(FF + 2 -> 01)
> ETH(FF + 3 -> 02)`(末位不进位)`
注:可参考 MAC Address 说明。如下:
4 使用 NVS 写入 MAC 地址
【MAC 地址】
- ESP32 模组出厂会将设备的 MAC 基地址(默认也是 Wi-Fi STA MAC 地址)写到
EFUSE BLOCK0
中(即:通过扫描模组二维码获取的是基地址)
- MAC 基地址加 “1” 即为 Wi-Fi AP MAC 地址;MAC 基地址加“2”即为蓝牙的 MAC 地址;MAC 基地址加“3”即为 Ethernet 的 MAC 地址。
- MAC 地址是全球唯一的,且每个批次都不相同。