MR24HPC1 Communication Issue with ESPHome

I went away on holiday and when I came back two of my esphome sensors utilising a Seeed MR24HPC1 no longer communicate with Home Assistant.

These worked in mid December but I updated Esphome when away (sensors were switched off) from 2025.12.1 to 2025.12.5 and when I got back and switched the sensors back on they no longer send anything over UART and just report “Unknown” for all created sensors or that board. Other boards connected report fine, I have illuminance and IR detection working fine. Boards have been updated to 2025.12.5 with no change to output.

I have gone through my configs and looked over the UART settings as well as looking at differences in the recent releases but nothing looks significant. I have turned on UART debug which indicates that nothing is coming back from the sensor. [D][uart_debug:157]: >>> "SY\b\x80\x00\x01\x0FDTC" Usually I would get a stream of messages from the mmWave sensor.

If one of the devices didnt work I would put it down to a faulty board, but two of them seems a bit too coincidental.

My UART settings for one o the boards is this:

  #id: uart_bus
  baud_rate:  115200
  rx_pin: 5
  tx_pin: 4
  parity: NONE
  stop_bits: 1
  debug:
    direction: BOTH
    dummy_receiver: false
    after:
      delimiter: "\n"
    sequence:
      - lambda: UARTDebug::log_string(direction, bytes);

I am going t try building a new board with a spare mmWave sensor to see if I can repeat the issue and currently I have tweaked the logic of the sensors to just relay on the IR motion rather than presence.

Any ideas or help would be appreciated. Happy to provide more information if needed.

If those boards were still on previous esphome 12.1 when they stopped working, only hardware issue can be considered.

Turn on verbose debug mode in your code.
Post your yaml and ESPHome compile and short portion of the run log, suitably formatted </>.

Spent some time changing parts of the config over lunch today but didnt seem to make any ground. I have taken some cuts of the logs files from the connection to the device in Esphome.

This is the compile log and the short portion of the run log. I did change the log level to info but then for some reason nothing appeared in the log after it was connected. Switching it to Debug seems to generate the default logging.

