Home › Forums › Product Discussion & Questions › BeoMaster › Understanding Datalink 86
Tagged: Datalink, datalink 86, IR codes, MCL, mcl2, smart device
- This topic has 0 replies, 1 voice, and was last updated 1 hour, 33 minutes ago by
Storck.
-
AuthorPosts
-
3 February 2026 at 18:03 #73175
Storck
BRONZE MemberOk, I need some help understanding the datalink 86 protocol!
I will try and update this post with my findings, so it can work as a reference for future hobbyists!
I want to build a device for Home Assistant so I can take control of my Beomaster 6500. I want to be able to automatically turn it on and off when the TV goes on and off, and use my phone or the TV remote to control the volume etc. Nothing fancy. I’ve read about some similar projects here on the forum, but not exactly what I want.
I’ve hooked up a esp32 to a logic level shifter and wrote some software that sends the data I input, so far so good.
I’ve followed the documentation here: https://www.mikrocontroller.net/attachment/33137/datalink.pdf
Start: 3 bits
In the documentation it says “four pulses”, but in the example diagram (2045-4) I only see three, this is also what the datalink sends out when I use the remote.t1 t1 t5
Format (local/2adresses): 4 bits
This Is a bit of a mystery for me. From the signals I gathered I get 0000 for “short” remote signals, and 0011 for the much longer messages. Is there any documentation about this?Address (to): 5 bits
I suppose this is the device/source you want to control, so “0 0000” for TV, “0 0001” for Radio etc?
Address (from): 5 bits
I haven’t sent this part, from what I read on other posts this isn’t included in the “short” message system.
Data: 8 bits
The actual message, this is pretty well documented as well:
https://github.com/toresbe/datalink/blob/main/datalink86-captures-new.txthttps://github.com/christianlykke9/Beomote/blob/master/Commands.h
for example I get “1010 1100” when pressing standby. “1000 0000” when pressing the “TV” source button.
Stop: 1bit
T4 + tailing pulse.
With this logic a message like this should work.
Start | Format | Address (to) | Data | StopSTX | 0000 | 00000 | 1010 1100 | ETX
I can’t get this code to work, even though it’s the same as I’m receiving when I press the remote.
On the other hand some codes work. This code for example works, and changes the radio to channel 2.STX | 0000 | 00001 | 0000 0010 | ETX
The full/long messages
For a lot of button presses on the remote I get the long message type. These seem to consist of 40 bits, much longer than the datalink 86 documentation I linked above.
Example from Toresbe github:
STX 0011 1011 1100 0001 0100 0000 0000 0010 0000 0000 ETX # Power off
How are these codes structured? Format, Address (to), Address (from), Data? How many bits for each?
From right to left the data seems to be 8bits data, 16 bits display settings (?), 5 bits source(Adress(to)). I cant figure out the first 11 bits, I suppose that the four first is the mysterious “Format”. I read somewhere that 0011 is “Local format”.
Start | Format | ????? | Address(to) | data (display) | data (command) | Stop
STX 0011 | 1011 110 | 1 0010 | 0100 0000 0000 0000 | 0000 0000 ETX # CD
STX 0011 | 1011 110 | 0 0001 | 0100 0000 0000 0000 | 0000 0000 ETX # RADIO
Are you supposed to include all the display data when you send commands? Or is this just used to broadcast information to other units about which track your listening to etc?
Does this have anything to do with the different “Beolink options” you can choose in settings? 1 for same room, 2 for TV in another room, 3-4 for different MCL2 units. Or does this only impact the remote?
All input will be much appreciated.
-
This topic was modified 21 minutes ago by
Storck.
-
This topic was modified 21 minutes ago by
-
AuthorPosts
- You must be logged in to reply to this topic.