Having issues with HLK LD2450 only see moving targets, no presence

I’ve build an ESPHome (version 2026.4.0 in my HA) node made of ESP32-C6-Zero (Waveshare Board) and and HLK LD2450. It is connected to +5V and GND and RX/TX to GPIOs on the ESP, so fairly simple.

I started with 5V only, connecting by Bluetooth and the Radar-App (iOS) to the device and saw it worked perfectly. I then noticed that there is an firmware-update and mine had an old one installed, so i upgraded using the app. That worked fine and now there is V2.14.25112412 on the LD2450. From the app, everything looks like before. I see myself moving and standing around in the radar app.

Then i’ve connected RX/TX and added this very simple configuration from the ESPHome example page:

# ! used 'devkitc-1' because i could not find a native zero/mini board !
esp32:
  board: esp32-c6-devkitc-1
  framework:
    type: esp-idf

uart:
  id: uart_ld2450
  tx_pin: GPIO5        # geht zu "RX" (grün) des LD2450 - hier sendet der ESP32 Befehle an den LD
  rx_pin: GPIO4        # geht zu "TX" (gelb) des LD2450 - hier empfängt der ESP32 Antworten und Statusdaten
  baud_rate: 256000
  parity: NONE
  stop_bits: 1
  rx_buffer_size: 2048
  rx_timeout: 10

ld2450:
  id: ld2450_radar
  uart_id: uart_ld2450

binary_sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    has_target:
      name: "Presence"
    has_moving_target:
      name: "Moving Target"
    has_still_target:
      name: "Still Target"

text_sensor:
  - platform: ld2450
    ld2450_id: ld2450_radar
    version:
      name: "LD2450 Firmware"
    mac_address:
      name: "LD2450 BT MAC"

At compile ESPHome warns about the choosen GPIOs but as i did not attach anything externally (hopefully there is nothing on the LD board as well?) i hope this makes no trouble:

INFO ESPHome 2026.4.0
INFO Reading configuration /config/esphome/esphome-rpd-sensor02.yaml...
WARNING GPIO5 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO4 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins

After writing to ESP this brought me a new device in HA having the basic sensors for presence, moving and still target. BUT - only the “moving target” is working, the “presence” and “still target” do not change at all.

Then i looked at the logfile and see the same, only moving target logs shown there.

[09:37:43.581][C][logger:219]: Logger:
[09:37:43.581][C][logger:219]:   Max Level: DEBUG
[09:37:43.581][C][logger:219]:   Initial Level: DEBUG
[09:37:43.582][C][logger:226]:   Log Baud Rate: 115200
[09:37:43.582][C][logger:226]:   Hardware UART: USB_SERIAL_JTAG
[09:37:43.584][C][logger:235]:   Task Log Buffer Size: 768 bytes
[09:37:43.602][C][uart.idf:254]: UART Bus 0:
[09:37:43.603][C][uart.idf:152]:   TX Pin: GPIO5
[09:37:43.603][C][uart.idf:152]:   RX Pin: GPIO4
[09:37:43.603][C][uart.idf:259]:   RX Buffer Size: 2048
[09:37:43.603][C][uart.idf:259]:   RX Full Threshold: 120
[09:37:43.603][C][uart.idf:259]:   RX Timeout: 10
[09:37:43.605][C][uart.idf:268]:   Baud Rate: 256000 baud
[09:37:43.605][C][uart.idf:268]:   Data Bits: 8
[09:37:43.605][C][uart.idf:268]:   Parity: NONE
[09:37:43.605][C][uart.idf:268]:   Stop bits: 1
[09:37:43.605][C][uart.idf:268]:   Wake on data RX: ENABLED
[09:37:43.629][C][ld2450:191]: LD2450:
[09:37:43.629][C][ld2450:191]:   Firmware version: 0.00.00000000
[09:37:43.629][C][ld2450:191]:   MAC address: 08:AA:**:**:**:6A
[09:37:43.630][C][ld2450:197]: Binary Sensors:
[09:37:43.631][C][ld2450:016]:   MovingTarget 'Moving Target'
[09:37:43.631][C][ld2450:232]:     Device Class: 'motion'
[09:37:43.635][C][ld2450:016]:   StillTarget 'Still Target'
[09:37:43.635][C][ld2450:232]:     Device Class: 'occupancy'
[09:37:43.636][C][ld2450:016]:   Target 'Presence'
[09:37:43.636][C][ld2450:232]:     Device Class: 'occupancy'
[09:37:43.638][C][ld2450:236]: Text Sensors:
[09:37:43.638][C][ld2450:016]:   Version 'LD2450 Firmware'
[09:37:43.639][C][ld2450:223]:     Icon: 'mdi:chip'
[09:37:43.639][C][ld2450:016]:   MAC address 'LD2450 BT MAC'
[09:37:43.641][C][ld2450:223]:     Icon: 'mdi:bluetooth'
...
[09:38:42.596][D][preferences:136]: Writing 1 items: 0 cached, 1 written, 0 failed
[09:42:42.587][D][wifi:2413]: Roam scan (-55 dBm, attempt 1/3)
[09:48:09.614][S][binary_sensor]: 'Moving Target' >> ON
[09:48:14.003][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:15.257][S][binary_sensor]: 'Moving Target' >> ON
[09:48:16.418][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:24.141][S][binary_sensor]: 'Moving Target' >> ON
[09:48:26.492][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:28.739][S][binary_sensor]: 'Moving Target' >> ON
[09:48:29.577][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:30.673][S][binary_sensor]: 'Moving Target' >> ON
[09:48:31.665][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:33.667][S][binary_sensor]: 'Moving Target' >> ON
[09:48:33.860][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:38.354][S][binary_sensor]: 'Moving Target' >> ON
[09:48:38.877][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:48.073][S][binary_sensor]: 'Moving Target' >> ON
[09:48:51.521][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:57.218][S][binary_sensor]: 'Moving Target' >> ON
[09:48:57.374][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:59.204][S][binary_sensor]: 'Moving Target' >> ON
[09:49:01.136][S][binary_sensor]: 'Moving Target' >> OFF
[09:49:03.905][S][binary_sensor]: 'Moving Target' >> ON
[09:49:05.002][S][binary_sensor]: 'Moving Target' >> OFF

I also wonder why sometimes the Firmware-Version could be read but not the MAC of the LD2450, and sometimes the opposite, but never both?

Would could i have done wrong?

IIRC, that’s just how LD2450 works: good for moving targets, sucks for static…
If the LD reports, there is nothing wrong with your wiring nor code.

In my opinion it’s the opposite, it’s exactly what such devices should do, detecting still targets. This is the main difference and advantage against PIR sensors…

1 Like