Can anybody identify what kind of signalling protocol this is?
I'm sampling at 2 MHz. Here's the first falling edge of the signal, with a default UART protocol decoder for reference (8 bits, no parity, 1 stop bit, it's definitely wrong).
Each symbol appears to be around 4.85 µs, so that's ~206,200 Baud. Seems just shy of the standard 230,400 baud rate.
The full trace is only <4 bytes, I've posted it here: .sr
file, .pvs
file
And beyond just the answer, is there a systematic approach to "brute force" a bunch of protocol analyzers, and filter down to only those that parse correctly?
Backstory
I have a Herman Miller Motia Sit-to-Stand Desk, which has one really annoying deficiency: while it lets you save 4 preset heights, pressing the corresponding button doesn't make it move to that height (like how any sane person might expect it to). You need to sit there and keep holding the button, until it reaches the saved height (at which point it'll stop moving and you can release the button).
In the face of this mildest inconvenience, I did what any rational person would do: rather than wasting a few seconds every time I use the desk, I've decided to dedicate many hours to fix it. /s ... but hey, I'm among nerds here, I'm sure you can understand. Really, it's mainly just an exercise in learning about electronics.
I would like to hack it so a single button click will make it automatically go to the preset height.
I can trivially control sense and impersonate the buttons from my micro-controller (ESP32+ESPHome, but that's beside the point), but I also need to reverse engineering the signal that informs the height on the hand controller.
The desk's electronics has two main parts:
- a LOGICDATA SMART-e-2-UNL-US motor controller (datasheet)
- a LOGICDATA CBIclassic C button panel (datasheet)
The two are connected by a 7 pin DIN connector. I inspected the pin-out on my device, and it matches what's described on the datasheet:
I've tapped the signal between pin 6 (TxD) and the shell (GND). I've played around with all kinds of UART settings, but all of them come up blank.
I don't own a logic analyzer (bought one, it's on the way :D), so I improvised by using this library in conjunction with PulseView, to turn my spare ESP32 into a make-shift logic analyzer.
I did find two related projects, but both seem quite different, with much lower clock rates:
- Dreamdesk, which uses a LIN protocol at 19,200 baud
- RoboDesk, which uses a custom protocol, at only 1,000 baud