BTW, I tried this by cloning that repo and using the yaml board config, changing the device to an nodemcu-32s (which appears to have the same pinouts, etc, and which I have successfully used the LD2410 [non-S] module).
It crashes on startup attempting to initialize the UART:
[I][app:029]: Running through setup()...
[C][uart.arduino_esp32:077]: Setting up UART...
E (5345) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (5345) task_wdt: - loopTask (CPU 1)
E (5345) task_wdt: Tasks currently running:
E (5345) task_wdt: CPU 0: IDLE
E (5345) task_wdt: CPU 1: loopTask
E (5345) task_wdt: Aborting.
abort() was called at PC 0x400f9c74 on core 0
Backtrace:0x40083a51:0x3ffbea1c |<-CORRUPTED
again, this is with the same .yml as in the repo, except for the board: specified.
Hello.
I tried to add the component but esphome returns
binary_sensor.ld2410s: [source /config/esphome/pres-hlk2410s-1yaml.yaml:58]
Couldn’t find any component that can be used for ‘ld2410s::LD2410S’. Are you missing a hub declaration?.
do you know what i am missing ?
Hey all,
It seems that I tried everything but cannot make my LD2410s to work with my LOLIN 32.
esphome:
name: "motion-sensor-2"
friendly_name: Motion sensor 2
min_version: 2024.11.0
name_add_mac_suffix: false
# Delay initialization to allow sensor to power up
on_boot:
priority: -100
then:
- delay: 10s
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: DEBUG
logs:
# sensor: INFO
component: ERROR
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: NONE
captive_portal:
# External component configuration
external_components:
- source: github://NovakIrs/esphome@ld2410s
components: [ld2410s]
debug:
update_interval: 1s
# UART configuration for LD2410S
uart:
id: uart_bus
tx_pin: GPIO17 # Connects to LD2410S RX
rx_pin: GPIO16 # Connects to LD2410S TX
baud_rate: 115200
parity: NONE
data_bits: 8
stop_bits: 1
debug:
direction: BOTH
dummy_receiver: false
after:
delimiter: "\n"
sequence:
- lambda: UARTDebug::log_hex(direction, bytes, ':');
ld2410s:
uart_id: uart_bus
binary_sensor:
- platform: ld2410s
has_target:
name: Presence
has_threshold_update:
name: Threshold update running
- platform: gpio
name: "Presence Sensor"
pin:
number: GPIO4
mode:
input: true
pullup: true
inverted: false
device_class: presence
sensor:
- platform: ld2410s
target_distance:
name : Target Distance
threshold_update:
name: Threshold update progress
- platform: wifi_signal
name: "Motion sensor 2 WiFi Signal"
update_interval: 180s
text_sensor:
- platform: ld2410s
fw_version:
name: Firmware version
trigger_threshold_ts:
name: Triggers Threshold
trigger_hold_ts:
name: Triggers Hold
trigger_snr_ts:
name: Triggers SNR
energy_values_ts:
name: Energy Values
number:
- platform: ld2410s
max_distance:
name: Max detect distance
min_distance:
name: Min detect distance
no_delay:
name: No detect report delay
status_reporting_frequency:
name: Status reporting frequency
distance_reporting_frequency:
name: Distance reporting frequency
trigger_selected_gate:
name: Trigger Selected Gate
trigger_threshold:
name: Trigger Gate Threshold
trigger_hold:
name: Trigger Gate Hold
trigger_snr:
name: Trigger Gate SNR
select:
- platform: ld2410s
response_speed:
name: Response speed
button:
- platform: restart
name: "ESP32 Restart"
- platform: ld2410s
read_all:
name: Read configuration
write_all:
name: Write config changes
factory_reset:
name: Factory reset
calibration:
name: Start auto calibration
minimal_output:
name: Toggle minimal output
Does anybody have an idea what I did wrong?
Thanks!
I should have added that only the WiFi Signal sensor is working right now.
I just add the following:
at the beggining of LD2410S.cpp
#include “esphome/core/application.h”
and in the function send_command void LD2410S::send_command(CmdFrameT frame)
below the line while (!reply) { add App.feed_wdt();
while (!reply) {
App.feed_wdt();
uint8_t ack_buffer[64];
Thanks but I’m only using ESPHome through Home assistant so I don’t have a .cpp file
Working great for me
ESPHome 2025.6.3
Though I am using
esp32:
board: esp32dev # NodeMCU
framework:
type: esp-idf
Do you have your logs?
oz8et
(Erik Palsbo)
September 28, 2025, 9:36am
28
If you ar taking 3.3V from the ESP-board, your will probably kille the processor
kid
(Alex)
December 30, 2025, 3:33pm
29
I am trying as well, can anybody please post a sample configuration which is working?
kirumi
(Felix)
January 16, 2026, 2:14pm
30
I used this one: https://github.com/NovakIrs/esphome/blob/5bac4750b39e976d03ad5259cd3014b8e9cabe59/tests/components/ld2410s/common.yaml
I guess there is much room for improvment but, in first tests it works
substitutions:
uart_tx: GPIO7
uart_rx: GPIO8
presence: GPIO9
esphome:
name: ld2410s
friendly_name: Presence sensor
name_add_mac_suffix: false
# Delay initialization to allow sensor to power up
on_boot:
priority: -100
then:
- delay: 10s
esp32:
variant: ESP32S3
board: esp32-s3-devkitc-1
framework:
type: esp-idf
# Enable logging
logger:
level: DEBUG
logs:
# sensor: INFO
component: ERROR
# Enable Home Assistant API
api:
encryption:
key:
ota:
- platform: esphome
password:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: NONE
# External component configuration
external_components:
- source: github://NovakIrs/esphome@ld2410s
components: [ld2410s]
debug:
update_interval: 1s
# UART configuration for LD2410S
uart:
id: uart_bus
tx_pin: ${uart_tx}
rx_pin: ${uart_rx}
baud_rate: 115200
parity: NONE
stop_bits: 1
ld2410s:
uart_id: uart_bus
sensor:
- platform: ld2410s
target_distance:
name: Target Distance
calibration_progress:
name: Calibration progress
binary_sensor:
- platform: ld2410s
has_target:
name: Presence
has_calibration_running:
name: Calibration running
- platform: gpio
name: "Presence Sensor"
pin:
number: ${presence}
mode:
input: true
pullup: true
inverted: false
device_class: presence
text_sensor:
- platform: ld2410s
fw_version:
name: Firmware version
threshold_triggers:
name: Threshold Triggers
threshold_holds:
name: Threshold Holds
threshold_snrs:
name: Threshold SNRs
energy_values:
name: Energy Values
number:
- platform: ld2410s
max_distance:
name: Max detect distance
min_distance:
name: Min detect distance
no_delay:
name: No detect report delay
status_reporting_frequency:
name: Status reporting frequency
distance_reporting_frequency:
name: Distance reporting frequency
threshold_trigger:
name: Threshold Trigger
threshold_hold:
name: Threshold Hold
threshold_snr:
name: Threshold SNR
threshold_selected_gate:
name: Threshold Selected Gate
button:
- platform: ld2410s
calibration:
name: Start auto calibration
factory_reset:
name: Factory reset
select:
- platform: ld2410s
response_speed:
name: Response speed
switch:
- platform: ld2410s
minimal_output:
name: Minimal output
I bought several ld2410s because i thought the 3.3v operation might be good for some projects that could run on battery, without realising the different pin-outs and operation ( and esphome support).
I have tried this and another component but after a day or so it seems to start detecting movement when there is no activity in the room, or nearby. Its even been detecting movement when there is no one present in the house.
I have it on a ESP32-C3 that happens to have a oled display on it too, and its currently running off a USB hub so voltage should not be a problem.
I have just run a re-calibration and its gone clear again.