mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +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_SDKCONFIG_OPTIONS, | ||||||
|     KEY_SUBMODULES, |     KEY_SUBMODULES, | ||||||
|     KEY_VARIANT, |     KEY_VARIANT, | ||||||
|  |     VARIANT_ESP32, | ||||||
|     VARIANT_FRIENDLY, |     VARIANT_FRIENDLY, | ||||||
|     VARIANTS, |     VARIANTS, | ||||||
| ) | ) | ||||||
| @@ -376,6 +377,15 @@ def final_validate(config): | |||||||
|             f"Please specify {CONF_FLASH_SIZE} within esp32 configuration only" |             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 |     return config | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -405,7 +415,7 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All( | |||||||
|                     cv.Optional( |                     cv.Optional( | ||||||
|                         CONF_IGNORE_EFUSE_CUSTOM_MAC, default=False |                         CONF_IGNORE_EFUSE_CUSTOM_MAC, default=False | ||||||
|                     ): cv.boolean, |                     ): 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( |             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]: |         if conf[CONF_ADVANCED][CONF_IGNORE_EFUSE_CUSTOM_MAC]: | ||||||
|             cg.add_define("USE_ESP32_IGNORE_EFUSE_CUSTOM_MAC") |             cg.add_define("USE_ESP32_IGNORE_EFUSE_CUSTOM_MAC") | ||||||
|         if conf[CONF_ADVANCED][CONF_IGNORE_EFUSE_MAC_CRC]: |         if conf[CONF_ADVANCED].get(CONF_IGNORE_EFUSE_MAC_CRC): | ||||||
|             cg.add_define("USE_ESP32_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): |             if (framework_ver.major, framework_ver.minor) >= (4, 4): | ||||||
|                 add_idf_sdkconfig_option( |                 add_idf_sdkconfig_option( | ||||||
|                     "CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE", False |                     "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_() { | void WiFiComponent::wifi_pre_setup_() { | ||||||
|   uint8_t mac[6]; |   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()) { |   if (has_custom_mac_address()) { | ||||||
|     get_mac_address_raw(mac); |     get_mac_address_raw(mac); | ||||||
|     set_mac_address(mac); |     set_mac_address(mac); | ||||||
|   } |   } | ||||||
| #endif |  | ||||||
|   esp_err_t err = esp_netif_init(); |   esp_err_t err = esp_netif_init(); | ||||||
|   if (err != ERR_OK) { |   if (err != ERR_OK) { | ||||||
|     ESP_LOGE(TAG, "esp_netif_init failed: %s", esp_err_to_name(err)); |     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; |   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)); |   memcpy(mac, esphome_host_mac_address, sizeof(esphome_host_mac_address)); | ||||||
| #elif defined(USE_ESP32) | #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 |   // 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. |   // returns the 802.15.4 EUI-64 address, so we 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. |  | ||||||
|   if (has_custom_mac_address()) { |   if (has_custom_mac_address()) { | ||||||
|     esp_efuse_read_field_blob(ESP_EFUSE_MAC_CUSTOM, mac, 48); |     esp_efuse_read_field_blob(ESP_EFUSE_MAC_CUSTOM, mac, 48); | ||||||
|   } else { |   } else { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user