INFO Reading configuration /config/esphome/toiletmotion.yaml...
WARNING The minimum WiFi authentication mode (wifi -> min_auth_mode) is not set. This controls the weakest encryption your device will accept when connecting to WiFi. Currently defaults to WPA (less secure), but will change to WPA2 (more secure) in 2026.6.0. WPA uses TKIP encryption which has known security vulnerabilities and should be avoided. WPA2 uses AES encryption which is significantly more secure. To silence this warning, explicitly set min_auth_mode under 'wifi:'. If your router supports WPA2 or WPA3, set 'min_auth_mode: WPA2'. If your router only supports WPA, set 'min_auth_mode: WPA'.
INFO Generating C++ source...
INFO Compiling app... Build path: /data/build/toiletmotion
Processing toiletmotion (board: esp01_1m; framework: arduino; platform: platformio/[email protected])
--------------------------------------------------------------------------------
HARDWARE: ESP8266 80MHz, 80KB RAM, 1MB Flash
Dependency Graph
|-- ESPAsyncTCP @ 2.0.0
|-- ESP8266WiFi @ 1.0
|-- ESPAsyncWebServer @ 3.7.10
|-- DNSServer @ 1.1.1
|-- ESP8266mDNS @ 1.2
|-- noise-c @ 0.1.10
Compiling .pioenvs/toiletmotion/src/esphome/components/api/api_connection.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/api_frame_helper.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/api_frame_helper_noise.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/api_pb2.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/api_pb2_service.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/api_server.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/list_entities.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/proto.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/api/subscribe_state.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/binary_sensor/automation.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/binary_sensor/binary_sensor.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/binary_sensor/filter.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/button/button.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/captive_portal/captive_portal.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/esp8266/core.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/esp8266/gpio.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/esp8266/helpers.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/esp8266/preferences.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/esphome/ota/ota_esphome.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/logger/logger.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/logger/logger_esp8266.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/md5/md5.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/mdns/mdns_component.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/mdns/mdns_esp8266.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/network/util.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/number/automation.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/number/number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/number/number_call.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/number/number_traits.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/ota/ota_backend.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/ota/ota_backend_arduino_esp8266.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/restart/button/restart_button.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/safe_mode/safe_mode.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/button/custom_mode_end_button.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/button/restart_button.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/number/custom_mode_number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/number/custom_unman_time_number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/number/existence_threshold_number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/number/motion_threshold_number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/number/motion_trigger_time_number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/number/motiontorest_time_number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/number/sensitivity_number.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/select/existence_boundary_select.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/select/motion_boundary_select.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/select/scene_mode_select.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/select/unman_time_select.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/seeed_mr24hpc1/switch/underlyFuc_switch.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/select/select.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/select/select_call.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/select/select_traits.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/sensor/automation.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/sensor/filter.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/sensor/sensor.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/sha256/sha256.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/socket/lwip_raw_tcp_impl.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/socket/socket.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/switch/automation.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/switch/switch.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/text_sensor/filter.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/text_sensor/text_sensor.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/uart/uart.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/uart/uart_component.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/uart/uart_component_esp8266.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/uart/uart_debugger.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/web_server/ota/ota_web_server.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/web_server_base/web_server_base.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/wifi/wifi_component.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/components/wifi/wifi_component_esp8266.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/application.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/color.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/component.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/component_iterator.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/controller_registry.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/entity_base.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/helpers.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/log.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/scheduler.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/time.cpp.o
Compiling .pioenvs/toiletmotion/src/esphome/core/util.cpp.o
Compiling .pioenvs/toiletmotion/src/main.cpp.o
Generating LD script .pioenvs/toiletmotion/ld/local.eagle.app.v6.common.ld
Compiling .pioenvs/toiletmotion/lib778/ESPAsyncTCP/AsyncPrinter.cpp.o
Compiling .pioenvs/toiletmotion/lib778/ESPAsyncTCP/ESPAsyncTCP.cpp.o
Compiling .pioenvs/toiletmotion/lib778/ESPAsyncTCP/ESPAsyncTCPbuffer.cpp.o
Compiling .pioenvs/toiletmotion/lib778/ESPAsyncTCP/SyncClient.cpp.o
Compiling .pioenvs/toiletmotion/lib778/ESPAsyncTCP/tcp_axtls.c.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/BearSSLHelpers.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/CertStoreBearSSL.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFi.cpp.o
Archiving .pioenvs/toiletmotion/lib778/libESPAsyncTCP.a
Indexing .pioenvs/toiletmotion/lib778/libESPAsyncTCP.a
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFiAP.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFiGratuitous.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFiMulti.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFiSTA-WPS.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFiSTA.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/ESP8266WiFiScan.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/WiFiClient.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/WiFiServer.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/WiFiServerSecureBearSSL.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/WiFiUdp.cpp.o
Compiling .pioenvs/toiletmotion/lib67b/ESP8266WiFi/enable_wifi_at_boot_time.cpp.o
Compiling .pioenvs/toiletmotion/libaf0/Hash/Hash.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/AsyncEventSource.cpp.o
Archiving .pioenvs/toiletmotion/libaf0/libHash.a
Indexing .pioenvs/toiletmotion/libaf0/libHash.a
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/AsyncJson.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/AsyncMessagePack.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/AsyncWebHeader.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/AsyncWebServerRequest.cpp.o
Archiving .pioenvs/toiletmotion/lib67b/libESP8266WiFi.a
Indexing .pioenvs/toiletmotion/lib67b/libESP8266WiFi.a
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/AsyncWebSocket.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/BackPort_SHA1Builder.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/ChunkPrint.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/Middleware.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/WebAuthentication.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/WebHandlers.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/WebRequest.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/WebResponses.cpp.o
Compiling .pioenvs/toiletmotion/lib75a/ESPAsyncWebServer/WebServer.cpp.o
Compiling .pioenvs/toiletmotion/libecb/DNSServer/DNSServer.cpp.o
Compiling .pioenvs/toiletmotion/lib3ff/ESP8266mDNS/ESP8266mDNS.cpp.o
Compiling .pioenvs/toiletmotion/lib3ff/ESP8266mDNS/LEAmDNS.cpp.o
Archiving .pioenvs/toiletmotion/lib75a/libESPAsyncWebServer.a
Indexing .pioenvs/toiletmotion/lib75a/libESPAsyncWebServer.a
Compiling .pioenvs/toiletmotion/lib3ff/ESP8266mDNS/LEAmDNS_Control.cpp.o
Archiving .pioenvs/toiletmotion/libecb/libDNSServer.a
Indexing .pioenvs/toiletmotion/libecb/libDNSServer.a
Compiling .pioenvs/toiletmotion/lib3ff/ESP8266mDNS/LEAmDNS_Helpers.cpp.o
Compiling .pioenvs/toiletmotion/lib3ff/ESP8266mDNS/LEAmDNS_Structs.cpp.o
Compiling .pioenvs/toiletmotion/lib3ff/ESP8266mDNS/LEAmDNS_Transfer.cpp.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_core/salsa/ref/core_salsa_ref.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_hash/crypto_hash.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_hash/sha256/hash_sha256.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_onetimeauth/crypto_onetimeauth.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_scalarmult/crypto_scalarmult.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/chacha20/stream_chacha20.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/crypto_stream.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/salsa20/stream_salsa20.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/crypto_verify/verify.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/randombytes/internal/randombytes_internal_random.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/randombytes/randombytes.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/randombytes/sysrandom/randombytes_sysrandom.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/sodium/codecs.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/sodium/core.c.o
Archiving .pioenvs/toiletmotion/lib3ff/libESP8266mDNS.a
Indexing .pioenvs/toiletmotion/lib3ff/libESP8266mDNS.a
Compiling .pioenvs/toiletmotion/libe52/libsodium/sodium/runtime.c.o
Compiling .pioenvs/toiletmotion/libe52/libsodium/sodium/utils.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/openssl/cipher-aesgcm.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/ref/cipher-aesgcm.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/ref/cipher-chachapoly.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/ref/dh-curve25519.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/ref/hash-blake2b.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/ref/hash-blake2s.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/ref/hash-sha256.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/sodium/cipher-aesgcm.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/sodium/cipher-chachapoly.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/sodium/dh-curve25519.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/sodium/hash-blake2b.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/backend/sodium/hash-sha256.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/aes/rijndael-alg-fst.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/blake2/blake2b.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/blake2/blake2s.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/chacha/chacha.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/donna/curve25519-donna-c64.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/donna/curve25519-donna.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/donna/poly1305-donna.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/sha2/sha256.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/sha2/sha512.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/crypto/x25519/x25519.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/cipherstate.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/dhstate.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/errors.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/handshakestate.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/hashstate.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/internal.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/names.c.o
Archiving .pioenvs/toiletmotion/libe52/libsodium.a
Indexing .pioenvs/toiletmotion/libe52/libsodium.a
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/patterns.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/rand_os.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/rand_sodium.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/randstate.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/signstate.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/symmetricstate.c.o
Compiling .pioenvs/toiletmotion/libadf/noise-c/protocol/util.c.o
Archiving .pioenvs/toiletmotion/libFrameworkArduinoVariant.a
Indexing .pioenvs/toiletmotion/libFrameworkArduinoVariant.a
Compiling .pioenvs/toiletmotion/FrameworkArduino/Crypto.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/Esp-frag.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/Esp-version.cpp.o
Archiving .pioenvs/toiletmotion/libadf/libnoise-c.a
Indexing .pioenvs/toiletmotion/libadf/libnoise-c.a
Compiling .pioenvs/toiletmotion/FrameworkArduino/Esp.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/FS.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/FSnoop.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/FunctionalInterrupt.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/HardwareSerial.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/IPAddress.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/LwipDhcpServer-NonOS.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/LwipDhcpServer.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/LwipIntf.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/LwipIntfCB.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/MD5Builder.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/Print.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/Schedule.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/StackThunk.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/Stream.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/StreamSend.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/Tone.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/TypeConversion.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/Updater.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/WMath.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/WString.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/abi.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/aes_unwrap.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/base64.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/cbuf.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/cont.S.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/cont_util.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_app_entry_noextra4k.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_eboot_command.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_features.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_flash_quirks.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_flash_utils.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_i2s.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_main.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_non32xfer.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_noniso.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_phy.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_postmortem.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_si2c.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_sigma_delta.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_spi_utils.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_timer.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_vm.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_waveform_phase.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_waveform_pwm.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_wiring.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_wiring_analog.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_wiring_digital.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_wiring_pulse.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_wiring_pwm.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/core_esp8266_wiring_shift.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/crc32.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/debug.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/exc-c-wrapper-handler.S.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/exc-sethandler.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/flash_hal.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/gdb_hooks.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/heap.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/hwdt_app_entry.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/libb64/cdecode.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/libb64/cencode.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/libc_replacements.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/mmu_iram.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/reboot_uart_dwnld.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/spiffs/spiffs_cache.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/spiffs/spiffs_check.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/spiffs/spiffs_gc.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/spiffs/spiffs_hydrogen.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/spiffs/spiffs_nucleus.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/spiffs_api.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/sqrt32.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/stdlib_noniso.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/time.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/uart.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/umm_malloc/umm_info.c.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/umm_malloc/umm_integrity.c.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/umm_malloc/umm_local.c.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/umm_malloc/umm_malloc.cpp.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/umm_malloc/umm_poison.c.o
Compiling .pioenvs/toiletmotion/FrameworkArduino/wpa2_eap_patch.cpp.o
Archiving .pioenvs/toiletmotion/libFrameworkArduino.a
Indexing .pioenvs/toiletmotion/libFrameworkArduino.a
Linking .pioenvs/toiletmotion/firmware.elf
RAM:   [====      ]  42.4% (used 34720 bytes from 81920 bytes)
Flash: [=====     ]  49.2% (used 503573 bytes from 1023984 bytes)
Building .pioenvs/toiletmotion/firmware.bin
esp8266_copy_factory_bin([".pioenvs/toiletmotion/firmware.bin"], [".pioenvs/toiletmotion/firmware.elf"])
esp8266_copy_ota_bin([".pioenvs/toiletmotion/firmware.bin"], [".pioenvs/toiletmotion/firmware.elf"])
======================== [SUCCESS] Took 115.97 seconds ========================
INFO Successfully compiled program.
INFO Connecting to [redacted] port 8266...
INFO Connected to [redacted]
INFO Uploading /data/build/toiletmotion/.pioenvs/toiletmotion/firmware.bin (507728 bytes)
INFO Compressed to 357351 bytes
Uploading: [============================================================] 100% Done...

