From e5c240a1ad739eb208ea3c1f1c7625d0ee7feea1 Mon Sep 17 00:00:00 2001
From: me-no-dev <hristo@espressif.com>
Date: Thu, 10 Oct 2024 17:24:36 +0300
Subject: [PATCH 1/6] fix(usb): Update tinyusb init call

---
 cores/esp32/esp32-hal-tinyusb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/cores/esp32/esp32-hal-tinyusb.c b/cores/esp32/esp32-hal-tinyusb.c
index c69fca08fc7..5c7cdf93366 100644
--- a/cores/esp32/esp32-hal-tinyusb.c
+++ b/cores/esp32/esp32-hal-tinyusb.c
@@ -174,9 +174,9 @@ void deinit_usb_hal() {
 esp_err_t tinyusb_driver_install(const tinyusb_config_t *config) {
   init_usb_hal(config->external_phy);
 #if CONFIG_IDF_TARGET_ESP32P4
-  if (!tud_init(1)) {
+  if (!tusb_init(1, TUSB_ROLE_DEVICE)) {
 #else
-  if (!tud_init(0)) {
+  if (!tusb_init(0, TUSB_ROLE_DEVICE)) {
 #endif
     log_e("Can't initialize the TinyUSB stack.");
     return ESP_FAIL;

From 1ef10a67f3452a152ce60a16647436413ddaef73 Mon Sep 17 00:00:00 2001
From: Mahesh Tupe <tupemahesh91@gmail.com>
Date: Tue, 15 Oct 2024 20:36:20 +0530
Subject: [PATCH 2/6] Update esp-insights version (#10456)

---
 idf_component.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/idf_component.yml b/idf_component.yml
index 3b83650bf5b..2cb789ec52a 100644
--- a/idf_component.yml
+++ b/idf_component.yml
@@ -74,7 +74,7 @@ dependencies:
     rules:
       - if: "target != esp32c2"
   espressif/esp_insights:
-    version: "^1.0.1"
+    version: "^1.2.1"
     rules:
       - if: "target != esp32c2"
   espressif/qrcode:

From eef3d064b6636307c72849085322725a1ee9ef21 Mon Sep 17 00:00:00 2001
From: Me No Dev <me-no-dev@users.noreply.github.com>
Date: Tue, 15 Oct 2024 17:25:45 +0300
Subject: [PATCH 3/6] Add support for WiFi to ESP32-P4 (#10463)

* feat(p4): Add support for WiFi to ESP32-P4

Implements support for external MCU connected through SDIO

* fix(p4): Init SDIO host properly on Network boot

esp-hosted has one function marked as "constructor" that did not run in the boot phase of the chip. This calls the function when network is started
---
 idf_component.yml                        | 20 ++++++++++++++------
 libraries/Network/src/NetworkEvents.cpp  |  2 +-
 libraries/Network/src/NetworkEvents.h    | 13 ++++++++-----
 libraries/Network/src/NetworkManager.cpp |  7 +++++++
 libraries/WiFi/src/AP.cpp                |  2 +-
 libraries/WiFi/src/STA.cpp               |  2 +-
 libraries/WiFi/src/WiFi.cpp              |  2 +-
 libraries/WiFi/src/WiFi.h                |  3 ++-
 libraries/WiFi/src/WiFiAP.cpp            |  2 +-
 libraries/WiFi/src/WiFiAP.h              |  2 +-
 libraries/WiFi/src/WiFiGeneric.cpp       | 15 +++++++++++++--
 libraries/WiFi/src/WiFiGeneric.h         |  2 +-
 libraries/WiFi/src/WiFiMulti.cpp         |  2 +-
 libraries/WiFi/src/WiFiMulti.h           |  2 +-
 libraries/WiFi/src/WiFiSTA.cpp           |  2 +-
 libraries/WiFi/src/WiFiSTA.h             |  2 +-
 libraries/WiFi/src/WiFiScan.cpp          |  2 +-
 libraries/WiFi/src/WiFiScan.h            |  2 +-
 libraries/WiFi/src/WiFiType.h            |  2 +-
 19 files changed, 58 insertions(+), 28 deletions(-)

diff --git a/idf_component.yml b/idf_component.yml
index 2cb789ec52a..d1772d0ddb9 100644
--- a/idf_component.yml
+++ b/idf_component.yml
@@ -56,11 +56,11 @@ dependencies:
   espressif/esp-zboss-lib:
     version: "^1.0.1"
     rules:
-      - if: "target != esp32c2"
+      - if: "target not in [esp32c2, esp32p4]"
   espressif/esp-zigbee-lib:
     version: "^1.0.1"
     rules:
-      - if: "target != esp32c2"
+      - if: "target not in [esp32c2, esp32p4]"
   espressif/esp-dsp:
     version: "^1.3.4"
     rules:
@@ -68,23 +68,31 @@ dependencies:
   espressif/esp_rainmaker:
     version: "^1.0.0"
     rules:
-      - if: "target != esp32c2"
+      - if: "target not in [esp32c2, esp32p4]"
   espressif/rmaker_common:
     version: "^1.4.6"
     rules:
-      - if: "target != esp32c2"
+      - if: "target not in [esp32c2, esp32p4]"
   espressif/esp_insights:
     version: "^1.2.1"
     rules:
-      - if: "target != esp32c2"
+      - if: "target not in [esp32c2, esp32p4]"
   espressif/qrcode:
     version: "^0.1.0~1"
     rules:
-      - if: "target != esp32c2"
+      - if: "target not in [esp32c2, esp32p4]"
   espressif/esp-sr:
     version: "^1.4.2"
     rules:
       - if: "target in [esp32s3]"
+  espressif/esp_hosted:
+    version: "^0.0.22"
+    rules:
+      - if: "target == esp32p4"
+  espressif/esp_wifi_remote:
+    version: "^0.4.1"
+    rules:
+      - if: "target == esp32p4"
   espressif/libsodium:
     version: "^1.0.20~1"
     require: public
diff --git a/libraries/Network/src/NetworkEvents.cpp b/libraries/Network/src/NetworkEvents.cpp
index bb02282e9b3..4863e346a10 100644
--- a/libraries/Network/src/NetworkEvents.cpp
+++ b/libraries/Network/src/NetworkEvents.cpp
@@ -423,7 +423,7 @@ const char *NetworkEvents::eventName(arduino_event_id_t id) {
     case ARDUINO_EVENT_PPP_GOT_IP:       return "PPP_GOT_IP";
     case ARDUINO_EVENT_PPP_LOST_IP:      return "PPP_LOST_IP";
     case ARDUINO_EVENT_PPP_GOT_IP6:      return "PPP_GOT_IP6";
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
     case ARDUINO_EVENT_WIFI_OFF:                 return "WIFI_OFF";
     case ARDUINO_EVENT_WIFI_READY:               return "WIFI_READY";
     case ARDUINO_EVENT_WIFI_SCAN_DONE:           return "SCAN_DONE";
diff --git a/libraries/Network/src/NetworkEvents.h b/libraries/Network/src/NetworkEvents.h
index ac324d19841..b49951b1824 100644
--- a/libraries/Network/src/NetworkEvents.h
+++ b/libraries/Network/src/NetworkEvents.h
@@ -16,14 +16,15 @@
 #include "freertos/queue.h"
 #include "freertos/semphr.h"
 #include "freertos/event_groups.h"
+#include "sdkconfig.h"
 
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 #include "esp_wifi_types.h"
 #include "esp_smartconfig.h"
 #include "network_provisioning/network_config.h"
 #endif
 
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 static const int WIFI_SCANNING_BIT = BIT0;
 static const int WIFI_SCAN_DONE_BIT = BIT1;
 #endif
@@ -41,7 +42,7 @@ typedef enum {
   ARDUINO_EVENT_ETH_GOT_IP,
   ARDUINO_EVENT_ETH_LOST_IP,
   ARDUINO_EVENT_ETH_GOT_IP6,
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
   ARDUINO_EVENT_WIFI_OFF,
   ARDUINO_EVENT_WIFI_READY,
   ARDUINO_EVENT_WIFI_SCAN_DONE,
@@ -93,7 +94,7 @@ typedef union {
   ip_event_got_ip_t got_ip;
   ip_event_got_ip6_t got_ip6;
   esp_eth_handle_t eth_connected;
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
   wifi_event_sta_scan_done_t wifi_scan_done;
   wifi_event_sta_authmode_change_t wifi_sta_authmode_change;
   wifi_event_sta_connected_t wifi_sta_connected;
@@ -104,6 +105,8 @@ typedef union {
   wifi_event_ap_staconnected_t wifi_ap_staconnected;
   wifi_event_ap_stadisconnected_t wifi_ap_stadisconnected;
   wifi_event_ftm_report_t wifi_ftm_report;
+#endif
+#if SOC_WIFI_SUPPORTED
   wifi_sta_config_t prov_cred_recv;
   network_prov_wifi_sta_fail_reason_t prov_fail_reason;
   smartconfig_event_got_ssid_pswd_t sc_got_ssid_pswd;
@@ -147,7 +150,7 @@ class NetworkEvents {
   friend class ESP_NetworkInterface;
   friend class ETHClass;
   friend class PPPClass;
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
   friend class STAClass;
   friend class APClass;
   friend class WiFiGenericClass;
diff --git a/libraries/Network/src/NetworkManager.cpp b/libraries/Network/src/NetworkManager.cpp
index 88059a60562..b429c482825 100644
--- a/libraries/Network/src/NetworkManager.cpp
+++ b/libraries/Network/src/NetworkManager.cpp
@@ -10,6 +10,10 @@
 #include "esp_mac.h"
 #include "netdb.h"
 
+#if CONFIG_ESP_WIFI_REMOTE_ENABLED
+extern "C" esp_err_t esp_hosted_init(void *);
+#endif
+
 NetworkManager::NetworkManager() {}
 
 NetworkInterface *getNetifByID(Network_Interface_ID id);
@@ -18,6 +22,9 @@ bool NetworkManager::begin() {
   static bool initialized = false;
   if (!initialized) {
     initialized = true;
+#if CONFIG_ESP_WIFI_REMOTE_ENABLED
+    esp_hosted_init(NULL);
+#endif
 #if CONFIG_IDF_TARGET_ESP32
     uint8_t mac[8];
     if (esp_efuse_mac_get_default(mac) == ESP_OK) {
diff --git a/libraries/WiFi/src/AP.cpp b/libraries/WiFi/src/AP.cpp
index a61be662495..9cba6e90f10 100644
--- a/libraries/WiFi/src/AP.cpp
+++ b/libraries/WiFi/src/AP.cpp
@@ -7,7 +7,7 @@
 #include "WiFi.h"
 #include "WiFiGeneric.h"
 #include "WiFiAP.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 #include <stdint.h>
 #include <stdbool.h>
 #include <stdio.h>
diff --git a/libraries/WiFi/src/STA.cpp b/libraries/WiFi/src/STA.cpp
index 443d2621957..004ce161058 100644
--- a/libraries/WiFi/src/STA.cpp
+++ b/libraries/WiFi/src/STA.cpp
@@ -6,7 +6,7 @@
 #include "WiFi.h"
 #include "WiFiGeneric.h"
 #include "WiFiSTA.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 #include <stdint.h>
 #include <stdbool.h>
 #include <stdio.h>
diff --git a/libraries/WiFi/src/WiFi.cpp b/libraries/WiFi/src/WiFi.cpp
index a854cb0ceb7..7fb0ed16459 100644
--- a/libraries/WiFi/src/WiFi.cpp
+++ b/libraries/WiFi/src/WiFi.cpp
@@ -22,7 +22,7 @@
 
  */
 #include "WiFi.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 extern "C" {
 #include <stdint.h>
diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h
index a823dabd864..ea2efd97697 100644
--- a/libraries/WiFi/src/WiFi.h
+++ b/libraries/WiFi/src/WiFi.h
@@ -22,7 +22,8 @@
 #pragma once
 
 #include "soc/soc_caps.h"
-#if SOC_WIFI_SUPPORTED
+#include "sdkconfig.h"
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include <stdint.h>
 
diff --git a/libraries/WiFi/src/WiFiAP.cpp b/libraries/WiFi/src/WiFiAP.cpp
index fac84dc8512..7282daac995 100644
--- a/libraries/WiFi/src/WiFiAP.cpp
+++ b/libraries/WiFi/src/WiFiAP.cpp
@@ -25,7 +25,7 @@
 #include "WiFi.h"
 #include "WiFiGeneric.h"
 #include "WiFiAP.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include <stdint.h>
 #include <stdbool.h>
diff --git a/libraries/WiFi/src/WiFiAP.h b/libraries/WiFi/src/WiFiAP.h
index 9acd124c27e..4573e92ecf0 100644
--- a/libraries/WiFi/src/WiFiAP.h
+++ b/libraries/WiFi/src/WiFiAP.h
@@ -23,7 +23,7 @@
 #pragma once
 
 #include "soc/soc_caps.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include "esp_wifi_types.h"
 #include "WiFiType.h"
diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp
index ccc9518132b..d096c2e3d6e 100644
--- a/libraries/WiFi/src/WiFiGeneric.cpp
+++ b/libraries/WiFi/src/WiFiGeneric.cpp
@@ -24,7 +24,7 @@
 
 #include "WiFi.h"
 #include "WiFiGeneric.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 extern "C" {
 #include <stdint.h>
@@ -39,7 +39,9 @@ extern "C" {
 #include <esp_event.h>
 #include <esp_mac.h>
 #include <esp_netif.h>
+#if SOC_WIFI_SUPPORTED
 #include <esp_phy.h>
+#endif
 #include "lwip/ip_addr.h"
 #include "lwip/opt.h"
 #include "lwip/err.h"
@@ -103,6 +105,7 @@ static void _arduino_event_cb(void *arg, esp_event_base_t event_base, int32_t ev
     arduino_event.event_id = ARDUINO_EVENT_WIFI_FTM_REPORT;
     memcpy(&arduino_event.event_info.wifi_ftm_report, event_data, sizeof(wifi_event_ftm_report_t));
 
+#if !CONFIG_ESP_WIFI_REMOTE_ENABLED
     /*
 	 * SMART CONFIG
 	 * */
@@ -157,6 +160,7 @@ static void _arduino_event_cb(void *arg, esp_event_base_t event_base, int32_t ev
   } else if (event_base == NETWORK_PROV_EVENT && event_id == NETWORK_PROV_WIFI_CRED_SUCCESS) {
     log_v("Provisioning Success!");
     arduino_event.event_id = ARDUINO_EVENT_PROV_CRED_SUCCESS;
+#endif
   }
 
   if (arduino_event.event_id < ARDUINO_EVENT_MAX) {
@@ -170,6 +174,7 @@ static bool initWiFiEvents() {
     return false;
   }
 
+#if !CONFIG_ESP_WIFI_REMOTE_ENABLED
   if (esp_event_handler_instance_register(SC_EVENT, ESP_EVENT_ANY_ID, &_arduino_event_cb, NULL, NULL)) {
     log_e("event_handler_instance_register for SC_EVENT Failed!");
     return false;
@@ -179,6 +184,7 @@ static bool initWiFiEvents() {
     log_e("event_handler_instance_register for NETWORK_PROV_EVENT Failed!");
     return false;
   }
+#endif
 
   return true;
 }
@@ -189,6 +195,7 @@ static bool deinitWiFiEvents() {
     return false;
   }
 
+#if !CONFIG_ESP_WIFI_REMOTE_ENABLED
   if (esp_event_handler_unregister(SC_EVENT, ESP_EVENT_ANY_ID, &_arduino_event_cb)) {
     log_e("esp_event_handler_unregister for SC_EVENT Failed!");
     return false;
@@ -198,6 +205,7 @@ static bool deinitWiFiEvents() {
     log_e("esp_event_handler_unregister for NETWORK_PROV_EVENT Failed!");
     return false;
   }
+#endif
 
   return true;
 }
@@ -370,6 +378,7 @@ void WiFiGenericClass::_eventCallback(arduino_event_t *event) {
   // log_d("Arduino Event: %d - %s", event->event_id, WiFi.eventName(event->event_id));
   if (event->event_id == ARDUINO_EVENT_WIFI_SCAN_DONE) {
     WiFiScanClass::_scanDone();
+#if !CONFIG_ESP_WIFI_REMOTE_ENABLED
   } else if (event->event_id == ARDUINO_EVENT_SC_GOT_SSID_PSWD) {
     WiFi.begin(
       (const char *)event->event_info.sc_got_ssid_pswd.ssid, (const char *)event->event_info.sc_got_ssid_pswd.password, 0,
@@ -378,6 +387,7 @@ void WiFiGenericClass::_eventCallback(arduino_event_t *event) {
   } else if (event->event_id == ARDUINO_EVENT_SC_SEND_ACK_DONE) {
     esp_smartconfig_stop();
     WiFiSTAClass::_smartConfigDone = true;
+#endif
   }
 }
 
@@ -693,6 +703,7 @@ bool WiFiGenericClass::initiateFTM(uint8_t frm_count, uint16_t burst_period, uin
  * @return true on success
  */
 bool WiFiGenericClass::setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2, wifi_rx_ant_t rx_mode, wifi_tx_ant_t tx_mode) {
+#if !CONFIG_ESP_WIFI_REMOTE_ENABLED
 
   esp_phy_ant_gpio_config_t wifi_ant_io;
 
@@ -759,7 +770,7 @@ bool WiFiGenericClass::setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2
     log_e("Failed to set antenna configuration");
     return false;
   }
-
+#endif
   return true;
 }
 
diff --git a/libraries/WiFi/src/WiFiGeneric.h b/libraries/WiFi/src/WiFiGeneric.h
index 2a5ca812999..fe929236a4b 100644
--- a/libraries/WiFi/src/WiFiGeneric.h
+++ b/libraries/WiFi/src/WiFiGeneric.h
@@ -23,7 +23,7 @@
 #pragma once
 
 #include "soc/soc_caps.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include "esp_err.h"
 #include "esp_event.h"
diff --git a/libraries/WiFi/src/WiFiMulti.cpp b/libraries/WiFi/src/WiFiMulti.cpp
index a438919f792..f99ce185252 100644
--- a/libraries/WiFi/src/WiFiMulti.cpp
+++ b/libraries/WiFi/src/WiFiMulti.cpp
@@ -24,7 +24,7 @@
  */
 
 #include "WiFiMulti.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 #include <limits.h>
 #include <string.h>
 #include <esp32-hal.h>
diff --git a/libraries/WiFi/src/WiFiMulti.h b/libraries/WiFi/src/WiFiMulti.h
index 1e11ff13f51..bda053b32d2 100644
--- a/libraries/WiFi/src/WiFiMulti.h
+++ b/libraries/WiFi/src/WiFiMulti.h
@@ -26,7 +26,7 @@
 #pragma once
 
 #include "soc/soc_caps.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include "WiFi.h"
 #include <vector>
diff --git a/libraries/WiFi/src/WiFiSTA.cpp b/libraries/WiFi/src/WiFiSTA.cpp
index 1c1ce42c12f..18c8b7207a4 100644
--- a/libraries/WiFi/src/WiFiSTA.cpp
+++ b/libraries/WiFi/src/WiFiSTA.cpp
@@ -25,7 +25,7 @@
 #include "WiFi.h"
 #include "WiFiGeneric.h"
 #include "WiFiSTA.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include <stdint.h>
 #include <stdbool.h>
diff --git a/libraries/WiFi/src/WiFiSTA.h b/libraries/WiFi/src/WiFiSTA.h
index 2c046c4c4b9..b3176ed17ca 100644
--- a/libraries/WiFi/src/WiFiSTA.h
+++ b/libraries/WiFi/src/WiFiSTA.h
@@ -23,7 +23,7 @@
 #pragma once
 
 #include "soc/soc_caps.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include "WiFiType.h"
 #include "WiFiGeneric.h"
diff --git a/libraries/WiFi/src/WiFiScan.cpp b/libraries/WiFi/src/WiFiScan.cpp
index ffacc57f093..27d9edcc70c 100644
--- a/libraries/WiFi/src/WiFiScan.cpp
+++ b/libraries/WiFi/src/WiFiScan.cpp
@@ -25,7 +25,7 @@
 #include "WiFi.h"
 #include "WiFiGeneric.h"
 #include "WiFiScan.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 extern "C" {
 #include <stdint.h>
diff --git a/libraries/WiFi/src/WiFiScan.h b/libraries/WiFi/src/WiFiScan.h
index 0648885292f..5e1097f3ae2 100644
--- a/libraries/WiFi/src/WiFiScan.h
+++ b/libraries/WiFi/src/WiFiScan.h
@@ -23,7 +23,7 @@
 #pragma once
 
 #include "soc/soc_caps.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include "WiFiType.h"
 #include "WiFiGeneric.h"
diff --git a/libraries/WiFi/src/WiFiType.h b/libraries/WiFi/src/WiFiType.h
index 1d721d33963..83eed72f4cb 100644
--- a/libraries/WiFi/src/WiFiType.h
+++ b/libraries/WiFi/src/WiFiType.h
@@ -22,7 +22,7 @@
 #pragma once
 
 #include "soc/soc_caps.h"
-#if SOC_WIFI_SUPPORTED
+#if SOC_WIFI_SUPPORTED || CONFIG_ESP_WIFI_REMOTE_ENABLED
 
 #include "esp_wifi_types.h"
 

From 6f0cff1e8916bf29c0280dd1ce03f6d55a4248d1 Mon Sep 17 00:00:00 2001
From: me-no-dev <hristo@espressif.com>
Date: Tue, 15 Oct 2024 18:48:41 +0300
Subject: [PATCH 4/6] Fix RainMaker dependent versions because Matter requires
 Insights 1.0.1

---
 idf_component.yml | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/idf_component.yml b/idf_component.yml
index d1772d0ddb9..12bfe66e739 100644
--- a/idf_component.yml
+++ b/idf_component.yml
@@ -51,8 +51,6 @@ dependencies:
     require: public
   espressif/esp_modem:
     version: "^1.1.0"
-  espressif/network_provisioning:
-    version: "~1.0.0"
   espressif/esp-zboss-lib:
     version: "^1.0.1"
     rules:
@@ -65,22 +63,39 @@ dependencies:
     version: "^1.3.4"
     rules:
       - if: "target != esp32c2"
+  # RainMaker Start (Fixed versions, because Matter supports only Insights 1.0.1)
+  espressif/network_provisioning:
+    version: "1.0.2"
   espressif/esp_rainmaker:
-    version: "^1.0.0"
+    version: "1.5.0"
     rules:
       - if: "target not in [esp32c2, esp32p4]"
   espressif/rmaker_common:
-    version: "^1.4.6"
+    version: "1.4.6"
     rules:
       - if: "target not in [esp32c2, esp32p4]"
   espressif/esp_insights:
-    version: "^1.2.1"
+    version: "1.0.1"
+    rules:
+      - if: "target not in [esp32c2, esp32p4]"
+  # New version breaks esp_insights 1.0.1
+  espressif/esp_diag_data_store:
+    version: "1.0.1"
+    rules:
+      - if: "target not in [esp32c2, esp32p4]"
+  espressif/esp_diagnostics:
+    version: "1.0.2"
+    rules:
+      - if: "target not in [esp32c2, esp32p4]"
+  espressif/cbor:
+    version: "0.6.0~1"
     rules:
       - if: "target not in [esp32c2, esp32p4]"
   espressif/qrcode:
-    version: "^0.1.0~1"
+    version: "0.1.0~2"
     rules:
       - if: "target not in [esp32c2, esp32p4]"
+  # RainMaker End
   espressif/esp-sr:
     version: "^1.4.2"
     rules:

From 80e6e4d4c188fe13843f22daa842b0e60828567a Mon Sep 17 00:00:00 2001
From: me-no-dev <me-no-dev@users.noreply.github.com>
Date: Tue, 15 Oct 2024 16:25:16 +0000
Subject: [PATCH 5/6] IDF release/v5.3 707d097b

---
 package/package_esp32_index.template.json | 32 +++++++++++------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/package/package_esp32_index.template.json b/package/package_esp32_index.template.json
index 413419a9b1c..9227a89034d 100644
--- a/package/package_esp32_index.template.json
+++ b/package/package_esp32_index.template.json
@@ -101,57 +101,57 @@
               "host": "i686-mingw32",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             },
             {
               "host": "x86_64-mingw32",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             },
             {
               "host": "arm64-apple-darwin",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             },
             {
               "host": "x86_64-apple-darwin",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             },
             {
               "host": "x86_64-pc-linux-gnu",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             },
             {
               "host": "i686-pc-linux-gnu",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             },
             {
               "host": "aarch64-linux-gnu",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             },
             {
               "host": "arm-linux-gnueabihf",
               "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.3/esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
               "archiveFileName": "esp32-arduino-libs-idf-release_v5.3-707d097b.zip",
-              "checksum": "SHA-256:b4d431c8e6e9eb26c78cb187b9082055544956a4dac8e224ff884f770e5f0e5a",
-              "size": "351074410"
+              "checksum": "SHA-256:8a3f8ba621b187a53635deef36e335aa72f18d15c89170a32ce401bedee946be",
+              "size": "350992761"
             }
           ]
         },

From 4dce046a6052289596f30066696fe93520227ffc Mon Sep 17 00:00:00 2001
From: "pre-commit-ci-lite[bot]"
 <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Date: Tue, 15 Oct 2024 17:19:00 +0000
Subject: [PATCH 6/6] ci(pre-commit): Apply automatic fixes

---
 cores/esp32/esp32-hal-tinyusb.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/cores/esp32/esp32-hal-tinyusb.c b/cores/esp32/esp32-hal-tinyusb.c
index 5c7cdf93366..eca7e5d176c 100644
--- a/cores/esp32/esp32-hal-tinyusb.c
+++ b/cores/esp32/esp32-hal-tinyusb.c
@@ -287,15 +287,14 @@ enum {
   VENDOR_REQUEST_MICROSOFT = 2
 };
 
-static uint8_t const tinyusb_bos_descriptor[] = {
-  // total length, number of device caps
-  TUD_BOS_DESCRIPTOR(BOS_TOTAL_LEN, 2),
+static uint8_t const tinyusb_bos_descriptor[] = {// total length, number of device caps
+                                                 TUD_BOS_DESCRIPTOR(BOS_TOTAL_LEN, 2),
 
-  // Vendor Code, iLandingPage
-  TUD_BOS_WEBUSB_DESCRIPTOR(VENDOR_REQUEST_WEBUSB, 1),
+                                                 // Vendor Code, iLandingPage
+                                                 TUD_BOS_WEBUSB_DESCRIPTOR(VENDOR_REQUEST_WEBUSB, 1),
 
-  // Microsoft OS 2.0 descriptor
-  TUD_BOS_MS_OS_20_DESCRIPTOR(MS_OS_20_DESC_LEN, VENDOR_REQUEST_MICROSOFT)
+                                                 // Microsoft OS 2.0 descriptor
+                                                 TUD_BOS_MS_OS_20_DESCRIPTOR(MS_OS_20_DESC_LEN, VENDOR_REQUEST_MICROSOFT)
 };
 
 /*
@@ -831,7 +830,7 @@ esp_err_t tinyusb_init(tinyusb_device_config_t *config) {
     periph_ll_enable_clk_clear_rst(PERIPH_USB_MODULE);
   }
 #endif
-  
+
   tinyusb_config_t tusb_cfg = {
     .external_phy = false  // In the most cases you need to use a `false` value
   };