HLK-LD2410S - UART Respones not as expected and sensors UNKNOWN

Hi,

After searching for 4 days on this subject, I’ve not been able to pin down what’s wrong so had to create a new topic.

I’ve had 5 LD2410S delivered and I cannot get them to work on ESP32-C3, C6s or an original ESP32.

I’m getting data back from the device, but not in the format expected
Hex (23 bytes): f4 f3 f2 f1 0d 00 02 aa 03 4f 00 64 4c 00 64 32 00 55 00 f8 f7 f6 f5

Here are the logs, and showing some of the data back from the LD2410 module. All the sensors are showing as Unknown.

Creating esp32c3 image...
Successfully created esp32c3 image.
esp32_create_combined_bin([".pioenvs/motion-sensor-01/firmware.bin"], [".pioenvs/motion-sensor-01/firmware.elf"])
Wrote 0xf0650 bytes to file /data/build/motion-sensor-01/.pioenvs/motion-sensor-01/firmware-factory.bin, ready to flash to offset 0x0
========================= [SUCCESS] Took 74.84 seconds =========================
INFO Successfully compiled program.
INFO Connecting to 192.168.1.219
INFO Uploading /data/build/motion-sensor-01/.pioenvs/motion-sensor-01/firmware.bin (919120 bytes)
Uploading: [============================================================] 100% Done...
INFO Upload took 14.96 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from 192.168.1.219 using esphome API
INFO Successfully connected to motion-sensor-01 @ 192.168.1.219 in 4.187s
INFO Successful handshake with motion-sensor-01 @ 192.168.1.219 in 0.421s
[13:01:37][I][app:100]: ESPHome version 2024.4.0 compiled on Apr 18 2024, 13:00:26
[13:01:37][C][wifi:580]: WiFi:
[13:01:37][C][wifi:408]:   Local MAC: C0:4E:30:82:E0:54
[13:01:37][C][wifi:413]:   SSID: [redacted]
[13:01:37][C][wifi:416]:   IP Address: 192.168.1.219
[13:01:37][C][wifi:420]:   BSSID: [redacted]
[13:01:37][C][wifi:421]:   Hostname: 'motion-sensor-01'
[13:01:37][C][wifi:423]:   Signal strength: -51 dB ▂▄▆█
[13:01:37][C][wifi:427]:   Channel: 1
[13:01:37][C][wifi:428]:   Subnet: 255.255.255.0
[13:01:37][C][wifi:429]:   Gateway: 192.168.1.1
[13:01:37][C][wifi:430]:   DNS1: 192.168.1.1
[13:01:37][C][wifi:431]:   DNS2: 0.0.0.0
[13:01:37][C][logger:166]: Logger:
[13:01:37][C][logger:167]:   Level: DEBUG
[13:01:37][C][logger:169]:   Log Baud Rate: 0
[13:01:37][C][logger:170]:   Hardware UART: USB_SERIAL_JTAG
[13:01:37][C][uart.idf:139]: UART Bus 0:
[13:01:37][C][uart.idf:140]:   TX Pin: GPIO9
[13:01:37][C][uart.idf:141]:   RX Pin: GPIO10
[13:01:37][C][uart.idf:143]:   RX Buffer Size: 256
[13:01:37][C][uart.idf:145]:   Baud Rate: 256000 baud
[13:01:37][C][uart.idf:146]:   Data Bits: 8
[13:01:37][C][uart.idf:147]:   Parity: NONE
[13:01:37][C][uart.idf:148]:   Stop bits: 1
[13:01:37][C][ld2410:022]: LD2410:
[13:01:37][C][ld2410:024]:   TargetBinarySensor 'Presence'
[13:01:37][C][ld2410:024]:     Device Class: 'occupancy'
[13:01:37][C][ld2410:025]:   MovingTargetBinarySensor 'Moving target'
[13:01:37][C][ld2410:025]:     Device Class: 'motion'
[13:01:37][C][ld2410:026]:   StillTargetBinarySensor 'Still target'
[13:01:37][C][ld2410:026]:     Device Class: 'occupancy'
[13:01:37][C][ld2410:068]:   EngineeringModeSwitch 'Engineering mode'
[13:01:37][C][ld2410:070]:     Icon: 'mdi:pulse'
[13:01:37][C][ld2410:079]:     Device Class: 'switch'
[13:01:37][C][ld2410:091]:     Restore Mode: always OFF
[13:01:37][C][ld2410:068]:   BluetoothSwitch 'Bluetooth control'
[13:01:37][C][ld2410:070]:     Icon: 'mdi:bluetooth'
[13:01:37][C][ld2410:079]:     Device Class: 'switch'
[13:01:37][C][ld2410:091]:     Restore Mode: always OFF
[13:01:37][C][ld2410:034]:   ResetButton 'Factory reset module'
[13:01:37][C][ld2410:034]:     Icon: 'mdi:restart-alert'
[13:01:37][C][ld2410:035]:   RestartButton 'Restart module'
[13:01:37][C][ld2410:035]:     Icon: 'mdi:restart'
[13:01:37][C][ld2410:036]:   QueryButton 'Query parameters'
[13:01:37][C][ld2410:036]:     Icon: 'mdi:database'
[13:01:37][C][ld2410:039]:   LightSensor 'light'
[13:01:37][C][ld2410:039]:     Device Class: 'illuminance'
[13:01:37][C][ld2410:039]:     State Class: ''
[13:01:37][C][ld2410:039]:     Unit of Measurement: ''
[13:01:37][C][ld2410:039]:     Accuracy Decimals: 0
[13:01:37][C][ld2410:039]:     Icon: 'mdi:lightbulb'
[13:01:37][C][ld2410:040]:   MovingTargetDistanceSensor 'Moving distance (cm)'
[13:01:37][C][ld2410:040]:     Device Class: 'distance'
[13:01:37][C][ld2410:040]:     State Class: ''
[13:01:37][C][ld2410:040]:     Unit of Measurement: 'cm'
[13:01:37][C][ld2410:040]:     Accuracy Decimals: 0
[13:01:37][C][ld2410:040]:     Icon: 'mdi:signal-distance-variant'
[13:01:37][C][ld2410:041]:   StillTargetDistanceSensor 'Still Distance (cm)'
[13:01:37][C][ld2410:041]:     Device Class: 'distance'
[13:01:37][C][ld2410:041]:     State Class: ''
[13:01:37][C][ld2410:041]:     Unit of Measurement: 'cm'
[13:01:37][C][ld2410:041]:     Accuracy Decimals: 0
[13:01:37][C][ld2410:041]:     Icon: 'mdi:signal-distance-variant'
[13:01:37][C][ld2410:042]:   MovingTargetEnergySensor 'Move Energy (%)'
[13:01:37][C][ld2410:042]:     State Class: ''
[13:01:37][C][ld2410:042]:     Unit of Measurement: '%'
[13:01:37][C][ld2410:042]:     Accuracy Decimals: 0
[13:01:37][C][ld2410:042]:     Icon: 'mdi:motion-sensor'
[13:01:37][C][ld2410:043]:   StillTargetEnergySensor 'Still Energy (%)'
[13:01:37][C][ld2410:043]:     State Class: ''
[13:01:37][C][ld2410:043]:     Unit of Measurement: '%'
[13:01:37][C][ld2410:043]:     Accuracy Decimals: 0
[13:01:37][C][ld2410:043]:     Icon: 'mdi:flash'
[13:01:38][C][ld2410:044]:   DetectionDistanceSensor 'Detection Distance (cm)'
[13:01:39][C][ld2410:044]:     Device Class: 'distance'
[13:01:39][C][ld2410:044]:     State Class: ''
[13:01:39][C][ld2410:044]:     Unit of Measurement: 'cm'
[13:01:39][C][ld2410:044]:     Accuracy Decimals: 0
[13:01:39][C][ld2410:044]:     Icon: 'mdi:signal-distance-variant'
[13:01:39][C][ld2410:046]:   NthGateStillSesnsor 'G0 still energy'
[13:01:39][C][ld2410:046]:     State Class: ''
[13:01:39][C][ld2410:046]:     Unit of Measurement: '%'
[13:01:39][C][ld2410:046]:     Accuracy Decimals: 0
[13:01:39][C][ld2410:046]:     Icon: 'mdi:flash'
[13:01:39][C][ld2410:046]:   NthGateStillSesnsor 'G1 still energy'
[13:01:39][C][ld2410:046]:     State Class: ''
[13:01:39][C][ld2410:046]:     Unit of Measurement: '%'
[13:01:39][C][ld2410:046]:     Accuracy Decimals: 0
[13:01:39][C][ld2410:046]:     Icon: 'mdi:flash'
[13:01:39][C][ld2410:046]:   NthGateStillSesnsor 'G2 still energy'
[13:01:40][D][uart_debug:158]: <<< "\xC0\xF8\xFE\x06\xC6\x00\xC0\x00\xC0\x00>\x00\x00"
[13:01:40][D][uart_debug:158]: <<< "\xFC\xC0\x00\xFE\x00\xFE\x00\xF8\x00\x00\x00\xC0\x00\xC0\x00\x00"
[13:01:40][D][uart_debug:158]: <<< "\x82\xFE\x00\xF8\xC0\x00>\x00\x00\x00\x00"
[13:01:40][D][uart_debug:158]: <<< "\xC0>\x06\xF8\x00\x06\x00\x00\x00\x00"
[13:01:40][D][uart_debug:158]: <<< "\x00\xD0\xC68\x00>\x00\x00\x00\x00"

I’m using the standard code to connect - with added to get the UART debug.

uart:
  id: ld2410_uart
  rx_pin: 10
  tx_pin: 9
  baud_rate: 256000
  parity: NONE
  stop_bits: 1
  debug:
    direction: BOTH
    dummy_receiver: false
    sequence:
      - lambda: UARTDebug::log_string(direction, bytes);
      ld2410:
  uart_id: ld2410_uart
  id: ld2410_comp

Has anyone any idea how to ‘read’ the data coming from the LD2410 as it’s not matching expected results and I’ve no way to connect the module directly to a windows device to try the app that I’ve been seeing.

Cheers in advance, Hugh!

1 Like

Hi,
I don’t know if this helps, but according to the datasheet LD2410S uses baudrate 115200 and a different protocol than LD2410.
See: Radar module docs - Google Drive

@simkett what you observe is Report protocol.
It’s normal to see it’s frames sent by LD device. Starts with 0xF4 0xF3 0xF2 0xF1, ends with 0xF8 0xF7 0xF6 0xF5

Look for those sequences in Docs.

Regarding HiLink sensors, please bear in mind that by factory settings, they can have different baud rates set. LD2410B has 25600, LD2412 has 115200 etc.