Beomaster 6000 and datalink protocol

23 replies

Hi,

Edit: Subject renamed from Beolink to more correctly "datalink"

I recently bought an Beomaster 6000 (225x) in an unknown state.

After some digging and measurement in the device I came to the conclution that the CPU was zapped and not working.

Looking at the schematics I came up with the idea of mimic the CPU with a modern microprocessor, and some days ago I started to wire up the new CPU and write my own implementation of the CPU-code.

To my surprice it works even better than I thought! I have now most of the machine working again! I can read the keys and select input, write and update the display etc. The next step is to implement the timers and clock and after that the frequency counter so I can show the correct radio-freqency in the display too.

The volume shouldn't be any problem - right now the CPU board is partly removed so I can flash and update the new CPU without removing it from the board. I managed to swap some pins on the new CPU and the IC-holder - so I don't have to do any modification on the main board - the new CPU (with my modifications) is pin-compatible - just plug-and-play!

After I get the volume and frequency counter working I will try to implement the remote control as well 😕

Now to my main question - does anyone know how the datalink protocol is implemented in the Beomaster 6000? All I have is the service manual (which doesn't help much) - and I have no other Beo-equipment to check or test on ...

From the schematics it looks like the protocol is bi-directional, that is all I know.

And secondly (again since I have no other device to test on) - are the buttons just single presses - or can one hold down a button for repeated entry? I'm mainly thinking on the volume up and down - can one press the button and hold it so the volume increases/decreases as long as the button is pressed - or do you have to press it multiple times (one step for each press)?

Cheers,
Thomas

Location: Sweden

Hi Thomas,

interesting project! What microprocessor did you use?

You can find some info on the various B&O protocols here on Beoworld <link>.
Unfortunately the download link on the <> doesn't work but the datakink '86 manual can be found easily on the net, e.g. <link>.
Datalink'86 is the advanced version of the datalink protocol and you won't need most of it considering you're looking at the BM6000, which uses the predecessor datalink'80, but the protocol structure is the same.

It seems that several people have already hacked datalink (at least partially) and you can find several github projects on the net. <> looks like an interesting Arduino project that allows you to log and analyze the actual codes for various actions - both for datalink 80 and 86.

Hi Manfy!

Thanks for your comment!

I'm using a PIC16F887 which have all I need, timers, GPIO's etc. It was not completely pin-compatible, so I had to swap some pins which can be seen on the "prototype build" in the picture below.

Thanks for the datalink info! But the more I think about it, and since I have no other B&O equipment, I'm thinking of using that pin for other stuff. Since I have the timers I need I have no need for the "675Hz" nor the "50/60Hz" input (can't see why the "50/60Hz" is there in the first place). With the use of the datalink-pin as well, I could use these pins to add some other device instead - e.g. a ESP8266 to get WiFi connectivity.

With that I could e.g. get the time from the internet to set the clock automatically (and keep it correct) and also control the device over WiFi, using a phone or SmartHome-devices as remote controls.

But first I will complete the restoration of the device. I have everything implemented except the timers, frequency counter, remote control and the datalink protocol. Yesterday I added a clock, so I can switch between the clock and frequency display. Now I will continue with the replacement of the trim-pots and capacitors so the amplifier runs smoothly, and when that works I have to update all leds in the display. As seen in the picture, several segments are gone, so all leds have to be replaced in the displays (in the picture I have written "000.0" and "TP5" to the display).

Cheers,
Thomas
 
 
 
This shows the new CPU in place with the flash-interface connected (so I can reflash the device without removing it from the board).
Radio work fine - the tuning lamps and indicators work ok, but several led-segments must be fixed - this is on the list when everything else works ok!

Location: Sweden

ThomasF wrote:

Thanks for the datalink info! But the more I think about it, and since I have no other B&O equipment, I'm thinking of using that pin for other stuff. Since I have the timers I need I have no need for the "675Hz" nor the "50/60Hz" input (can't see why the "50/60Hz" is there in the first place). With the use of the datalink-pin as well, I could use these pins to add some other device instead - e.g. a ESP8266 to get WiFi connectivity.

