Hi,
I wanted to share a technical observation from a project involving an IKEA BEKANT standing desk.
I was building an Arduino Nano / ATmega328P controller that listens to the BEKANT desk's single-wire LIN-like communication bus. The goal was to understand the original wired remote protocol and later add memory presets while preserving the original remote.
The BEKANT bus in my setup behaves like a LIN-like protocol:
- 19200 baud
- single-wire bus
- idle high around 13 V
- RX connected to the Arduino through a resistor divider
- common ground
- BREAK appears as 0x00 on UART
- frames look like: 0x00 0x55 PID DATA CHECKSUM
- protected PIDs are used
- enhanced checksum is used
- the master cycle is roughly 100 ms
Hardware setup:
- Arduino Nano, ATmega328P, 16 MHz, 5 V
- LIN RX through a resistor divider to an Arduino input pin
- LIN TX handled separately with a bit-banged open-collector style transistor driver
- relay used to isolate the original BEKANT remote during Arduino master takeover
Observed behavior:
In this setup, AltSoftSerial did not reliably decode the BEKANT LIN-like frames. During sniffing and receiving, I observed corrupted or missing frames.
I am not sure whether this is a bug, a timing limitation, or simply an unsupported use case, since the BEKANT bus is not a normal continuous UART stream. It includes LIN BREAKs, strict frame timing, a single-wire bus, and a nonstandard master schedule.
As a cross-check, I tested an alternative software UART library under the same hardware conditions, wiring, board, and baud rate. That setup decoded the same BEKANT traffic reliably, with essentially 100% (versus 30% before) valid frame decoding in my tests.
I wanted to report this in case it is useful for documentation or compatibility notes. It may be worth mentioning that LIN-like receive/sniff applications with BREAK detection and strict timing may need extra care on ATmega328P.
Thanks.
Hi,
I wanted to share a technical observation from a project involving an IKEA BEKANT standing desk.
I was building an Arduino Nano / ATmega328P controller that listens to the BEKANT desk's single-wire LIN-like communication bus. The goal was to understand the original wired remote protocol and later add memory presets while preserving the original remote.
The BEKANT bus in my setup behaves like a LIN-like protocol:
Hardware setup:
Observed behavior:
In this setup, AltSoftSerial did not reliably decode the BEKANT LIN-like frames. During sniffing and receiving, I observed corrupted or missing frames.
I am not sure whether this is a bug, a timing limitation, or simply an unsupported use case, since the BEKANT bus is not a normal continuous UART stream. It includes LIN BREAKs, strict frame timing, a single-wire bus, and a nonstandard master schedule.
As a cross-check, I tested an alternative software UART library under the same hardware conditions, wiring, board, and baud rate. That setup decoded the same BEKANT traffic reliably, with essentially 100% (versus 30% before) valid frame decoding in my tests.
I wanted to report this in case it is useful for documentation or compatibility notes. It may be worth mentioning that LIN-like receive/sniff applications with BREAK detection and strict timing may need extra care on ATmega328P.
Thanks.