Hi all — I work on the 905 nm rangefinder module line at ERDI (Chengdu). Posting it here because it is the kind of thing people keep asking us over email
and there is no good public write-up of it. All numbers below are straight out of our
own module manuals; where a manual does not state something, I say so instead of
guessing.
1. There are two completely different UART protocols in this product class
If you have integrated one 905 nm LRF module you have not integrated them all. Across
our 24 models there are exactly two protocol families, and they behave nothing alike.
Family A — 55 AA, 8-byte command/response. Host asks, module answers.
- 115200 8N1 by default, 8-byte frames, all hex.
- Single shot:
55 AA 88 FF FF FF FF 84. Continuous:55 AA 89 FF FF FF FF 85.
Stop:55 AA 8E FF FF FF FF 8A. - Reply carries a status byte (
STA = 1means the measurement succeeded, anything
else means it failed — do not treat a failed frame’s distance bytes as a reading)
plusDIS_H/DIS_L. - Result is the real value ×10. Forget that and every log you take is off by an
order of magnitude. - Watch the checksum: on transmit it is the low 8 bits of the sum of
Function Code + DATA1..DATA4; on the reply it is the low 8 bits of the sum
including the two frame-header bytes. Same module, two different checksum
definitions for the two directions. This one costs people an afternoon. - Typical models: LR1200E2, LR2000E2, LRF3000A1.
Family B — 5C, 4-byte free-running stream. Module talks, nobody asks.
- 460800 8N1 by default (adjustable), 4-byte frames:
5Cheader, 2 distance bytes,
1 check byte. - Distance is little-endian, in centimetres, range 0–65535 cm. Out of range is
reported as65535— treat that as a sentinel, not as a 655 m target. - Default output rate is 1 kHz on LRF50H (20 Hz–10 kHz configurable); LRF600H switches
between 1 kHz and 50 Hz automatically depending on echo strength. - Typical models: LRF50H, LRF600H, LRF200H, LRF22VB.
Two practical consequences for autopilot integration: 460800 is above what a lot of
FC serial ports are set to by default, and a 1 kHz stream is not something you want to
feed a telemetry-rate loop unmodified — decimate it on the companion side or turn the
module’s output rate down.
2. The range number on the datasheet is not the range you will get
Every long-range figure in this category is quoted against a high-reflectivity target.
Ours are stated at 90% reflectivity, with the 10% figure given separately, and the gap
is the whole story:
| Model | @ 90% reflectivity | @ 10% reflectivity |
|---|---|---|
| LRF50H | 0.05–50 m | 0.05–15 m |
| LRF600H | 0.05–600 m | 0.05–200 m |
Dry asphalt, dark vegetation and wet ground sit far closer to the 10% column than the
90% one. If you are sizing a module for terrain following or a landing sensor, size it
against the 10% number and treat the 90% number as marketing.
Related: spot size. LRF50H’s manual gives the measured spot diameter as 0.4 cm at 1 m,
4 cm at 10 m, 20 cm at 50 m (~4 mrad). Over sloped ground the returned distance is
whatever inside that footprint reflects first, which is why oblique angles read short.
3. Supply rails differ by family — this kills modules
- Family A (LR1200E2, LRF3000A1, …): 3.3–5 V DC, TTL-level UART.
LRF3000A1’s manual states the signal pins explicitly as TTL 3.3 V. - Family B (LRF50H, LRF600H, …): 9–36 V DC. These are industrial-rail parts.
They are not 5 V devices and will not run off an FC’s 5 V BEC output.
Honest caveat, because I would rather you hear it from me than find out on the bench:
for several of the family B models the manual gives the supply rail but never states
the logic level of the TX/RX pins. We track that as a documented gap rather than
inventing a number — if you need it confirmed for a specific model, ask and we will get
it from engineering rather than extrapolating from a sibling part.
4. Power and eye safety
LRF50H draws ~34 mA average (0.8 W), LRF600H ~55 mA (1.2 W), peak 100 mA on both.
LR1200E2 is ~0.4 W short-range, ~1 W max, with a ~350 mA inrush — size the rail for the
inrush, not the average, or you will brown out the module at startup.
All of these are IEC 60825-1 Class 1 at 905 nm. LRF50H additionally has a 650 nm
Class 2 visible aiming beam that can be switched off (it self-disables below -20 °C).
5. Open-source drivers
We put the driver work on GitHub under MIT rather than shipping a PDF and wishing you
luck: https://github.com/yu911517778-a11y/erdi-lrf-drivers — Python library + CLI,
an Arduino library (compiles for uno/mega), and a ROS 2 node, covering both protocol
families, 158 unit tests. Two caveats in the interest of not overselling: the ROS 2 node
builds but has not been run against real hardware in a live ROS environment yet, and the
repo’s docs/ folder deliberately lists the 14 places where the manuals are ambiguous
or self-contradictory (e.g. LRF1500H’s example frame does not match its own checksum
formula). If you hit one of those, the gap list is the honest answer.
Who we are: ERDI TECH LTD (Chengdu, China) — OEM 905 nm laser ranging modules,
IEC 60825-1 Class 1, industrial/civil distance measurement only. Full spec sheets and
published per-unit prices for all 24 models are at https://erdilrf.com/models/
(we publish prices; the category mostly does not). Questions on a specific model:
tommy@erdimail.com or WhatsApp https://wa.me/message/HRVCVAQ6HVAUE1. Happy to answer
protocol questions in-thread whether or not you ever buy anything.