INFO Upload took 7.15 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from [redacted] using esphome API
INFO Successfully resolved toiletmotion @ [redacted] in 0.000s
INFO Trying to connect to toiletmotion @ [redacted] in the background
INFO Successfully connected to toiletmotion @ [redacted] in 0.003s
INFO Successful handshake with toiletmotion @ [redacted] in 2.573s
[14:07:45.213][I][app:194]: ESPHome version 2025.12.5 compiled on Jan  8 2026, 14:06:16
[14:07:45.264][C][logger:261]: Logger:
[14:07:45.264][C][logger:261]:   Max Level: DEBUG
[14:07:45.264][C][logger:261]:   Initial Level: DEBUG
[14:07:45.264][C][logger:267]:   Log Baud Rate: 115200
[14:07:45.264][C][logger:267]:   Hardware UART: UART0
[14:07:45.264][C][uart.arduino_esp8266:131]: UART Bus:
[14:07:45.264][C][uart.arduino_esp8266:132]:   TX Pin: GPIO4
[14:07:45.264][C][uart.arduino_esp8266:133]:   RX Pin: GPIO5
[14:07:45.264][C][uart.arduino_esp8266:135]:   RX Buffer Size: 256
[14:07:45.264][C][uart.arduino_esp8266:137]:   Baud Rate: 115200 baud
[14:07:45.264][C][uart.arduino_esp8266:137]:   Data Bits: 8
[14:07:45.264][C][uart.arduino_esp8266:137]:   Parity: NONE
[14:07:45.264][C][uart.arduino_esp8266:137]:   Stop bits: 1
[14:07:45.264][C][uart.arduino_esp8266:146]:   Using software serial
[14:07:45.278][C][gpio.binary_sensor:016]: GPIO Binary Sensor 'Toilet Motion'
[14:07:45.289][C][gpio.binary_sensor:019]:   Device Class: 'motion'
[14:07:45.290][C][gpio.binary_sensor:072]:   Pin: GPIO2
[14:07:45.290][C][gpio.binary_sensor:073]:   Mode: interrupt
[14:07:45.290][C][gpio.binary_sensor:075]:   Interrupt Type: ANY_EDGE
[14:07:45.299][C][restart.button:014]: Restart Button 'Device Restart'
[14:07:45.299][C][restart.button:017]:   Icon: 'mdi:restart'
[14:07:45.331][C][captive_portal:118]: Captive Portal:
[14:07:45.350][C][wifi:1132]: WiFi:
[14:07:45.350][C][wifi:1132]:   Connected: YES
[14:07:45.363][C][wifi:897]:   Local MAC: [redacted]
[14:07:45.363][C][wifi:904]:   IP Address: [redacted]
[14:07:45.363][C][wifi:908]:   SSID: [redacted]
[14:07:45.363][C][wifi:908]:   BSSID: [redacted]
[14:07:45.363][C][wifi:908]:   Hostname: 'toiletmotion'
[14:07:45.363][C][wifi:908]:   Signal strength: -66 dB ▂▄▆█
[14:07:45.363][C][wifi:908]:   Channel: 3
[14:07:45.363][C][wifi:908]:   Subnet: 255.255.255.0
[14:07:45.363][C][wifi:908]:   Gateway: 192.168.0.1
[14:07:45.363][C][wifi:908]:   DNS1: 0.0.0.0
[14:07:45.363][C][wifi:908]:   DNS2: 0.0.0.0
[14:07:45.382][C][esphome.ota:092]: Over-The-Air updates:
[14:07:45.382][C][esphome.ota:092]:   Address: [redacted]:8266
[14:07:45.382][C][esphome.ota:092]:   Version: 2
[14:07:45.385][C][esphome.ota:099]:   Password configured
[14:07:45.396][C][safe_mode:018]: Safe Mode:
[14:07:45.396][C][safe_mode:018]:   Successful after: 60s
[14:07:45.396][C][safe_mode:018]:   Invoke after: 10 attempts
[14:07:45.396][C][safe_mode:018]:   Duration: 300s
[14:07:45.401][C][web_server.ota:241]: Web Server OTA
[14:07:45.415][C][api:211]: Server:
[14:07:45.415][C][api:211]:   Address: [redacted]:6053
[14:07:45.415][C][api:211]:   Listen backlog: 1
[14:07:45.415][C][api:211]:   Max connections: 4
[14:07:45.422][C][api:218]:   Noise encryption: YES
[14:07:45.423][C][mdns:177]: mDNS:
[14:07:45.423][C][mdns:177]:   Hostname: toiletmotion
[14:07:45.442][C][seeed_mr24hpc1:016]: MR24HPC1:
[14:07:45.445][C][seeed_mr24hpc1:016]:  Heartbeat Text Sensor 'Heartbeat'
[14:07:45.445][C][seeed_mr24hpc1:023]:    Icon: 'mdi:connection'
[14:07:45.445][C][seeed_mr24hpc1:016]:  Has Target Binary Sensor 'Presence Information'
[14:07:45.460][C][seeed_mr24hpc1:019]:    Device Class: 'occupancy'
[14:07:45.460][C][seeed_mr24hpc1:017]:  Custom Presence Of Detection Sensor 'Static Distance'
[14:07:45.460][C][seeed_mr24hpc1:017]:    State Class: ''
[14:07:45.460][C][seeed_mr24hpc1:017]:    Unit of Measurement: 'm'
[14:07:45.460][C][seeed_mr24hpc1:017]:    Accuracy Decimals: 2
[14:07:45.468][C][seeed_mr24hpc1:027]:    Device Class: 'distance'
[14:07:45.480][C][seeed_mr24hpc1:031]:    Icon: 'mdi:signal-distance-variant'
[14:07:45.480][C][seeed_mr24hpc1:017]:  Movement Signs Sensor 'Body Movement Parameter'
[14:07:45.480][C][seeed_mr24hpc1:017]:    State Class: ''
[14:07:45.480][C][seeed_mr24hpc1:017]:    Unit of Measurement: ''
[14:07:45.480][C][seeed_mr24hpc1:017]:    Accuracy Decimals: 0
[14:07:45.501][C][seeed_mr24hpc1:031]:    Icon: 'mdi:human-greeting-variant'
[14:07:45.513][C][seeed_mr24hpc1:017]:  Custom Motion Distance Sensor 'Motion Distance'
[14:07:45.513][C][seeed_mr24hpc1:017]:    State Class: ''
[14:07:45.513][C][seeed_mr24hpc1:017]:    Unit of Measurement: 'm'
[14:07:45.513][C][seeed_mr24hpc1:017]:    Accuracy Decimals: 2
[14:07:45.513][C][seeed_mr24hpc1:031]:    Icon: 'mdi:signal-distance-variant'
[14:07:45.525][C][seeed_mr24hpc1:017]:  Custom Spatial Static Sensor 'Existence Energy'
[14:07:45.525][C][seeed_mr24hpc1:017]:    State Class: ''
[14:07:45.525][C][seeed_mr24hpc1:017]:    Unit of Measurement: ''
[14:07:45.525][C][seeed_mr24hpc1:017]:    Accuracy Decimals: 0
[14:07:45.537][C][seeed_mr24hpc1:027]:    Device Class: 'energy'
[14:07:45.549][C][seeed_mr24hpc1:031]:    Icon: 'mdi:counter'
[14:07:45.549][C][seeed_mr24hpc1:017]:  Custom Spatial Motion Sensor 'Motion Energy'
[14:07:45.549][C][seeed_mr24hpc1:017]:    State Class: ''
[14:07:45.549][C][seeed_mr24hpc1:017]:    Unit of Measurement: ''
[14:07:45.549][C][seeed_mr24hpc1:017]:    Accuracy Decimals: 0
[14:07:45.564][C][seeed_mr24hpc1:027]:    Device Class: 'energy'
[14:07:45.572][C][seeed_mr24hpc1:031]:    Icon: 'mdi:counter'
[14:07:45.572][C][seeed_mr24hpc1:017]:  Custom Motion Speed Sensor 'Motion Speed'
[14:07:45.572][C][seeed_mr24hpc1:017]:    State Class: ''
[14:07:45.572][C][seeed_mr24hpc1:017]:    Unit of Measurement: 'm/s'
[14:07:45.572][C][seeed_mr24hpc1:017]:    Accuracy Decimals: 2
[14:07:45.588][C][seeed_mr24hpc1:027]:    Device Class: 'speed'
[14:07:45.607][C][seeed_mr24hpc1:031]:    Icon: 'mdi:run-fast'
[14:07:45.607][C][seeed_mr24hpc1:092]:  Underly Open Function Switch 'Underlying Open Function Info Output Switch'
[14:07:45.607][C][seeed_mr24hpc1:092]:    Restore Mode: always OFF
[14:07:45.607][C][seeed_mr24hpc1:100]:    Icon: 'mdi:electric-switch'
[14:07:45.617][C][seeed_mr24hpc1:109]:    Device Class: 'switch'
[14:07:45.617][C][seeed_mr24hpc1:014]:  Restart Button 'Module Restart'
[14:07:45.629][C][seeed_mr24hpc1:017]:    Icon: 'mdi:restart-alert'
[14:07:45.629][C][seeed_mr24hpc1:047]:  Scene Mode Select 'Scene'
[14:07:45.644][C][seeed_mr24hpc1:047]:    Icon: 'mdi:hoop-house'
[14:07:45.644][C][seeed_mr24hpc1:048]:  Unman Time Select 'Time For Entering No Person State (Standard Function)'
[14:07:45.653][C][seeed_mr24hpc1:048]:    Icon: 'mdi:timeline-clock'
[14:07:45.653][C][seeed_mr24hpc1:049]:  Existence Boundary Select 'Existence Boundary'
[14:07:45.664][C][seeed_mr24hpc1:050]:  Motion Boundary Select 'Motion Boundary'
[14:07:45.676][C][seeed_mr24hpc1:016]:  Sensitivity Number 'Sensitivity'
[14:07:45.676][C][seeed_mr24hpc1:019]:    Icon: 'mdi:archive-check-outline'
[14:07:45.947][D][uart_debug:157]: >>> "SY\b\x80\x00\x01\x0FDTC"
[14:07:53.942][D][uart_debug:157]: >>> "SY\b\x80\x00\x01\x0FDTC"
[14:08:01.940][D][uart_debug:157]: >>> "SY\b\x80\x00\x01\x0FDTC"

