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"