What's Inside: Hilti PD-30

I love physics hacks, and I consider phase shift measurements in general as a great hack. As a consequence, I love laser distance meters.

A while ago I took apart a Fluke 411D - coincidentally with nearly identical results as this SparkFun tutorial: I disassembled it, found the serial port, found the “?\r\n”, tried sending all kind of data to the other “RX” pins - and didn’t receive any answer from the device.

Now I was able to take a look at a (much more expensive) Hilti PD-30 [PDF].

It has a much better build quality (which is kind of expected for a 4x expensive device) - for example it has a glass lens, and the transmit and receive parts are much better aligned and glued together:

On the Fluke 411D some misalignment had caused the distance range to be significantly impaired (to ~3m) - very well possible from 3 missing “shipping screws” (screws that are left over after you re-assemble a device) that apparently were much more important than I’ve thought…

Another interesting tidbit is the difference between the PD-30 and the PD-32: The Hilti PD32 feature two more measurement modes and have two more buttons. Turns out - the PD30 also has these features, and the buttons are… not quite… there.

So yes, if you press those “internal” buttons, they actually work! There’s even an unexposed (populated!) trigger button on the side.

The microcontroller is a NEC (now Renesas) “PD3X” - where PD3X probably just indicates that they are programmed with a Hilti-supplied Mask ROM for the PD-3X series. That’d also explain why the PD-32 features are easily available. There’s also a serial port, which is - as inverted TTL - available on the outside. And guess what - upon power on (and power off), exactly three bytes are transmitted: “?\r\n” (interestingly at 9600-7E1). This design seems to be at least related to the Fluke 411D (or the identical “Prexiso X2”).

(Click here for all photos)

Update:

Apart from RX and TX being inverted (which is easily fixable with a FT232RL which can be eeprom-programmed to use inverted UART signals) it “just works” - commands like ‘a’ (reset/online mode), ‘h’ (tracking) and ‘N00N’ (display firmware version) work. More commands can be found for example here, but not all of them work. The probably most important one, “tracking”, works just fine!

Unfortunately that also means that for the Fluke 411D (or the equivalent versions), the serial port really just doesn’t react to otherwise “valid” commands - people (including me) have definitely tried “a\r\n”. Maybe it requires some special activation sequence, or some special eeprom settings. Who knows…