And this is the Yaml config for the device:

esphome:
  name: toiletmotion
  friendly_name: toiletmotion

esp8266:
  board: esp01_1m

seeed_mr24hpc1:

# Enable logging
logger:
  level: DEBUG

# Enable Home Assistant API
api:
  encryption:
    key: [redacted]

ota:
  - platform: esphome
    password: [redacted]

button:
  - platform: restart
    name: "Device Restart"
  - platform: seeed_mr24hpc1
    restart:
      name: "Module Restart"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  fast_connect: true
  manual_ip:
    static_ip: [redacted]
    gateway: 192.168.0.1
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Toiletmotion Fallback Hotspot"
    password: [redacted]

captive_portal:

uart:
  #id: uart_bus
  baud_rate:  115200
  rx_pin: 5
  tx_pin: 4
  parity: NONE
  stop_bits: 1
  debug:
    direction: BOTH
    dummy_receiver: false
    after:
      delimiter: "\n"
    sequence:
      - lambda: UARTDebug::log_string(direction, bytes);

binary_sensor:
  - platform: gpio
    pin: 2
    name: "Toilet Motion"
    device_class: motion
    filters:
      - delayed_off: 2s
  
  - platform: seeed_mr24hpc1
    has_target:
      name: "Presence Information"
    
select:
  - platform: seeed_mr24hpc1
    scene_mode:
      name: "Scene"
    unman_time:
      name: "Time For Entering No Person State (Standard Function)"
    existence_boundary:
      name: "Existence Boundary"
    motion_boundary:
      name: "Motion Boundary"

