Decoding Datalink

20 replies

Hi all,

Since a few years I'm in possession of a Beomaster 2000 receiver and accompanying Beocord cassette deck. The unit was originally owned by my parents and was put aside as being defective due to a lightning strike several years ago, and I got the whole set for free. (Unfortunately, the matching Beogram was trashed because of a wasted pickup).

I eventually pulled the unit apart with the service manual alongside it and disconnected the tuner circuit, which seemed to output static on all inputs (including PH and TP), and the unit has been my primary amplifier ever since, with a pair of Magnat speakers. I suspect the lightning caused a power spike on the aerial which blew the HF filter caps, causing them to leak noise to the power or ground rails.

Anyway, I've just moved into my new flat and started on a project to get the Beosystem back to its original glory, with improvements. Since the system is used  as an amplifier for other audio sources (DTV, HTPC, Wii, Bluray) as well, I decided to have a look at the Datalink system that's featured on the BS2000 series, and maybe implement a USB to/from Datalink interface so I can integrate the AV system in my home automation network.

On all Beosystem 2000 units, the main CPU is a  8048 microcontroller with the Datalink connection wired to a GPIO pin. The 8048 didn't have an internal UART, and all Datalink connections seem to be hard-wired together in the Beomaster. For some reason, Datalink is on pin 6 for the Phono port and  pin 7 for the Tape port (see board 2 schematic in the service manual). I'm not  sure if the 8048 has any open-collector I/O pins, nor do I have any idea on how the MCU's arbitrate the bus to prevent simultaneous writes.

Ultimately, I'd want to figure out the protocol format and control codes for the 'old' Datalink, so I can connect my own hardware to it to respond to Datalink actions (like pressing a program key) or control the system remotely (e.g. a master standy function for all AV equipment). I can also use the remote decoder input of the Beomaster to control the system, but that would involve modifying the receiver from its original state. I have plenty of spare MCU's so building a new Datalink device is pretty easy.

Has anyone done some research on the old Datalink codes before? I'd figure they're easy to reverse engineer if you hook a scope to one of  the bus pins and sniff out the data when you're performing certain actions. If I want to go the adventurous route, I can try to rip the firmware from the MCU and disassemble it (and possibly drop in a new 8051 with extra features...)

Maybe Ridax would be the man to ask.

Martin

I thought BM2000 / BC2000 used the "new" Datalink? Anyway, I haven't seen a single word of description of the old Datalink format (the new/current format is semipublic as far as the frame structure goes). Unfortunately I don't own any of the old format devices, otherwise I would've scoped it a long time ago 🙂

Physically I suppose it is a wired-or bus just lke the current, so the arbitration is similar to I2C: a device sending on the bus must monitor it and detect a collision if the bus wire doesn't agree at any time while sending a high level. At a previous job I had the immense displeasure to maintain some old 8048 code - as far as I remember, at least some of the ports are pseudo-bidirectional just as in 8051. Write a 1 to the port and it activates a weak internal pullup that can be easily driven low by an external signal. Many of the earlier B&O Datalink devices that use either of these processor families have the Datalink buses wired more or less directly to a port pin. Definitely none of them use the UART, the message frames are too long for that.

I guess the pin 6/7 distinction was there to encourage people to connect the devices to the correct input 🙂 When the RIAA preamp was moved from the receivers to the turntables, the Datalink pin changed as well.

As an interesting piece of trivia, all B&O Datalink implementations until 1997 or so contain a bug in the collision detection that occasionally causes messages to be lost. Apparently the protocol contained a few thousand lines of decade old assembly code which was also the main documentation. The bug had proved impossible to trace conventionally, but was finally nailed using a formal state-transition graph analyzer. There was an Aalborg(?) University CS report on this, I'll post the link if I ever manage to find it again.

EDIT: Found the report - it was published in link (you need IEEE Xplore access from an academic library, or otherwise, to download the full text), and the unpublished version can be found

tournedos wrote:
the new/current format is semipublic as far as the frame structure goes

Have you got any documentation/lins about the protocol... I'll be really interested.

Google for "datalink.zip". There used to be a broken link for it in Beotech - might actually be on site somewhere nowadays. The IR remotes use the exactly same data format (but obviously L level on bus  = 455 kHz carrier on).

EDIT: Yes it's on site - rather confusingly as the MCL2 technical service manual.

tournedos wrote:

Google for "datalink.zip". There used to be a broken link for it in Beotech - might actually be on site somewhere nowadays. The IR remotes use the exactly same data format (but obviously L level on bus  = 455 kHz carrier on).

