Calibration Guide
Calibrating UltimateSensor v2 improves presence detection, target zones, voice-adjacent automations and environmental readings. UltimateSensor v2 uses HLK-LD2412, HLK-LD2450 on standard hardware, PIR, SCD41, SGP41, BH1750 and optional SPS30 sensors. If the optional HLK-LD2460 upgrade is installed, it replaces the LD2450 module.
UltimateSensor v2 has no barometric pressure sensor. Do not use CeilSense pressure-sensor instructions for this product.
What You Can Calibrate
| Sensor | Used For | Calibration / Tuning |
|---|---|---|
| HLK-LD2412 | Sensitive presence, still presence and micro-movement | Dynamic background correction and distance gates |
| HLK-LD2450 | Target tracking, X/Y position, zones | Zone boundaries and presence timeout |
| HLK-LD2460 | Optional replacement for LD2450 tracking radar | Mounting compensation, detection sector and shared Room Designer polygon zones |
| PIR | Fast first motion trigger | Placement and line-of-sight tuning |
| SCD41 | CO2, temperature, humidity | Manual CO2 calibration, temperature offset, humidity offset |
| SGP41 | VOC and NOx index | Runtime stabilization |
| BH1750 | Ambient light in lux | Optional lux correction in ESPHome |
| SPS30 | PM1, PM2.5, PM4, PM10 | Optional reference comparison if installed |
Recommended Order
- Place the sensor where the microphone, PIR and radar have a clear view/listening position.
- Tune LD2412 for stable room occupancy.
- Tune LD2450 zones for specific areas, or follow the LD2460 Upgrade Guide for mounting, range and Room Designer zones.
- Verify PIR triggers for fast entry detection.
- Calibrate CO2 and verify climate readings.
LD2412 Background Calibration
Run this when the room shows occupied while nobody is there.
- Make the room completely empty.
- Remove pets and stop moving objects such as fans, curtains or robot vacuums.
- Open Home Assistant.
- Go to Settings -> Devices & services -> ESPHome.
- Open your UltimateSensor v2.
- Enable the button LD2412 Dynamic Background Correction if you have not done so yet. It is disabled by default; you find it under the disabled entities of the device.
- Press LD2412 Dynamic Background Correction.
- Wait until the diagnostic entity with the same name has turned off before entering the room again.
Important: if someone is in the room during background correction, the radar can learn that person as part of the background.
LD2412 Distance Gates
The LD2412 uses distance gates. Lower LD2412 Maximum Distance Gate if the sensor detects people through walls or in adjacent rooms.
| Setting | Meaning |
|---|---|
| LD2412 Minimum Distance Gate | Closest distance included in detection |
| LD2412 Maximum Distance Gate | Furthest distance included in detection |
| LD2412 Presence Timeout | How long presence remains active after detection stops |
The standard firmware does not expose per-gate thresholds. Tune with the distance gates, and use LD2412 Moving Energy and LD2412 Still Energy to see the signal strength in the empty room.
LD2450 Zone Tuning
The LD2450 tracks targets in X/Y coordinates. Use it for zones such as a desk, couch, bed or doorway.
If your sensor has the optional LD2460 upgrade, skip the native LD2450 zone
controls and use the LD2460 Upgrade Guide. LD2460 physically
replaces LD2450 and requires matching *-ld2460.yaml firmware.
Sensor (0,0)
|
-X <---+---> +X
|
v
+Y distance
For a 3 m wide by 4 m deep area:
| Setting | Value |
|---|---|
Zone 1 X1 |
-1500 |
Zone 1 X2 |
1500 |
Zone 1 Y1 |
0 |
Zone 1 Y2 |
4000 |
If targets appear outside the room, tighten the Zone 1 X1/Y1/X2/Y2 boundaries and lower the LD2412 Maximum Distance Gate for the real room size.
PIR Tuning
The PIR sensor is a fast motion trigger. It works differently from mmWave:
- PIR needs line of sight.
- PIR reacts to heat movement.
- PIR is best for fast "someone just entered" automations.
- mmWave is better for continued occupancy and still presence.
If PIR does not trigger, check placement and make sure the front of the sensor can see the movement area.
CO2 Calibration
UltimateSensor v2 uses the Sensirion SCD41 for CO2, temperature and humidity. Automatic self-calibration is on; it works best when the room is aired well now and then. Use the steps below when readings stay off.
- Ventilate the room well for at least 3 minutes, or place the sensor in fresh outdoor air within WiFi range.
- Wait until the reading is stable.
- In Home Assistant, open the UltimateSensor v2 device.
- Press CO2 Manual Calibration. This button is disabled by default, so enable it first. It sets the sensor to 420 ppm.
- Verify that fresh-air readings settle around 400-430 ppm.
Do not calibrate in a room with people present or poor ventilation.
Temperature and Humidity
- Place a reliable thermometer/hygrometer near the sensor.
- Wait 20-30 minutes.
- Compare the values with
SCD41 TemperatureandSCD41 Humidity. - For a small correction, use the Temperature Offset and Humidity Offset entities on the device page. They are added to the displayed value and saved on the device.
- For a permanent temperature correction, adopt the device in ESPHome and change the
scd41_temperature_offsetsubstitution (default10.2) before flashing. A higher value lowers the reading: ifSCD41 Temperaturereads 1.0 °C too high, raise it to11.2. Then reset Temperature Offset to0.
VOC and NOx
SGP41 values are relative indexes. Allow several hours of normal operation after flashing, moving or long power-off periods before judging readings.
Light Sensor
The BH1750 lux sensor is factory calibrated. If needed, adopt the device in ESPHome and apply a correction filter.
Optional SPS30
If your UltimateSensor v2 has SPS30, PM values may take time to stabilize. Compare only with a trusted reference device and stable airflow.
Best Practices
- Tune LD2412 with the room empty.
- Use LD2450 zones to ignore doorways and adjacent areas.
- With LD2460 upgrade firmware, tune physical placement, the hardware detection sector and shared Room Designer polygon or exclusion zones.
- Use PIR for immediate motion and mmWave for continued presence.
- Avoid direct sunlight, radiators and strong airflow.
- Recalibrate CO2 after moving the sensor.