With that I could e.g. get the time from the internet to set the clock automatically (and keep it correct) and also control the device over WiFi, using a phone or SmartHome-devices as remote controls.

Yes, indeed. Nobody forces you to re-code the BeoFirmware the very same way as the original.
From a different thread I know that the 50/60Hz signal is used for the time display on the BM6000. If you have other means to keep the time display accurate, you won't need that signal.
The 647Hz timebase seems to be used for syncing the FM display, but since you have prescalers in the PIC chip, this signal may not be needed. Just try it out and see how well the frequency display works without the hardware pre-scalers IC6/7 and link to IC8/IC9.
If this were my own project, I might not want to give up on datalink so easily, though. Fair enough, you don't have any other B&O equipment right now, but what if you suddenly find an interesting beogram for a good price? Wouldn't you want to control the turntable from your remote without having to redesign and reprogram the BM6000 PIC?

Regarding the IR remote signal, you should be able to find a number of projects on the web that show the format of the IR-protocol. Maybe you can even find an actual B&O code library. I have been working on some universal remote control project around 10-15 years ago - not all of the info is easy to find and not all of it is ready to use, but with a bit of time on your hands it's possible to figure it out.

 

manfy wrote:

Yes, indeed. Nobody forces you to re-code the BeoFirmware the very same way as the original.

...

If this were my own project, I might not want to give up on datalink so easily, though. Fair enough, you don't have any other B&O equipment right now, but what if you suddenly find an interesting beogram for a good price? Wouldn't you want to control the turntable from your remote without having to redesign and reprogram the BM6000 PIC?

Hi,

Yes, that is true!

For timing I think I have what I need, so the timebase and 50/60Hz pins are free, and I also think there is another pin that is not used, "*FM-LOW OSC" which just seems to be grounded according to the schematics, so there should be enough pins to add something further down the road.

If I manage to fix the remote control, I think the datalink should be feasible as well, and I agree that in the best of worlds the replacement CPU should be compatible with all functionality of the BM6000!

Should keep my eyes open for a matching Beogram then ... 😕

Cheers,
Thomas

Location: Sweden

ThomasF wrote:

[...], and I also think there is another pin that is not used, "*FM-LOW OSC" which just seems to be grounded according to the schematics, [...]

Yes, that is strange. And it's even stranger that the service manual shows a dashed line to GND! 😂
You should probably check whether that pin really is grounded! If so, you're free to use it for any purpose in your design.
From other threads I know that the actual circuitry for the pre-scaler and frequency counter is somewhat different to what you see in the service manual.

I'm just guessing here but I think "FM-LOW OSC" is a typo and it should be "FM LO OSC", i.e. local oscillator frequency.
Probably the designers planned to measure the local oscilaltor frequency and the IF frequency in an early design, but decided against it in the end.
When you're coding the FM display don't forget to subtract the IF frequency of 10.7MHz divided by 512 from the signal coming from the hardware frequency counter to get the actual carrier frequency!

Ciao,
manfy

 

Ciao manfy!

 

Thanks for your tips - it is slowly coming back to life! 😕

Yesterday I got the volume going - the motor drivs the pot as expected - but I have one question regarding this.

When I press volume down I assume that the motor goes as long as the button is pressed - but what happens when we reach the bottom? In my implementation the motor just continue to run and the belt "slipps" - i.e. the potentiometer is stopped at the bottom. I can't see any logic in the schematics that will stop the motor - or is it some kind of trimming (I have followed the service manual to trim the motor) I have missed? The CPU have no knowledge about the position of the motor so I can't have the firmware to stop it. It just feels akward that the motor keeps on running (until I release the button) even if 0 is reached ...

How does a "real" 6000 behave when the volume down button is pressed for a long time? Will the motor continue to run? Stop at level 0? Or just stop after a timeout ... ?

With the other volume buttons (0-60), I had to insert a delay for ~2 seconds, since when releasing the button the motor stops immediately (before reaching the wanted volume) so I had to simulate that the button is pressed long enough until the wanted position is reached. Even if the button is pressed longer the motor stops when the position is reached (not so with up and down button ...).

