The MasterLink protocol and opensource

143 replies
...

Hi all,

anybody out there who has successfully revers-engineered the MasterLink protocol?
I think that there was already an attempt by a Beoworlder in the old forum but did he ever continued his work? 
/forum/general-discussion-and-questions/strange-noise-coming-from-beolab-9-and-the-happy-ending

linkJust had an old ML modul from a BeoMedia in my hands and thought about whether somebody could build something compatible.
A ML transceiver without all the BeoLink PC and BeoPort stuff...

You know, just a little PCB that could be attached on and controlled by e.g. a Raspberry Pi.
The engineering part shouldn't be too hard. Just a couple of OP amps, two MUXing ICs and a good DAC with symmetrical output. But a very time consuming project indeed...

Wouldn't that be cool? A diy MLGW + BeoSound system that is highly customizable and opensource for little money...

 

BR,
BeoMotion. 

 

-------------------------------------------------------------------------------------------------------------------------------------------

Current state:

Jun 10 2015  - Inverted logic at the output of the RS485 converter. Need to add a logic inverter.
Jun 7 2015    - RS485 to RS232 converter MAX
3280E can be used to read data directly from ML bus
Sep 20 2015  - Tried to send data using a RS485 transceiver. Unsuccessful.   

--------------------------------------------------------------------------------------------------------------------------------------------

Cheat sheet:

1) Link to old post hooking up a logic analyzer to internal UART of BeoPort: LINK
2) Link to old post where member "psand" describes some details of the telegram: LINK

--------------------------------------------------------------------------------------------------------------------------------------------


I kinda have reversed engineered part of the ML protocol. Not directly on the ML as you're suggesting, but on the USB between Beoport and the PC, or between that board and the Beomedia (it's the same).

The BeoPort has a protocol containing 2 kind of messages, some messages are addressed to the box directly (turn speaker on, etc) and some are passed through the ML.

P.

Okay, but then you would still need the BeoPort that "translates" USB to ML.

Would be nice to have a more "efficient" solution.
A small PCB with UART and I2S input and a RJ45 ML output.

 

BR,
BeoMotion. 

What's in the Beoport is probably exactly that board you're talking about. But I am happy to help anyone whose got a serious project with what I know from the protocol.

Have been looking at this in the past whether there is a possibiluty to revers engineer the ML or to pull the PCI card which is used in the BeoMedia. Making use of Rpi2 might be a interesting idea since it would be possible to add additional hw modules to for example improve audio quality from the Rpi. Question is if the pin layout on the Rpi is enough and would work out:

Happy to support with gathreing information, testing, hosting and documentation. But, have limited coding skills. Here are some additional links on the same topic:

- Connecting Beomaster to RaspberryPi and or PC

- Reverse Engineering of B&O drivers (BeoPort) and software (BeoPlayer)

Yes, but the problem is that most of the ICs used in the BeoPort aren't available any more as well as the BeoPort itself.

So it would be a complete new design with new components.
The core in the BeoPort seams to be an USB->Serial converter IC and an 8bit MCU that translates the commands to ML language.
Both components could be replaced by a well programmed linux kernel modul or a normal C/C++ program and some gpio bitbanging.

Unfortunately I have not really the time for something like this at the moment.
I just had the idea and maybe some others with more spare time will read this and get inspired... :-)

kimhav wrote:
Have been looking at this in the past whether there is a possibiluty to revers engineer the ML or to pull the PCI card which is used in the BeoMedia. Making use of Rpi2 might be a interesting idea since it would be possible to add additional hw modules to for example improve audio quality from the Rpi. Question is if the pin layout on the Rpi is enough and would work out:

The "PCI" card isn't really PCI. It is connected to internal USB and SPDIF. PCI is only used for power supply in this case.

Yes, we definitively need somebody who designs a MasterLink Raspberry Pi HAT and somebody that writes a dedicated driver software for it.

Any volunteers? :-) 

BeoMotion wrote:
The "PCI" card isn't really PCI. It is connected to internal USB and SPDIF. PCI is only used for power supply in this case. Yes, we definitively need somebody who designs a MasterLink Raspberry Pi HAT and somebody that writes a dedicated driver software for it.

Ah. Wasn't aware of this which would make it easier due to the facts that one doesn't need to make use of a PCI-bus.

Forgot to mention, but there is at least this SourceForge project still available which controls the BeoPort:

Yes, I am aware of this project. The problem is that it depends on the BeoPort hardware, too. We need a more simple solution.

Just hooked up a scope on ML DATA. Found out that the data seams to be transmitted by just +-300 mV.  
Expected a much higher voltage...  

Maybe I will put some more effort into this and create a little arduino library that can read the raw data from the ML bus with few external components.
This would be a good start to build upon... 

BeoMotion wrote:
Just hooked up a scope on ML DATA. Found out that the data seams to be transmitted by just +-300 mV.  
Expected a much higher voltage...  

Yes, I looked at this a while ago, but didn't have much spare time available at the time and I then ended up buying a MLGW which removed much of the incentive to investigate further.

I believe the spec is 0.5V peak to peak (+/- 250mV balanced signal) - presumably this low voltage was chosen at least in part to reduce the risk of crosstalk between the data and audio signals. Some negotiation occurs when masterlink is powered up as to which device will be responsible for driving the data bus, with the audiomaster or videomaster then being responsible for providing the power. Devices then pull these lines to ground to transmit. Since this is a bus arrangement, I would assume there is also some mechanism for avoiding and/or dealing with collisions (when more than one device attempts to transmit simultaneously).

I understand you wanting to interface to Masterlink directly, but since all these details will not be trivial to implement, and are already handled by the Beoport PC2 (which whilst no longer available new are frequently available used on ebay for not much money), if you wish to transmit data, the simplest option is likely to be to interface to masterlink via a Beolink PC2. What I'm not certain of is how much manipulation of the masterlink data occurs within the PC2 - ie whether it blindly passes all the masterlink data through to the USB (and vise versa) or whether it filters/converts this data relative to it's original and intended use. PhilLondon may be able to answer this one.

You are however correct in what you say about reading the raw data from ML - this should only require a few external components and some software and therefore should be reasonably simple to implement. It's one of those projects I've considered doing for a while but haven't found the time to do yet. My idea was to sniff ML data, spefically looking for A.MEM related commands, as a trigger to send datalink instructions to my Beogram (which is connected to the aux input of my BS9000). Because the BS9000 is in option 0 with a BV7 in option 2, all commands will cross the ML network, even in the main room, so this would be a nice way of gaining full remote control of the turntable from anywhere within the house.

I'll follow with interest any progress you make with your arduino library as it may inspire me to allocate some time to this project.

Kind Regards,

Martin.

Location: Exeter, UK

...
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.