docs(esp_hw_support): document one-universal-MAC scheme and esp32s31 Four-option constraint

Add help text to the esp32h2/esp32h21/esp32h4 Kconfig.mac explaining
that these chips only consume one universally administered MAC address:
the IEEE 802.154 EUI-64 is derived from the base MAC and MAC_EXT, and
Bluetooth reuses the base MAC as-is (no BT offset, since there is no
Wi-Fi).

Add a matching 1-MAC derivation table and note to misc_system_api.rst
(EN and zh_CN) under a new `.. only:: esp32h2 or esp32h21 or esp32h4`
block, and exclude these targets from the generic 4/2 table.

Add an esp32s31-only note stating that the "Four" option may only be
used with a customer-provided custom base MAC range, since ESP32-S31
only provides two universally administered MAC addresses in eFuse.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jack
2026-07-06 19:00:01 +08:00
co-authored by Cursor
parent 431983a091
commit e3bc260178
5 changed files with 112 additions and 2 deletions
@@ -6,6 +6,14 @@ choice ESP32H2_UNIVERSAL_MAC_ADDRESSES
During initialization, MAC addresses for each network interface are generated or derived from a
single base MAC address.
ESP32-H2 provides a single universally administered MAC address in eFuse
(MAC_FACTORY, 6 bytes) plus the MAC_EXT field used to build the IEEE 802.154
EUI-64. Only one universal MAC address is consumed:
- IEEE 802.154 EUI-64 is derived from the base MAC and MAC_EXT
(base_mac[0:3] || MAC_EXT || base_mac[3:6], MAC_EXT defaults to ff:fe);
- Bluetooth reuses the base MAC as-is. The BT offset is not applied because
ESP32-H2 has no Wi-Fi, so no second universal MAC slot is required.
config ESP32H2_UNIVERSAL_MAC_ADDRESSES_ONE
bool "One"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_ONE
@@ -6,6 +6,14 @@ choice ESP32H21_UNIVERSAL_MAC_ADDRESSES
During initialization, MAC addresses for each network interface are generated or derived from a
single base MAC address.
ESP32-H21 provides a single universally administered MAC address in eFuse
(MAC_FACTORY, 6 bytes) plus the MAC_EXT field used to build the IEEE 802.154
EUI-64. Only one universal MAC address is consumed:
- IEEE 802.154 EUI-64 is derived from the base MAC and MAC_EXT
(base_mac[0:3] || MAC_EXT || base_mac[3:6], MAC_EXT defaults to ff:fe);
- Bluetooth reuses the base MAC as-is. The BT offset is not applied because
ESP32-H21 has no Wi-Fi, so no second universal MAC slot is required.
config ESP32H21_UNIVERSAL_MAC_ADDRESSES_ONE
bool "One"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_ONE
@@ -6,6 +6,14 @@ choice ESP32H4_UNIVERSAL_MAC_ADDRESSES
During initialization, MAC addresses for each network interface are generated or derived from a
single base MAC address.
ESP32-H4 provides a single universally administered MAC address in eFuse
(MAC_FACTORY, 6 bytes) plus the MAC_EXT field used to build the IEEE 802.154
EUI-64. Only one universal MAC address is consumed:
- IEEE 802.154 EUI-64 is derived from the base MAC and MAC_EXT
(base_mac[0:3] || MAC_EXT || base_mac[3:6], MAC_EXT defaults to ff:fe);
- Bluetooth reuses the base MAC as-is. The BT offset is not applied because
ESP32-H4 has no Wi-Fi, so no second universal MAC slot is required.
config ESP32H4_UNIVERSAL_MAC_ADDRESSES_ONE
bool "One"
select ESP_MAC_UNIVERSAL_MAC_ADDRESSES_ONE