EDIT: Yes it's on site - rather confusingly as the MCL2 technical service manual.

I had a look around the manual and found out that it describes the data link format for Beosystem 5000, Beolink 1000, Beovision MX5xxx and other models of the series. That includes the (later models) Beomasters 3500 and 4500, but not the 2000, which uses the old data link format.

The document does mention that the 'old format' is compatible with the new format, meaning the basic signal timing is identical but only new address and command codes may be added. However, I also recall a mention of some Datalink devices being incompatible with each other (e.g. a 2000 series Beomaster with a 4002 Beogram and the like).

Is there a difference between those formats as well? I'd really like to upgrade my Beosystem with a tangential tracking turntable, but I want one that can be controlled from my Beomaster. Not being sure of that kept me off purchasing one for the time being.

EDIT: I got a hold of the IEEE document (hey, it helps when you're an EE student, free IEEE Xplore access!) and there's enough data on there to make a complete implementation of the Beolink (new style) protocol in something like an AVR. I'm not really sure how much of which we could publish it, however, because I'm quite clueless as to when the relevant patent(s) would expire.

Goddammit I hate it when you write a lengthy reply and the forum eats it! 😜 I'll try once more with as much as I still remember...

Stoney3K wrote:

The document does mention that the 'old format' is compatible with the new format, meaning the basic signal timing is identical but only new address and command codes may be added. However, I also recall a mention of some Datalink devices being incompatible with each other (e.g. a 2000 series Beomaster with a 4002 Beogram and the like).

Is there a difference between those formats as well? I'd really like to upgrade my Beosystem with a tangential tracking turntable, but I want one that can be controlled from my Beomaster. Not being sure of that kept me off purchasing one for the time being.

The "Ye Olde Format", as I now call it 😁, used by BG4004 and I guess 2404, has really nothing in common with Datalink, new or old. The only Beomaster using that format is 2400-2 as far as I understand. The message only contains a couple of bits, and as these Beograms don't even have a microcontroller, is decoded completely with hardwired discrete transistor logic at the Beogram end. I've never seen it documented, but it would be possible (although tedious and boring) to decipher from the Beogram schematic. Would be easier to scope it off the wire, but I only have the BG4004 and it isn't very talkative by itself 🙂

EDIT: I got a hold of the IEEE document (hey, it helps when you're an EE student, free IEEE Xplore access!) and there's enough data on there to make a complete implementation of the Beolink (new style) protocol in something like an AVR. I'm not really sure how much of which we could publish it, however, because I'm quite clueless as to when the relevant patent(s) would expire.

I don't think it's patented, and that wouldn't prevent any personal use anyway. The state-transition diagrams have been published in that article, so they are public information as well - however, the actual article has copyrights so let's not regurgitate it here.

A DIY project, which would probably be only point-to-point communication, will manage with a much simpler implementation that doesn't  care about collision detection. That would mostly be an issue on an MCL bus with multiple devices, like a multiroom installation.

The "future, more automated version of the protocol" mentioned in that document must be Masterlink.

Where can I find these documents? I have been looking for these for a while. They would be very useful for a project I am doing.

Thanks in advance for your help.

Phil, as I said the MCL2 technical manual is on site, and the other one really contains nothing you wouldn't already know after reading the MCL2 doc (and I already posted a direct link to the freely available version of the latter). It's not really a technical document on Datalink, just a case study on an unrelated software tool.

Stoney3K wrote:
Is there a difference between those formats as well? I'd really like to upgrade my Beosystem with a tangential tracking turntable, but I want one that can be controlled from my Beomaster. Not being sure of that kept me off purchasing one for the time being.


Hi Stoney,

The Beogram 3000 tangential will datalink with your BM2000. I used to have one with my BM3000, which is nothing more then a remote controllable BM2000. It's a great and good looking turntable!

I have been following this interisting thread, although I lack a real technical background  I am very interested in datalink for home integration and interlinking older and newer B&O products. Do post any datalink discoveries you make, I am all ears, and I'm sure I'm not the only one!🙂

Groeten!😕

Location: Netherlands

or
BeoWorld Gold Membership card
Join BeoWorld

Register to access the forums, reference material, and exclusive member benefits — including our monthly prize draw.

Become a Member

December 2026 Prize Draw

Gold Members Only

As a Gold member you're automatically entered into our exclusive prize draw — your chance to win iconic Bang & Olufsen products. A unique benefit of BeoWorld Gold membership, every draw brings a new opportunity to win something special.