diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3f4bafc..cb08f74 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -157,8 +157,7 @@ jobs:
mkdir -p webflash/
mkdir -p resources/
mkdir -p src/
- cp -vf release/*/nuki_hub_*.bin ota/
- cp -vf release/*/webflash_nuki_hub_*.bin webflash/
+ cp -vf release/*/nuki_hub_*.bin ota/
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
cp -vf master/src/Config.h src/Config.h
python3 resources/ota_manifest.py release $Version
diff --git a/README.md b/README.md
index 01ba2b9..10de3e7 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,9 @@ See the "[Connecting via Ethernet](#connecting-via-ethernet-optional)" section f
We don't recommend using single-core ESP32 devices (ESP32-C3, ESP32-C6, ESP32-H2, ESP32-Solo1).
Although Nuki Hub supports single-core devices, Nuki Hub uses both CPU cores (if available) to process tasks (e.g. HTTP server/MQTT client/BLE scanner/BLE client) and thus runs much better on dual-core devices.
+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.
+In all newer models (e.g. ESP32-S3, ESP32-P4, ESP32-C3, ESP32-C6, ESP32-H2) these unexpected crashed haven't been seen.
+
When buying a new device in 2025 we can only 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).
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.
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 (C6 or ESP32-P4 with C6 module)
@@ -71,17 +74,15 @@ Other considerations:
Devices ranked best-to-worst:
- ESP32-P4 with ESP32-C6-MINI-1 module (UNTESTED)
- ESP32-S3 with PSRAM
-- ......
+- ......
+(Devices below will not support some Nuki Hub functions, be slower and/or are more likely to experience unexpected crashed)
+- ESP32-S3 without PSRAM
- ......
- ESP32 with PSRAM
-- ......
-(Devices below will not support some Nuki Hub functions)
- ......
-- ESP32-S3 without PSRAM
- ESP32 without PSRAM
- ......
-(Devices below will not support more Nuki Hub functions)
-- ......
+(Devices below will not support more Nuki Hub functions, be slower and/or are more likely to experience unexpected crashed)
- ESP32-C6
- ESP32-solo1
- ESP32-C3
diff --git a/index.html b/index.html
index 5062380..d74abd8 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
type="module"
src="https://unpkg.com/esp-web-tools/dist/web/install-button.js?module">
-
+
Note: If flashing doesn't work, press and hold the "BOOT" switch, then click "Install".
diff --git a/pio_package_post.py b/pio_package_post.py
index a4e333a..456b351 100644
--- a/pio_package_post.py
+++ b/pio_package_post.py
@@ -28,11 +28,13 @@ def copy_files(source, target, env):
project_dir = env.get('PROJECT_DIR')
board = get_board_name(env)
- if "partitions.bin" in file.name:
- shutil.copy(file, f"{target_dir}/nuki_hub.{file.name}")
- elif "firmware" in file.stem:
+ if "firmware" in file.stem:
shutil.copy(file, f"{target_dir}/nuki_hub_{board}{file.suffix}")
shutil.copy(f"{project_dir}/updater/release/{board}/updater.bin", f"{target_dir}/nuki_hub_updater_{board}{file.suffix}")
+ elif "bootloader" in file.stem:
+ shutil.copy(file, f"{target_dir}/nuki_hub_bootloader_{board}{file.suffix}")
+ elif "partitions" in file.stem:
+ shutil.copy(file, f"{target_dir}/nuki_hub_partitions_{board}{file.suffix}")
else:
shutil.copy(file, f"{target_dir}/{file.name}")
@@ -79,4 +81,4 @@ env.AddPostAction("$BUILD_DIR/partitions.bin", copy_files)
env.AddPostAction("$BUILD_DIR/bootloader.bin", copy_files)
env.AddPostAction("$BUILD_DIR/firmware.elf", copy_files)
-env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", merge_bin)
\ No newline at end of file
+#env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", merge_bin)
\ No newline at end of file
diff --git a/resources/how-to-flash.txt b/resources/how-to-flash.txt
index 1775b88..1e2bd2c 100644
--- a/resources/how-to-flash.txt
+++ b/resources/how-to-flash.txt
@@ -24,64 +24,64 @@ Howto flash (Espressif Flash Download Tools)
ESP32
e000 boot_app0.bin
-1000 bootloader.bin
-8000 nuki_hub.partitions.bin
+1000 nuki_hub_bootloader_esp32.bin
+8000 nuki_hub_partitions_esp32.bin
10000 nuki_hub_esp32.bin
280000 nuki_hub_updater_esp32.bin
ESP32-GL-S10
e000 boot_app0.bin
-1000 bootloader.bin
-8000 nuki_hub.partitions.bin
+1000 nuki_hub_bootloader_esp32.bin
+8000 nuki_hub_partitions_esp32.bin
10000 nuki_hub_esp32.bin
280000 nuki_hub_updater_esp32.bin
ESP32-S3
e000 boot_app0.bin
-0 bootloader.bin
-8000 nuki_hub.partitions.bin
+0 nuki_hub_bootloader_esp32s3.bin
+8000 nuki_hub_partitions_esp32s3.bin
10000 nuki_hub_esp32s3.bin
280000 nuki_hub_updater_esp32s3.bin
ESP32-S3-OCT
e000 boot_app0.bin
-0 bootloader.bin
-8000 nuki_hub.partitions.bin
+0 nuki_hub_bootloader_esp32s3oct.bin
+8000 nuki_hub_partitions_esp32s3oct.bin
10000 nuki_hub_esp32s3oct.bin
280000 nuki_hub_updater_esp32s3oct.bin
ESP32-C3
e000 boot_app0.bin
-0 bootloader.bin
-8000 nuki_hub.partitions.bin
+0 nuki_hub_bootloader_esp32c3.bin
+8000 nuki_hub_partitions_esp32c3.bin
10000 nuki_hub_esp32c3.bin
280000 nuki_hub_updater_esp32c3.bin
ESP32-C6
e000 boot_app0.bin
-0 bootloader.bin
-8000 nuki_hub.partitions.bin
+0 nuki_hub_bootloader_esp32c6.bin
+8000 nuki_hub_partitions_esp32c6.bin
10000 nuki_hub_esp32c6.bin
280000 nuki_hub_updater_esp32c6.bin
ESP32-H2
e000 boot_app0.bin
-0 bootloader.bin
-8000 nuki_hub.partitions.bin
+0 nuki_hub_bootloader_esp32h2.bin
+8000 nuki_hub_partitions_esp32h2.bin
10000 nuki_hub_esp32h2.bin
280000 nuki_hub_updater_esp32h2.bin
ESP32-P4
e000 boot_app0.bin
-0 bootloader.bin
-8000 nuki_hub.partitions.bin
+0 nuki_hub_bootloader_esp32p4.bin
+8000 nuki_hub_partitions_esp32p4.bin
10000 nuki_hub_esp32p4.bin
280000 nuki_hub_updater_esp32p4.bin
ESP32-SOLO1
e000 boot_app0.bin
-1000 bootloader.bin
-8000 nuki_hub.partitions.bin
+1000 nuki_hub_bootloader_esp32-solo1.bin
+8000 nuki_hub_partitions_esp32-solo1.bin
10000 nuki_hub_esp32-solo1.bin
280000 nuki_hub_updater_esp32-solo1.bin
@@ -99,38 +99,38 @@ As an alternative to the Download Tools, you can also use the esptool from the E
## ESP32
-esptool.py --chip esp32 --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 0x1000 bootloader.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32 --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 0x1000 nuki_hub_bootloader_esp32.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub_partitions_esp32.bin
## ESP32-GL-S10
-esptool.py --chip esp32 --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 0x1000 bootloader.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32 --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 0x1000 nuki_hub_bootloader_esp32.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub_partitions_esp32.bin
## ESP32-S3
-esptool.py --chip esp32s3 --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 bootloader.bin 0x10000 nuki_hub_esp32s3.bin 0x270000 nuki_hub_updater_esp32s3.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32s3 --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_esp32s3.bin 0x10000 nuki_hub_esp32s3.bin 0x270000 nuki_hub_updater_esp32s3.bin 0x8000 nuki_hub_partitions_esp32s3.bin
## ESP32-S3-OCT
-esptool.py --chip esp32s3 --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 bootloader.bin 0x10000 nuki_hub_esp32s3oct.bin 0x270000 nuki_hub_updater_esp32s3oct.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32s3 --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_esp32s3oct.bin 0x10000 nuki_hub_esp32s3oct.bin 0x270000 nuki_hub_updater_esp32s3oct.bin 0x8000 nuki_hub_partitions_esp32s3oct.bin
## ESP32-C3
-esptool.py --chip esp32c3 --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 bootloader.bin 0x10000 nuki_hub_esp32c3.bin 0x270000 nuki_hub_updater_esp32c3.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32c3 --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_esp32c3.bin 0x10000 nuki_hub_esp32c3.bin 0x270000 nuki_hub_updater_esp32c3.bin 0x8000 nuki_hub_partitions_esp32c3.bin
## ESP32-C6
-esptool.py --chip esp32c6 --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 bootloader.bin 0x10000 nuki_hub_esp32c6.bin 0x270000 nuki_hub_updater_esp32c6.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32c6 --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_esp32c6.bin 0x10000 nuki_hub_esp32c6.bin 0x270000 nuki_hub_updater_esp32c6.bin 0x8000 nuki_hub_partitions_esp32c6.bin
## ESP32-H2
-esptool.py --chip esp32h2 --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 bootloader.bin 0x10000 nuki_hub_esp32h2.bin 0x270000 nuki_hub_updater_esp32h2.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32h2 --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_esp32h2.bin 0x10000 nuki_hub_esp32h2.bin 0x270000 nuki_hub_updater_esp32h2.bin 0x8000 nuki_hub_partitions_esp32h2.bin
## 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 bootloader.bin 0x10000 nuki_hub_esp32p4.bin 0x270000 nuki_hub_updater_esp32p4.bin 0x8000 nuki_hub.partitions.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 0x0 nuki_hub_bootloader_esp32p4.bin 0x10000 nuki_hub_esp32p4.bin 0x270000 nuki_hub_updater_esp32p4.bin 0x8000 nuki_hub_partitions_esp32p4.bin
## ESP32-SOLO1
-esptool.py --chip esp32 --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 0x1000 bootloader.bin 0x10000 nuki_hub_esp32-solo1.bin 0x270000 nuki_hub_updater_esp32-solo1.bin 0x8000 nuki_hub.partitions.bin
+esptool.py --chip esp32 --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 0x1000 nuki_hub_bootloader_esp32-solo1.bin 0x10000 nuki_hub_esp32-solo1.bin 0x270000 nuki_hub_updater_esp32-solo1.bin 0x8000 nuki_hub_partitions_esp32-solo1.bin
Adjust the serial device and path to the binaries if necessary.
\ No newline at end of file
diff --git a/src/Config.h b/src/Config.h
index 5649086..ecb64dc 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -5,7 +5,7 @@
#define NUKI_HUB_VERSION "9.10"
#define NUKI_HUB_VERSION_INT (uint32_t)910
#define NUKI_HUB_BUILD "unknownbuildnr"
-#define NUKI_HUB_DATE "2025-04-02"
+#define NUKI_HUB_DATE "2025-04-06"
#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"