From 8e6bc37785ea8f7d01fecca86299a9077bd6b378 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 19 Mar 2026 13:41:04 -1000 Subject: [PATCH 1/2] Ensure non-zero seed after random_bytes() --- esphome/core/helpers.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/esphome/core/helpers.cpp b/esphome/core/helpers.cpp index 1b6f8caf717..ee99c541963 100644 --- a/esphome/core/helpers.cpp +++ b/esphome/core/helpers.cpp @@ -172,6 +172,7 @@ uint32_t random_uint32() { // a separate bool flag (4 bytes BSS + branch on every call). if (splitmix32_state == 0) { random_bytes(reinterpret_cast(&splitmix32_state), sizeof(splitmix32_state)); + splitmix32_state |= 1; // ensure non-zero seed } splitmix32_state += 0x9e3779b9u; uint32_t z = splitmix32_state; From d16175758872b38df1c78ed37540c0a819d06321 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 19 Mar 2026 14:26:08 -1000 Subject: [PATCH 2/2] turns out random_bytes was broken on nrf52 --- esphome/components/zephyr/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/esphome/components/zephyr/__init__.py b/esphome/components/zephyr/__init__.py index b8a091feb92..348e7a3cf2d 100644 --- a/esphome/components/zephyr/__init__.py +++ b/esphome/components/zephyr/__init__.py @@ -122,6 +122,8 @@ def zephyr_to_code(config: ConfigType) -> None: zephyr_add_prj_conf("FPU", True) zephyr_add_prj_conf("NEWLIB_LIBC_FLOAT_PRINTF", True) zephyr_add_prj_conf("STD_CPP20", True) + # random_bytes() uses sys_rand_get() which requires the entropy subsystem + zephyr_add_prj_conf("ENTROPY_GENERATOR", True) # os: ***** USAGE FAULT ***** # os: Illegal load of EXC_RETURN into PC