number:
  - platform: seeed_mr24hpc1
    sensitivity:
      name: "Sensitivity"

text_sensor:
  - platform: seeed_mr24hpc1
    heart_beat:
      name: "Heartbeat"

switch:
  - platform: seeed_mr24hpc1
    underlying_open_function:
      name: Underlying Open Function Info Output Switch

sensor:
  - platform: seeed_mr24hpc1
    custom_presence_of_detection:
      name: "Static Distance"
    movement_signs:
      name: "Body Movement Parameter"
    custom_motion_distance:
      name: "Motion Distance"
    custom_spatial_static_value:
      name: "Existence Energy"
    custom_spatial_motion_value:
      name: "Motion Energy"
    custom_motion_speed:
      name: "Motion Speed"

There seems to be no compile errors other than the one regarding WPA being set incorrectly.

I recall seeing somewhere that you can set up a test uart loopback to make sure the uart is functioning correctly independent of the sensor.

It might even be that you just hook up a single wire directly between the esp Rx and Tx pins, then send a tx message, and see if it is also received.

This way you can tell if it’s the sensor which is unresponsive or some issue with your esp / Rx.

1 Like

So I set up a brand new ESP8266 and generated a new config for one of the original MR24HPC1 mmWave sensor and connected it. Same result which does indicate the sensor is now broken and not the ESP.

