mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	[wifi] Replace `USE_ESP32_IGNORE_EFUSE_MAC_CRC with IDF's CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR` (#7502)
				
					
				
			This commit is contained in:
		| @@ -53,6 +53,7 @@ from .const import (  # noqa | ||||
|     KEY_SDKCONFIG_OPTIONS, | ||||
|     KEY_SUBMODULES, | ||||
|     KEY_VARIANT, | ||||
|     VARIANT_ESP32, | ||||
|     VARIANT_FRIENDLY, | ||||
|     VARIANTS, | ||||
| ) | ||||
| @@ -376,6 +377,15 @@ def final_validate(config): | ||||
|             f"Please specify {CONF_FLASH_SIZE} within esp32 configuration only" | ||||
|         ) | ||||
|  | ||||
|     if ( | ||||
|         config[CONF_VARIANT] != VARIANT_ESP32 | ||||
|         and CONF_ADVANCED in (conf_fw := config[CONF_FRAMEWORK]) | ||||
|         and CONF_IGNORE_EFUSE_MAC_CRC in conf_fw[CONF_ADVANCED] | ||||
|     ): | ||||
|         raise cv.Invalid( | ||||
|             f"{CONF_IGNORE_EFUSE_MAC_CRC} is not supported on {config[CONF_VARIANT]}" | ||||
|         ) | ||||
|  | ||||
|     return config | ||||
|  | ||||
|  | ||||
| @@ -405,7 +415,7 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All( | ||||
|                     cv.Optional( | ||||
|                         CONF_IGNORE_EFUSE_CUSTOM_MAC, default=False | ||||
|                     ): cv.boolean, | ||||
|                     cv.Optional(CONF_IGNORE_EFUSE_MAC_CRC, default=False): cv.boolean, | ||||
|                     cv.Optional(CONF_IGNORE_EFUSE_MAC_CRC): cv.boolean, | ||||
|                 } | ||||
|             ), | ||||
|             cv.Optional(CONF_COMPONENTS, default=[]): cv.ensure_list( | ||||
| @@ -532,8 +542,8 @@ async def to_code(config): | ||||
|  | ||||
|         if conf[CONF_ADVANCED][CONF_IGNORE_EFUSE_CUSTOM_MAC]: | ||||
|             cg.add_define("USE_ESP32_IGNORE_EFUSE_CUSTOM_MAC") | ||||
|         if conf[CONF_ADVANCED][CONF_IGNORE_EFUSE_MAC_CRC]: | ||||
|             cg.add_define("USE_ESP32_IGNORE_EFUSE_MAC_CRC") | ||||
|         if conf[CONF_ADVANCED].get(CONF_IGNORE_EFUSE_MAC_CRC): | ||||
|             add_idf_sdkconfig_option("CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR", True) | ||||
|             if (framework_ver.major, framework_ver.minor) >= (4, 4): | ||||
|                 add_idf_sdkconfig_option( | ||||
|                     "CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE", False | ||||
|   | ||||
| @@ -131,16 +131,10 @@ void event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, voi | ||||
|  | ||||
| void WiFiComponent::wifi_pre_setup_() { | ||||
|   uint8_t mac[6]; | ||||
| #ifdef USE_ESP32_IGNORE_EFUSE_MAC_CRC | ||||
|   get_mac_address_raw(mac); | ||||
|   set_mac_address(mac); | ||||
|   ESP_LOGV(TAG, "Use EFuse MAC without checking CRC: %s", get_mac_address_pretty().c_str()); | ||||
| #else | ||||
|   if (has_custom_mac_address()) { | ||||
|     get_mac_address_raw(mac); | ||||
|     set_mac_address(mac); | ||||
|   } | ||||
| #endif | ||||
|   esp_err_t err = esp_netif_init(); | ||||
|   if (err != ERR_OK) { | ||||
|     ESP_LOGE(TAG, "esp_netif_init failed: %s", esp_err_to_name(err)); | ||||
|   | ||||
| @@ -662,13 +662,9 @@ void get_mac_address_raw(uint8_t *mac) {  // NOLINT(readability-non-const-parame | ||||
|   static const uint8_t esphome_host_mac_address[6] = USE_ESPHOME_HOST_MAC_ADDRESS; | ||||
|   memcpy(mac, esphome_host_mac_address, sizeof(esphome_host_mac_address)); | ||||
| #elif defined(USE_ESP32) | ||||
| #if defined(CONFIG_SOC_IEEE802154_SUPPORTED) || defined(USE_ESP32_IGNORE_EFUSE_MAC_CRC) | ||||
| #if defined(CONFIG_SOC_IEEE802154_SUPPORTED) | ||||
|   // When CONFIG_SOC_IEEE802154_SUPPORTED is defined, esp_efuse_mac_get_default | ||||
|   // returns the 802.15.4 EUI-64 address. Read directly from eFuse instead. | ||||
|   // On some devices, the MAC address that is burnt into EFuse does not | ||||
|   // match the CRC that goes along with it. For those devices, this | ||||
|   // work-around reads and uses the MAC address as-is from EFuse, | ||||
|   // without doing the CRC check. | ||||
|   // returns the 802.15.4 EUI-64 address, so we read directly from eFuse instead. | ||||
|   if (has_custom_mac_address()) { | ||||
|     esp_efuse_read_field_blob(ESP_EFUSE_MAC_CUSTOM, mac, 48); | ||||
|   } else { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user