Today I started to implement the frequency counter, and as shown in the video below - it seems to work fine! I still have to replace the faulty led segments and trim the clocks and counters - but the counter works and gives expected results 😁

(It looks like 175MHz in the display - but it is actually ~105Mhz since some of the sgements are broken!)

The trim-pots and electrolytes have been replaced, the amplifier trimmed and sound ok, so next step is to fix the leds and then start to look at the timers and the remote control - or in reverse order ... !

Regarding the "FM-LOW OSC", it is not connected at all in my device, not even grounded, so that pin is free! 🤒

Didn't manage to add the video (maybe to large?) so I added a link to it ... hope that works!

https://photos.app.goo.gl/vcdPCBdnhxSqNtGm9

 

Cheers,

Thomas

Location: Sweden

Hi Thomas,

congrats on your first successful steps!
I'd love to help but I'm afraid I have no hands-on experience with the BM6000 and therefore I can't tell you the actual behaviour of a working unit. I hope that some other beoworld members will chime in - I know there are some very experienced people here on this forum.

My previous answers were based on general experience in electronics and the info I get from reading the circuit diagrams in the service manual.

ThomasF wrote:

With the other volume buttons (0-60), I had to insert a delay for ~2 seconds, since when releasing the button the motor stops immediately (before reaching the wanted volume) so I had to simulate that the button is pressed long enough until the wanted position is reached. Even if the button is pressed longer the motor stops when the position is reached (not so with up and down button ...).

Hmmm...2 seconds? Why? And what happens to the outputs after those 2 seconds???
Looking at the circuit diagram and page 6-7 of the service manual I would think that those volume preset buttons should be latched, ie. once the uP detects a button press, it sets the 6IC6 inputs A/B/C/D as per truth table on page 6-7 and keeps it that way until another button that acts on 6IC6 is pressed.
The only exception is "Vol up" and "Vol down": they are momentary, ie. you set the outputs as per truth table for as long as either button is pressed and then you set ABCD to 1111.

Regarding Vol up/down, I first thought that the end position will be detected via the slave volume potentiometer 5R6 somehow, but then I noticed that this pot is actually disabled as long as pin 12 of 6IC6 is high. So, as per the functional description in the service manual it seems that the motor keeps running for as long as Vol up/down are pressed.
On the other hand that doesn't feel right and it's not B&O-like...😮

I think here we really need someone who knows how this up/down action reacts in an original BM6000!

manfy wrote:

... it seems that the motor keeps running for as long as Vol up/down are pressed.

It does.

Martin

manfy wrote:

Hmmm...2 seconds? Why? And what happens to the outputs after those 2 seconds???

Looking at the circuit diagram and page 6-7 of the service manual I would think that those volume preset buttons should be latched, ie. once the uP detects a button press, it sets the 6IC6 inputs A/B/C/D as per truth table on page 6-7 and keeps it that way until another button that acts on 6IC6 is pressed.
The only exception is "Vol up" and "Vol down": they are momentary, ie. you set the outputs as per truth table for as long as either button is pressed and then you set ABCD to 1111.

Thats how I first implemented it, but that didn't work for up/down, so I changed the implementation so the code output was removed when the button is released. But, then vol0-60 failed so I introduced a delay for ~2 seconds for these buttons.

But as you say, a better solution would be to just keep the output for all vol0-60 keys, but keep up/down momentarly.

Dillen wrote:

It does.

Martin

Thanks Martin - then I know! A bit hard when I never had a chance to use a working BM6000 and try to implement the firmware just from the schematics and wild guessing ... 😕

But, so far so good - radio works fine, so implementing the timers 1 and 2 is next on the list before I dig into the remote control, saving the datalink to last ...

BTW, I saw a YouTube-clip with the BM6000 and it looks as if the DP1 display shows 4 symbols ("nnnn") when the "OK" button is pressed while listening to the radio, are there other strange display patterns not mentioned in the manual ... ? 😂

Cheers,
Thomas

Location: Sweden

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.