It does seem to correctly powering up and nothing is shorting or drawing too much current. The MR24HPC1 is also slightly warm to the touch meaning it is doing something.

Tomorrow I will solder up one of my spare sensors and give that a go. If it was just one board that failed I would assume that the board just died, but the fact it was two that failed in the same way over the same period is just too suspicious.

I shouldn’t have updated anything on ESPHome side whilst I was away to remove that variable… but hey it is what it is.

You wrote at the beginning

Sorry I meant updating ESPHome in general whilst away. I can also confirm that when I turned the two boards in question back on when returning form holiday they didnt work. I thought updating to the latest version of ESPHome might fix it but it didn’t. They were running 2025.12.0 2 days before I left where I know they worked at the time.

Despite saying I would do it tomorrow I did solder up a new mmWave sensor and connected it to the new board. Same result. Device complies fine but gets no data back from the mmWave sensor.

Decided to then roll back ESPHome Builder to 2025.11.5 to rule out any funny business with 12.0 and same result. Deleted the old files and recompiled downloading a new build and still same behaviour.

I have run out of ideas now. I am still convinced it is an ESPHome issue as I have changed both the ESP Board and the Sensor and it is behaving in the same way. The only other thing that is different is the Home Assistant Build itself. I could roll that back to 2025.12.3 which it was at when I left…

