mirror of
https://github.com/esphome/esphome.git
synced 2026-09-22 04:28:43 +00:00
[rp2040] Fix get_mac_address_raw to use ethernet MAC when WiFi unavailable
On RP2040, get_mac_address_raw() only queried WiFi.macAddress(). When ethernet is configured without WiFi, the MAC address was left uninitialized, causing get_mac_address() and get_mac_address_pretty() to return all zeros. This affects device identification (API, mDNS, unique ID). Unlike ESP32 which reads from eFuse (always available regardless of network interface), RP2040 must query the actual network driver. Fall back to ethernet::global_eth_component->get_eth_mac_address_raw() when USE_ETHERNET is defined and USE_WIFI is not.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <pico/cyw43_arch.h> // For cyw43_arch_lwip_begin/end (LwIPLock)
|
||||
#elif defined(USE_ETHERNET)
|
||||
#include <LwipEthernet.h> // For ethernet_arch_lwip_begin/end (LwIPLock)
|
||||
#include "esphome/components/ethernet/ethernet_component.h"
|
||||
#endif
|
||||
#include <hardware/structs/rosc.h>
|
||||
#include <hardware/sync.h>
|
||||
@@ -71,6 +72,8 @@ LwIPLock::~LwIPLock() {}
|
||||
void get_mac_address_raw(uint8_t *mac) { // NOLINT(readability-non-const-parameter)
|
||||
#ifdef USE_WIFI
|
||||
WiFi.macAddress(mac);
|
||||
#elif defined(USE_ETHERNET)
|
||||
ethernet::global_eth_component->get_eth_mac_address_raw(mac);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user