Merge remote-tracking branch 'upstream/master' into c5

This commit is contained in:
iranl
2025-06-09 23:00:17 +02:00
14 changed files with 302 additions and 46 deletions

View File

@@ -16,8 +16,8 @@ Feel free to join us on Discord: https://discord.gg/9nPq85bP4p
<b>Supported ESP32 devices:</b>
- Nuki Hub is compiled against all ESP32 models with Wi-Fi and Bluetooh Low Energy (BLE) which are supported by ESP-IDF 5.4.1 and Arduino Core 3.2.0.
- Tested stable builds are provided for the ESP32, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6 and ESP32-H2.
- Untested builds are provided for the ESP32-P4 (with the ESP32-C6-MINI-1 module for BLE and WiFi) and ESP32-Solo1 (as the developers don't own one).
- Tested stable builds are provided for the ESP32, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-P4 (with the ESP32-C6-MINI-1 module for BLE and WiFi) and ESP32-H2.
- Untested builds are provided for the ESP32-Solo1 (as the developers don't own one).
<b>Not supported ESP32 devices:</b>
- The ESP32-S2 has no built-in BLE and as such can't run Nuki Hub.
@@ -49,6 +49,9 @@ As an alternative to Wi-Fi (which is available on any supported ESP32), the foll
- [LilyGO-T-ETH ELite](https://github.com/Xinyuan-LilyGO/LilyGO-T-ETH-Series)
- [GL-S10 (Revisions 2.1, 2.3 / 1.0 might not be supported)](https://www.gl-inet.com/products/gl-s10/)
- [Waveshare ESP32-S3-ETH / ESP32-S3-POE-ETH](https://www.waveshare.com/esp32-s3-eth.htm?sku=28771)
- [Waveshare ESP32-P4-NANO](https://www.waveshare.com/esp32-p4-nano.htm)
- [Waveshare ESP32-P4-Module-DEV-KIT](https://www.waveshare.com/esp32-p4-module-dev-kit.htm)
- [Espressif ESP32-P4-Function-EV-Board](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/index.html)
In principle all ESP32 (and variants) devices with built-in ethernet port are supported, but might require additional setup using the "Custom LAN setup" option.
See the "[Connecting via Ethernet](#connecting-via-ethernet-optional)" section for more information.
@@ -58,21 +61,28 @@ See the "[Connecting via Ethernet](#connecting-via-ethernet-optional)" section f
We don't recommend using the original ESP32 or ESP32-Solo1 devices because these devices experience unexpected crashes related to the (closed-source) BLE controller.<br>
In newer models (e.g. ESP32-S3, ESP32-P4, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2) these unexpected crashed are seen a lot less.
When buying a new device in 2025 we generally recommend the ESP32-S3 with PSRAM (look for an ESP32-S3 with the designation N>=4 and R>=2 such as an ESP32-S3 N16R8).<br>
We also don't recommend using the original ESP32 or ESP32-Solo1 devices because these devices experience unexpected crashes related to the (closed-source) BLE controller.<br>
In newer models (e.g. ESP32-S3, ESP32-P4, ESP32-C3, ESP32-C6, ESP32-H2) these unexpected crashes are seen less.
When buying a new device in 2025 we can only recommend the ESP32-P4 or ESP32-S3 with PSRAM (look for an ESP32-S3 with the designation N>=4 and R>=2 such as an ESP32-S3 N16R8).<br>
The ESP32-P4 with ESP32-C6-MINI-1 module for BLE/WiFi is the most powerfull ESP32 in 2025.
It supports (with the C6 co-processor) anything the ESP32 range has to offer with the highest CPU clocks, largest flash and PSRAM, Ethernet, PoE and WiFi6.
The only function missing (when not using a C5 as co-processor) is 5Ghz WiFi support.
The ESP32-S3 is a dual-core CPU with many GPIO's, ability to enlarge RAM using PSRAM, ability to connect Ethernet modules over SPI and optionally power the device with a PoE splitter.<br>
The only functions missing from the ESP32-S3 as compared to other ESP devices is the ability to use some Ethernet modules only supported by the original ESP32 (and ESP32-P4) and the ability to connect over WIFI6 (C5, C6 or ESP32-P4 with C6 module)
The ESP32-C5 with PSRAM is a good option providing higher clockspeeds than the C6 and adding PSRAM and WIFI 6 on the 5 Ghz band support.
Nuki Hub uses both CPU cores (if available) to process tasks (e.g. HTTP server/MQTT client/BLE scanner/BLE client) and thus runs better on dual-core devices.<br>
We provide a build for the ESP32-P4 with ESP32-C6-MINI-1 module for BLE/WiFi but this device is untested as of now.
Other considerations:
- If Ethernet/PoE is required: An ESP32-S3 with PSRAM in combination with a SPI Ethernet module ([W5500](https://www.aliexpress.com/w/wholesale-w5500.html)) and [PoE to Ethernet and USB type B/C splitter](https://aliexpress.com/w/wholesale-poe-splitter-usb-c.html) or the LilyGO-T-ETH ELite, LilyGO-T-ETH-Lite-ESP32S3 or M5stack Atom S3R with the M5stack AtomPoe W5500 module
- If WIFI6 is required: ESP32-C5, ESP32-C6 or ESP32-P4 with ESP32-C6-MINI-1 module (UNTESTED)
- If Ethernet/PoE is required: ESP32-P4 with ESP32-C6-MINI-1 module or ESP32-S3 with PSRAM in combination with a SPI Ethernet module ([W5500](https://www.aliexpress.com/w/wholesale-w5500.html)) and [PoE to Ethernet and USB type B/C splitter](https://aliexpress.com/w/wholesale-poe-splitter-usb-c.html) or the LilyGO-T-ETH ELite, LilyGO-T-ETH-Lite-ESP32S3 or M5stack Atom S3R with the M5stack AtomPoe W5500 module
- If WIFI6 is required: ESP32-P4 with ESP32-C6-MINI-1 module, ESP32-C5 or ESP32-C6
Devices ranked best-to-worst:
- ESP32-P4 with ESP32-C6-MINI-1 module (UNTESTED)
- ESP32-P4 with ESP32-C6-MINI-1 module
- ...... <br>
- ESP32-S3 with PSRAM
- ESP32-C5 with PSRAM
- ...... <br>

View File

@@ -80,7 +80,7 @@ e000 boot_app0.bin
ESP32-P4
e000 boot_app0.bin
0 nuki_hub_bootloader_esp32p4.bin
2000 nuki_hub_bootloader_esp32p4.bin
8000 nuki_hub_partitions_esp32p4.bin
10000 nuki_hub_esp32p4.bin
270000 nuki_hub_updater_esp32p4.bin
@@ -138,7 +138,7 @@ esptool.py --chip esp32h2 --port /dev/ttyUSB0 --baud 921600 --before default_res
## ESP32-P4
esptool.py --chip esp32p4 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 nuki_hub_bootloader_esp32p4.bin 0x10000 nuki_hub_esp32p4.bin 0x270000 nuki_hub_updater_esp32p4.bin 0x8000 nuki_hub_partitions_esp32p4.bin
esptool.py --chip esp32p4 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x2000 nuki_hub_bootloader_esp32p4.bin 0x10000 nuki_hub_esp32p4.bin 0x270000 nuki_hub_updater_esp32p4.bin 0x8000 nuki_hub_partitions_esp32p4.bin
## ESP32-SOLO1

View File

@@ -82,7 +82,7 @@ CONFIG_BT_NIMBLE_NVS_PERSIST=y
CONFIG_BT_NIMBLE_GATT_MAX_PROCS=8
CONFIG_BT_NIMBLE_PINNED_TO_CORE_0=y
CONFIG_BT_NIMBLE_PINNED_TO_CORE=0
CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192
CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=12288
CONFIG_BT_NIMBLE_ROLE_CENTRAL=y
CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=n
CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y

View File

@@ -32,7 +32,6 @@ CONFIG_BT_CONTROLLER_DISABLED=y
CONFIG_BT_BLUEDROID_ENABLED=n
CONFIG_BT_NIMBLE_TRANSPORT_UART=n
CONFIG_ESP_ENABLE_BT=y
CONFIG_ESP32_P4_EV_BOARD=y
CONFIG_BT_NIMBLE_ENABLED=y
CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y

View File

@@ -5,12 +5,27 @@
#define NUKI_HUB_VERSION "9.11"
#define NUKI_HUB_VERSION_INT (uint32_t)911
#define NUKI_HUB_BUILD "unknownbuildnr"
#define NUKI_HUB_DATE "2025-05-17"
#define NUKI_HUB_DATE "2025-06-09"
#define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest"
#define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json"
#if defined(CONFIG_IDF_TARGET_ESP32C3)
#if defined(CONFIG_IDF_TARGET_ESP32P4)
#define GITHUB_LATEST_RELEASE_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/nuki_hub_esp32p4.bin"
#define GITHUB_LATEST_UPDATER_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/nuki_hub_updater_esp32p4.bin"
#define GITHUB_BETA_RELEASE_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/nuki_hub_esp32p4.bin"
#define GITHUB_BETA_UPDATER_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/nuki_hub_updater_esp32p4.bin"
#define GITHUB_MASTER_RELEASE_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/master/nuki_hub_esp32p4.bin"
#define GITHUB_MASTER_UPDATER_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/master/nuki_hub_updater_esp32p4.bin"
#define GITHUB_LATEST_RELEASE_BINARY_URL_DBG (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/debug/nuki_hub_esp32p4.bin"
#define GITHUB_LATEST_UPDATER_BINARY_URL_DBG (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/debug/nuki_hub_updater_esp32p4.bin"
#define GITHUB_BETA_RELEASE_BINARY_URL_DBG (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/debug/beta/nuki_hub_esp32p4.bin"
#define GITHUB_BETA_UPDATER_BINARY_URL_DBG (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/debug/beta/nuki_hub_updater_esp32p4.bin"
#define GITHUB_MASTER_RELEASE_BINARY_URL_DBG (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/debug/master/nuki_hub_esp32p4.bin"
#define GITHUB_MASTER_UPDATER_BINARY_URL_DBG (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/debug/master/nuki_hub_updater_esp32p4.bin"
#define NUKI_HUB_HW (char*)"ESP32-P4"
#define BOOT_BUTTON_GPIO (gpio_num_t)35
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
#define GITHUB_LATEST_RELEASE_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/nuki_hub_esp32c3.bin"
#define GITHUB_LATEST_UPDATER_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/nuki_hub_updater_esp32c3.bin"
#define GITHUB_BETA_RELEASE_BINARY_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/nuki_hub_esp32c3.bin"

View File

@@ -162,6 +162,7 @@ void NukiWrapper::readSettings()
_forceKeypad = _preferences->getBool(preference_lock_force_keypad, false);
_forceId = _preferences->getBool(preference_lock_force_id, false);
_isUltra = _preferences->getBool(preference_lock_gemini_enabled, false);
_isDebugging = _preferences->getBool(preference_debug_hex_data, false);
_preferences->getBytes(preference_conf_lock_basic_acl, &_basicLockConfigaclPrefs, sizeof(_basicLockConfigaclPrefs));
_preferences->getBytes(preference_conf_lock_advanced_acl, &_advancedLockConfigaclPrefs, sizeof(_advancedLockConfigaclPrefs));
@@ -360,6 +361,10 @@ void NukiWrapper::update(bool reboot)
Log->println("Updating Lock config based on timer or query");
_nextConfigUpdateTs = ts + _intervalConfig * 1000;
updateConfig();
if(_isDebugging)
{
updateDebug();
}
}
if(_waitAuthLogUpdateTs != 0 && ts > _waitAuthLogUpdateTs)
{
@@ -728,6 +733,149 @@ void NukiWrapper::updateConfig()
}
}
void NukiWrapper::updateDebug()
{
Nuki::CmdResult result = (Nuki::CmdResult)-1;
int count = 0;
Log->println("Running debug command - RequestGeneralStatistics");
result = (Nuki::CmdResult)-1;
result = _nukiLock.genericCommand(Nuki::Command::RequestGeneralStatistics);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - RequestDailyStatistics");
result = (Nuki::CmdResult)-1;
result = _nukiLock.requestDailyStatistics();
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - RequestMqttConfig");
result = (Nuki::CmdResult)-1;
result = _nukiLock.genericCommand(Nuki::Command::RequestMqttConfig);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - RequestMqttConfigForMigration");
result = (Nuki::CmdResult)-1;
result = _nukiLock.genericCommand(Nuki::Command::RequestMqttConfigForMigration);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - ReadWifiConfig");
result = (Nuki::CmdResult)-1;
result = _nukiLock.genericCommand(Nuki::Command::ReadWifiConfig);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - ReadWifiConfigForMigration");
result = (Nuki::CmdResult)-1;
result = _nukiLock.genericCommand(Nuki::Command::ReadWifiConfigForMigration);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - GetKeypad2Config");
result = (Nuki::CmdResult)-1;
result = _nukiLock.genericCommand(Nuki::Command::GetKeypad2Config, false);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - RequestFingerprintEntries");
result = (Nuki::CmdResult)-1;
result = _nukiLock.retrieveFingerprintEntries();
Log->print("Result: ");
Log->println(result);
count = 0;
while (count < 5) {
delay(1000);
esp_task_wdt_reset();
count++;
}
std::list<NukiLock::FingerprintEntry> fingerprintEntries;
_nukiLock.getFingerprintEntries(&fingerprintEntries);
Log->print("Fingerprint entries: ");
Log->println(fingerprintEntries.size());
Log->println("Debug command complete");
Log->println("Running debug command - RequestInternalLogEntries");
result = (Nuki::CmdResult)-1;
result = _nukiLock.retrieveInternalLogEntries(0, 10, 1, false);
Log->print("Result: ");
Log->println(result);
count = 0;
while (count < 15) {
delay(1000);
esp_task_wdt_reset();
count++;
}
std::list<NukiLock::InternalLogEntry> internalLogEntries;
_nukiLock.getInternalLogEntries(&internalLogEntries);
Log->print("InternalLog entries: ");
Log->println(internalLogEntries.size());
Log->println("Debug command complete");
Log->println("Running debug command - scanWifi");
result = (Nuki::CmdResult)-1;
result = _nukiLock.scanWifi(15);
Log->print("Result: ");
Log->println(result);
count = 0;
while (count < 20) {
delay(1000);
esp_task_wdt_reset();
count++;
}
std::list<NukiLock::WifiScanEntry> wifiScanEntries;
_nukiLock.getWifiScanEntries(&wifiScanEntries);
Log->print("WifiScan entries: ");
Log->println(wifiScanEntries.size());
Log->println("Debug command complete");
Log->println("Running debug command - getAccessoryInfo, type = 4");
result = (Nuki::CmdResult)-1;
result = _nukiLock.getAccessoryInfo(4);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - getAccessoryInfo, type = 5");
result = (Nuki::CmdResult)-1;
result = _nukiLock.getAccessoryInfo(5);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
Log->println("Running debug command - RequestDoorSensorConfig");
result = (Nuki::CmdResult)-1;
result = _nukiLock.genericCommand(Nuki::Command::RequestDoorSensorConfig, false);
Log->print("Result: ");
Log->println(result);
Log->println("Debug command complete");
/*
CheckKeypadCode = 0x006E keypadCode (int), (nonce, PIN)
RequestMatterPairings = 0x0112 requestTotalCount (bool), (nonce, PIN)
MatterPairing = 0x0113
MatterPairingCount = 0x0114
ConnectWifi = 0x0082
SetWifiConfig = 0x0087
SetMqttConfig = 0x008D
SetKeypad2Config = 0x009C
EnableMatterCommissioning = 0x0110
SetMatterState = 0x0111
*/
}
void NukiWrapper::updateAuthData(bool retrieved)
{
if(!isPinValid())

View File

@@ -69,6 +69,7 @@ private:
bool updateKeyTurnerState();
void updateBatteryState();
void updateConfig();
void updateDebug();
void updateAuthData(bool retrieved);
void updateKeypad(bool retrieved);
void updateTimeControl(bool retrieved);
@@ -140,6 +141,7 @@ private:
bool _keypadEnabled = false;
bool _forceId = false;
bool _isUltra = false;
bool _isDebugging = false;
uint _maxKeypadCodeCount = 0;
uint _maxTimeControlEntryCount = 0;
uint _maxAuthEntryCount = 0;

View File

@@ -6642,7 +6642,7 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
response.print("\n\n------------ GPIO ------------\n");
response.print("\nRetain Input GPIO MQTT state: ");
response.print(_preferences->getBool(preference_retain_gpio, false) ? "Yes" : "No");
response.print(_preferences->getBool(preference_retain_gpio, false) ? "Yes\n" : "No\n");
String gpioStr = "";
_gpio->getConfigurationText(gpioStr, _gpio->pinConfiguration());
response.print(gpioStr);
@@ -6977,6 +6977,9 @@ const std::vector<std::pair<String, String>> WebCfgServer::getNetworkDetectionOp
options.push_back(std::make_pair("9", "ETH01-Evo"));
options.push_back(std::make_pair("13", "Waveshare ESP32-S3-ETH / ESP32-S3-ETH-POE"));
options.push_back(std::make_pair("14", "LilyGO T-ETH-Lite-ESP32S3"));
options.push_back(std::make_pair("15", "Waveshare ESP32-P4-NANO"));
options.push_back(std::make_pair("16", "Waveshare ESP32-P4-Module-DEV-KIT"));
options.push_back(std::make_pair("17", "ESP32-P4-Function-EV-Board"));
options.push_back(std::make_pair("11", "Custom LAN module"));
return options;

View File

@@ -15,5 +15,8 @@ enum class NetworkDeviceType
ETH01_Evo,
Waveshare_ESP32_S3_ETH,
LilyGO_T_ETH_Lite_S3,
Waveshare_ESP32_P4_NANO,
Waveshare_ESP32_P4_Module_DEV_KIT,
ESP32_P4_Function_EV_Board,
CUSTOM
};

View File

@@ -20,29 +20,39 @@ const String WifiDevice::deviceName() const
void WifiDevice::initialize()
{
ssid = _preferences->getString(preference_wifi_ssid, "");
ssid.trim();
pass = _preferences->getString(preference_wifi_pass, "");
pass.trim();
WiFi.setHostname(_hostname.c_str());
if (_hostname != "fakep4forhosted") {
ssid = _preferences->getString(preference_wifi_ssid, "");
ssid.trim();
pass = _preferences->getString(preference_wifi_pass, "");
pass.trim();
WiFi.setHostname(_hostname.c_str());
WiFi.onEvent([&](WiFiEvent_t event, WiFiEventInfo_t info)
{
onWifiEvent(event, info);
});
WiFi.onEvent([&](WiFiEvent_t event, WiFiEventInfo_t info)
{
onWifiEvent(event, info);
});
if(isWifiConfigured())
{
Log->println(String("Attempting to connect to saved SSID ") + String(ssid));
_openAP = false;
if(isWifiConfigured())
{
Log->println(String("Attempting to connect to saved SSID ") + String(ssid));
_openAP = false;
}
else
{
Log->println("No SSID or Wifi password saved, opening AP");
_openAP = true;
}
scan(false, true);
}
else
{
Log->println("No SSID or Wifi password saved, opening AP");
_openAP = true;
WiFi.disconnect(true);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(5000);
Log->println("Dummy WiFi device for Hosted on P4 done");
}
scan(false, true);
return;
}

View File

@@ -11,6 +11,9 @@
NetworkDevice *NetworkDeviceInstantiator::Create(NetworkDeviceType networkDeviceType, String hostname, Preferences *preferences, IPConfiguration *ipConfiguration)
{
NetworkDevice* device = nullptr;
#if defined(CONFIG_IDF_TARGET_ESP32P4)
bool fakedevice = true;
#endif
switch (networkDeviceType)
{
@@ -91,7 +94,35 @@ NetworkDevice *NetworkDeviceInstantiator::Create(NetworkDeviceType networkDevice
ETH_PHY_SPI_MOSI_ETHLITES3_W5500,
ETH_PHY_W5500);
break;
#if defined(CONFIG_IDF_TARGET_ESP32P4)
case NetworkDeviceType::Waveshare_ESP32_P4_NANO:
device = new EthernetDevice(hostname, preferences, ipConfiguration, "Waveshare ESP32-P4-NANO",
1,
51,
31,
52,
ETH_PHY_IP101,
ETH_CLOCK_GPIO0_IN);
break;
case NetworkDeviceType::Waveshare_ESP32_P4_Module_DEV_KIT:
device = new EthernetDevice(hostname, preferences, ipConfiguration, "Waveshare ESP32-P4-Module-DEV-KIT",
1,
51,
31,
52,
ETH_PHY_IP101,
ETH_CLOCK_GPIO0_IN);
break;
case NetworkDeviceType::ESP32_P4_Function_EV_Board:
device = new EthernetDevice(hostname, preferences, ipConfiguration, "ESP32-P4-Function-EV-Board",
1,
51,
31,
52,
ETH_PHY_IP101,
ETH_CLOCK_GPIO0_IN);
break;
#endif
case NetworkDeviceType::CUSTOM:
{
int custPHY = preferences->getInt(preference_network_custom_phy, 0);
@@ -153,6 +184,9 @@ NetworkDevice *NetworkDeviceInstantiator::Create(NetworkDeviceType networkDevice
else
{
device = new WifiDevice(hostname, preferences, ipConfiguration);
#if defined(CONFIG_IDF_TARGET_ESP32P4)
fakedevice = false;
#endif
}
#endif
}
@@ -183,9 +217,15 @@ NetworkDevice *NetworkDeviceInstantiator::Create(NetworkDeviceType networkDevice
#ifndef CONFIG_IDF_TARGET_ESP32H2
case NetworkDeviceType::WiFi:
device = new WifiDevice(hostname, preferences, ipConfiguration);
#if defined(CONFIG_IDF_TARGET_ESP32P4)
fakedevice = false;
#endif
break;
default:
device = new WifiDevice(hostname, preferences, ipConfiguration);
#if defined(CONFIG_IDF_TARGET_ESP32P4)
fakedevice = false;
#endif
break;
#else
default:
@@ -202,5 +242,16 @@ NetworkDevice *NetworkDeviceInstantiator::Create(NetworkDeviceType networkDevice
#endif
}
#if defined(CONFIG_IDF_TARGET_ESP32P4)
if (fakedevice) {
Log->println("Create dummy WiFi device for Hosted on P4");
NetworkDevice* device2 = nullptr;
device2 = new WifiDevice("fakep4forhosted", preferences, ipConfiguration);
device2->initialize();
delete device2;
device2 = NULL;
}
#endif
return device;
}

View File

@@ -38,6 +38,12 @@ NetworkDeviceType NetworkUtil::GetDeviceTypeFromPreference(int hardwareDetect, i
return NetworkDeviceType::Waveshare_ESP32_S3_ETH;
case 14:
return NetworkDeviceType::LilyGO_T_ETH_Lite_S3;
case 15:
return NetworkDeviceType::Waveshare_ESP32_P4_NANO;
case 16:
return NetworkDeviceType::Waveshare_ESP32_P4_Module_DEV_KIT;
case 17:
return NetworkDeviceType::ESP32_P4_Function_EV_Board;
default:
Log->println("Unknown hardware selected, falling back to Wi-Fi.");
return NetworkDeviceType::WiFi;

View File

@@ -2,8 +2,16 @@ CONFIG_SPIRAM=y
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC=y
CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT=y
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4096
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=50768
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534
CONFIG_LWIP_TCP_WND_DEFAULT=65534
CONFIG_LWIP_TCP_RECVMBOX_SIZE=64
CONFIG_LWIP_UDP_RECVMBOX_SIZE=64
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64
CONFIG_LWIP_TCP_SACK_OUT=y
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=64
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64
@@ -11,14 +19,7 @@ CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
CONFIG_ESP_WIFI_TX_BA_WIN=32
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP_WIFI_RX_BA_WIN=32
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534
CONFIG_LWIP_TCP_WND_DEFAULT=65534
CONFIG_LWIP_TCP_RECVMBOX_SIZE=64
CONFIG_LWIP_UDP_RECVMBOX_SIZE=64
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64
CONFIG_LWIP_TCP_SACK_OUT=y
CONFIG_BT_NIMBLE_TRANSPORT_UART=n
CONFIG_ESP_HCI_VHCI=y
CONFIG_ESP_WIFI_REMOTE_ENABLED=y
CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y
CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7
@@ -27,4 +28,12 @@ CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=16
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
CONFIG_ESP_HCI_VHCI=y
CONFIG_BT_CONTROLLER_DISABLED=y
CONFIG_BT_BLUEDROID_ENABLED=n
CONFIG_BT_NIMBLE_TRANSPORT_UART=n
CONFIG_ESP_ENABLE_BT=y
CONFIG_BT_NIMBLE_ENABLED=y
CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y