Esphome devices don’t care about your infrastructure. If you didn’t change their firmware in the first place, no reason to think it’s esphome issue…

Ok then if it isnt an ESPHome issue then what can it be?

I do have UART in use on two other ESPboards, one connected to an IKEA Air Quality señsor and another to my house alarm. Both of these seem to behave fine…

There is just no response for these seeed_mr24hpc1 sensors I dont quite believe all of them are broken in the exact same way, even ones that hadn’t even been opened prior to today?

Do I need to buy another mmWave board and see what happens?

Did you try a uart loopback?

Hello there

For sure it’s either ESPHOME or HASS because I have the exact same issue.
Tried everything i can come up with and these just do not work anymore.

I have 3 of these and all stopped working after the update on the exact same date. These are the best sensors of the kind i ever had so far.

No idea now how to fix this

My device config:

substitutions:
  name: "reddacted"
  friendly_name: "reddacted"

esphome:
  name: "${name}"
  friendly_name: "${friendly_name}"
  name_add_mac_suffix: true

  project:
    name: "seeedstudio.mmwave_kit"
    version: "2.0"

  platformio_options:
    board_build.flash_mode: dio
    board_build.mcu: esp32c3

  # <-- ON_BOOT must go here, indented under 'esphome:'
  on_boot:
    priority: 600
    then:
      - delay: 2s
      - uart.write:
          id: uart_mmw
          data: [0x55, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x5A]

external_components:
  - source: github://limengdu/mmwave-kit-external-components@main
    refresh: 0s

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino


logger:
  hardware_uart: USB_SERIAL_JTAG
  level: DEBUG
  logs:
    uart: DEBUG
    seeed_mr24hpc1: DEBUG

api:
  encryption:
    key: "reddacted"

ota:
  - platform: esphome
    password: "reddacted"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  use_address: reddacted
  ap:
    ssid: "reddacted"
    password: "reddacted"

captive_portal:

esp32_improv:
  authorizer: none

uart:
  id: uart_mmw
  baud_rate: 256000
  tx_pin: GPIO5
  rx_pin: GPIO4
  parity: NONE
  stop_bits: 1

seeed_mr24hpc1:
  id: mr24
  uart_id: uart_mmw

# ---------------------------------------------------
# ENTITIES
# ---------------------------------------------------
text_sensor:
  - platform: seeed_mr24hpc1
    heart_beat:
      name: "Heartbeat"
    product_model:
      name: "Product Model"
    product_id:
      name: "Product ID"
    hardware_model:
      name: "Hardware Model"
    hardware_version:
      name: "Hardware Version"
    keep_away:
      name: "Active Reporting Of Proximity"
    motion_status:
      name: "Motion Information"
    custom_mode_end:
      name: "Custom Mode Status"

binary_sensor:
  - platform: seeed_mr24hpc1
    has_target:
      name: "Presence Information"

