Hardware Matrix

Is HLK-LD2410 24GHz mmWave Radar Sensor Compatible with Home Assistant (ESPHome)?

Verdict Badge
VERDICT: [ COMPATIBLE (MANUAL CONFIG REQUIRED) ]
Protocol: UART Serial / 3.3V
Bridge Needed: NO

Electrical Specifications

Always confirm pin assignments against the manufacturer datasheet before wiring.

Not yet documented. Electrical specifications for this device have not been confirmed against a manufacturer datasheet, so none are shown here rather than showing estimates. Submit verified specifications if you have the datasheet to hand.

Compatibility Overview

The Raspberry Pi Pico W connected to the HLK-LD2410 24GHz radar module delivers precise micro-motion and still human presence tracking to Home Assistant.

Wiring HLK-LD2410 24GHz mmWave Radar Sensor to Raspberry Pi Pico W

Module pin Raspberry Pi Pico W Note
VCC VBUS (5V) The module regulates its own 3.3V and its serial lines are 3.3V logic, so the Pico's pins are safe.
GND GND
TX GPIO5 UART1 RX on the Pico.
RX GPIO4 UART1 TX.
OUT unconnected A plain presence line, high when the radar sees someone. Wire it to any GPIO as a gpio binary_sensor if you want a reading that does not depend on the UART.

Host pins are the ones the configuration on this page uses. Move a pin here and change it in the YAML — they are documented together so they cannot disagree.

Technical Specification Matrix

Feature / Attribute Specification / Status
Hardware Protocol UART Serial / 3.3V
Bridge Required NO
Border Router Needed None
Hardware Capabilities & Peripherals
Radar Presence State Move Distance (cm) Still Distance (cm) Signal Energy

Note: these entities come from the ESPHome configuration you flash — each one needs its matching component in that YAML before it appears.

Pairing Complexity Plug-and-Play
Factory Reset Instruction Hold BOOTSEL button while plugging USB cable to enter mass storage flashing.

Wire, Flash, Adopt, Check

1

Wire it up

Follow the wiring table above. The Raspberry Pi Pico W pins there are the ones the configuration uses, so if you move one, change it in both places.

2

Flash the configuration

Create a new device in the ESPHome dashboard (the Home Assistant add-on) and paste the configuration below into it, or save it as emb_pico_w_ld2410_ha.yaml and run esphome run emb_pico_w_ld2410_ha.yaml. The first flash goes over USB. If it is not detected, hold BOOTSEL button while plugging USB cable to enter mass storage flashing to put it in download mode. Every update after that is over the air.

3

Adopt it in Home Assistant

Settings → Devices & Services. A node on the same network shows up as a discovered ESPHome device within a minute of joining Wi-Fi; choose Configure and enter the API encryption key from your secrets.yaml. If discovery does not find it, add the ESPHome integration by hand with the node's IP address.

4

Check it works

Presence turns on within a second of walking into the room and stays on while you sit still; Still Distance settles on roughly where you are. Entities at unknown with the module powered are the baud rate or TX and RX swapped.

ESPHome Configuration

Starting configuration for HLK-LD2410 24GHz mmWave Radar Sensor on Raspberry Pi Pico W. Untested on hardware — verify wiring and pins against your own board.

# ESPHome configuration for HLK-LD2410 24GHz mmWave Radar Sensor
# Host: Raspberry Pi Pico W. Pin numbers below are host-side defaults — any free
# GPIO will do, and you should change them to match your own wiring.

esphome:
  name: emb_pico_w_ld2410_ha
  friendly_name: "HLK-LD2410 24GHz mmWave Radar Sensor"

rp2040:
  board: rpipicow

logger:

api:
  encryption:
    key: !secret api_encryption_key

ota:
  - platform: esphome
    password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

uart:
  rx_pin: GPIO5
  tx_pin: GPIO4
  baud_rate: 256000

ld2410:

binary_sensor:
  - platform: ld2410
    has_target:
      name: "Presence"
    has_moving_target:
      name: "Moving Target"
    has_still_target:
      name: "Still Target"

sensor:
  - platform: ld2410
    moving_distance:
      name: "Moving Distance"
    still_distance:
      name: "Still Distance"
    moving_energy:
      name: "Moving Energy"
    still_energy:
      name: "Still Energy"
    detection_distance:
      name: "Detection Distance"

# The tuning the HLKRadarTool phone app exposes, as entities instead.
number:
  - platform: ld2410
    timeout:
      name: "Presence Timeout"
    max_move_distance_gate:
      name: "Max Moving Distance Gate"
    max_still_distance_gate:
      name: "Max Still Distance Gate"

Before you flash: the !secret values come from your secrets.yaml, and the GPIO numbers are host-side defaults rather than properties of this part — change them to match how you actually wired it.

What Appears in Home Assistant

Presence, Moving Target, Still Target
binary_sensor

Presence is the one automations use. The other two say why.

Moving/Still Distance, Moving/Still Energy, Detection Distance
sensor

Distance in centimetres and signal strength per target type.

Presence Timeout, Max Moving/Still Distance Gate
number

The settings the HLKRadarTool phone app exposes, as entities. Changing them writes to the module and persists there.

Known Problems and Fixes

256000 baud

The LD2410 talks at 256000, 8N1. At 9600 or 115200 there is no garbage, just silence, and the entities sit at unknown. The uart: block in the config sets it.

The Pico's UART pins are fixed

RP2040 peripherals route to set pins: UART1 transmits on GPIO4 or GPIO8 and receives on GPIO5 or GPIO9; UART0 uses GPIO0/12/16 and GPIO1/13/17. ESPHome rejects any other pin at validation time.

First flash is a file copy

ESPHome produces a .uf2 for the Pico W. Hold BOOTSEL while plugging it in, drag the file onto the RPI-RP2 drive that appears, and the board reboots into ESPHome. Every update after that is over the air.

The phone app changes settings that stick

The LD2410B and C have Bluetooth, and the HLKRadarTool app (password HiLink) can change gates, timeout — and the baud rate. Settings changed there persist in the module. If the node stops decoding after you used the app, that is the first thing to check.

It sees through drywall

24GHz radar goes through stud walls, and a ceiling fan or a curtain in a draught counts as a moving target. Lower the maximum gates so the detection zone ends inside the room, and raise the still-energy thresholds on the gates that see the fan.

Not the LD2412 or LD2420

Those use different protocols and different ESPHome components. This component is for the LD2410, LD2410B and LD2410C.

🛠️ Hardware Correction & Field Contributions

Report a Pinout Error or Submit Tested Code Snippets

Found a pin mapping quirk or built a custom ESPHome YAML driver for HLK-LD2410 24GHz mmWave Radar Sensor? Submit a pull request or report corrections to our index.

Frequently Asked Questions

Does HLK-LD2410 24GHz mmWave Radar Sensor work without an internet connection?
100% local processing over Wi-Fi via ESPHome or MicroPython socket API.
How is HLK-LD2410 24GHz mmWave Radar Sensor powered and wired to the host board?
Micro-USB 5V supply; LD2410 requires 5V power (VCC=5V TX=GPIO5/UART1 RX RX=GPIO4/UART1 TX).
How does the host board reach Home Assistant (ESPHome)?
Wi-Fi 4 (802.11n) 2.4GHz.

Alternatives

Related Compatibility Matrix Guides