sensor:
  - platform: seeed_mr24hpc1
    custom_presence_of_detection:
      name: "Static Distance"
    movement_signs:
      name: "Body Movement Parameter"
    custom_motion_distance:
      name: "Motion Distance"
    custom_spatial_static_value:
      name: "Existence Energy"
    custom_spatial_motion_value:
      name: "Motion Energy"
    custom_motion_speed:
      name: "Motion Speed"
    custom_mode_num:
      name: "Current Custom Mode"

switch:
  - platform: template
    name: "MR24 Enable Active Reporting"
    turn_on_action:
      - uart.write:
          id: uart_mmw
          data: [0x55, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x5A]

button:
  - platform: seeed_mr24hpc1
    restart:
      name: "Module Restart"
    custom_set_end:
      name: "End Of Custom Mode Settings"

select:
  - platform: seeed_mr24hpc1
    scene_mode:
      name: "Scene"
    unman_time:
      name: "Time For Entering No Person State (Standard Function)"
    existence_boundary:
      name: "Existence Boundary"
    motion_boundary:
      name: "Motion Boundary"

number:
  - platform: seeed_mr24hpc1
    sensitivity:
      name: "Sensitivity"
    custom_mode:
      name: "Custom Mode"
    existence_threshold:
      name: "Existence Energy Threshold"
    motion_threshold:
      name: "Motion Energy Threshold"
    motion_trigger:
      name: "Motion Trigger Time"
    motion_to_rest:
      name: "Motion To Rest Time"
    custom_unman_time:
      name: "Time For Entering No Person State (Underlying Open Function)"

So with some more debugging I have moved a bit in the right direction… Using a loopback test (wire connecting the TX and RX pins) I have realised that the pins I had been using on the ESP8266 just dont support UART properly. Originally I had been using GPIO4 and GPIO5 (D1 & D2 on my D1 Mini board) but my Hello World loopback test never got a response.

Switching it to the TX and RX pins (GPIO1 & GPIO3) and for the first time I received a response over UART. I did have to switch off UART Logging at the same time.

[10:13:58.451][D][button:023]: 'Send Hello World' Pressed.
[10:13:58.454][D][uart_debug:114]: >>> 48:65:6C:6C:6F:20:57:6F:72:6C:64:0A
[10:13:58.566][D][uart_debug:114]: <<< 48:65:6C:6C:6F:20:57:6F:72:6C:64:0A

Using any other pins only generates the send log message and nothing is ever received.

No idea why it just stopped working out the blue when both boards had worked fine for the best part of a few years but it is what it is.

Will now try with the mmWave sensor and I have my fingers crossed…

1 Like

I think you just get back what you send.
Hope not but I think I have been there also.

I have these:

No way is hardware related.
Someone broke the support for these in recent updates.

Using pins other than rx/tx (or uart swap on gpio13/15) means that esp has to use software serial instead of real hardware UART. That is not reliably working at higher speeds like 115200.

So after more debugging…

Using the RX/TX Pins I updated the config and reconnected the new mr24hpc1 mmWave sensor and I got the same behaviour, aka nothing back from the sensor. Put on the bridge wire and hit the hello world button and it showed that the UART receive was working.

I then took a punt and reconnected the older mmWave sensor that I pulled down from under the cabinets to the test board and it works. Presence and Heartbeats were being detected and sent/received respectively… makes no sense.

Thought ok it must definitely be some config changes I made in the test config used above. So I reflected those changes onto the other non working board in the downstairs bathroom and updated it. Aaaaand, nothing. Nothing being received from the sensor on the UART Receiver. Bridging the connections and using the hello world button and I can see things looping back. Put the sensor back and nothing. I tried flipping the connectors in case I wired it backwards and its the same result.

So it is something to do with the sensor… but I don’t understand why one just started working again and why the others with the same config settings refuse to do anything.

I could try some ESP32s but I have also ordered some new mmWave sensors LD2410Cs which hopefully arrive next week.

1 Like

Some update broke this.

Is impossible that my 3 sensors worked flawless for like 3 years and then all 3 stop working after ESPHome or HASS updates are installed.
I placed the 3 sensors 3 years ago and never touched them until all 3 stopped working.

The solution is not on the devices but on the software.

I am grateful that you are trying to help.

Care to share your idea on how come several people are reporting the exact same problem and no one has touched the sensors or config?

One needs to separate hardware issues from software issues. If person hasn’t made any changes on the Esphome running on that specific device and logs don’t indicate wireless connection problems, I can only see hardware issue. Could be bad wiring, bad soldering, oxidation on connectors, power supply instability etc. Or sensor failure.