Skip to content

nigels0/Beosystem-3-control-non-B-O-TV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

Connecting a Beosystem 3 to a non-B&O TV

The Beosystem 3 is a wonderful media processor – especially if your speakers and rest of the system are Bang and Olufsen, though there is a problem in connecting the Beosystem 3 to other brands of TV.

This explains how you can actually do this using the Beosystem's Serial Port and HDMI CEC on the TV.

Background

The Beovision 4 monitors were designed to be used by the Beosystem 3, but the monitors themselves were Panasonic Professional Plasma Displays. The control of the display was handled by the Beosystem by sending commands via the Monitor serial port.

The command list can be found here – https://panasonic.net/cns/prodisplays/support/rs232c_commandlist_prev.html

but basically, the only ones we are interested in is the power on and off.

The solution to allowing the Beosystem 3 to turn on and off the TV when the Beosystem itself turns on and off is detailed here:

Hardware Requirements

  1. Raspberry Pi – most generations would be OK. You just need GPIO ports to connect a serial port connector to.

  2. RS232 to TTL DB9 Serial Port connector – this has a 9-pin serial port and outputs the serial commands via wires that plug into the raspberry.

    An example is shown here

    https://www.kiwi-electronics.nl/rs232-naar-ttl-seriele-poort-converter-met-db9-connector?lang=en

    They are also available on ebay.

  3. Serial cable to connect the Beosystem 3 to the serial connector and HDMI cable to connect the raspberry to the TV.

Note the serial cable needs some pins shorted – pins 7&8.

I put the serial device into a hobby box so it would be tidy – there is, of course no need to do this. As an aside, you could short pins 7&8 on this device rather than having to hack the serial cable.

Note you need the VCC connector to go to the 3v port on the raspberry – not the 5v as the GPIO pins of the raspberry only accept 3.3v – 5v could do some damage.

Connect the RXD and TXD, VCC (3.3v) and GND cables to the relevant ports on the raspberry.

Connect the HDMI cable from the raspberry to the TV. Note that you could put this in-line with the existing HDMI cable from the Beosystem 3 to the TV if you use a CEC injector – like the Pulse 8 CEC injector:

https://www.pulse-eight.com/p/104/usb-hdmi-cec-adapter

I've tested both with and without this adaptor– but if you don't have this then you'll need to run two HDMI cables to the TV – one from the Raspberry and one from the Beosystem 3.

Software Requirements

For the Raspberry Pi, I used the Raspbian image – there are many tutorials on how to set this up in headless mode with ssh enabled – here's a good one:

https://www.tomshardware.com/uk/reviews/raspberry-pi-headless-setup-how-to,6028.html

Set up the Raspberry Pi to use the serial ports.

Sudo raspi-config

Choose:

5 Interfacing options

P6 Serial

No to the login shell but yes to have the serial port hardware enabled.

Then get the library that the python script uses to communicate with the serial port

sudo apt install python-pip

python -m pip install pyserial

You then need the HDMI-CEC libraries:

sudo apt install cec-utils

Download the ser.py code from this project and try it out. If you have some errors with missing libraries – just download those libraries and retry.

There are many guides on how to set up serial communication on the Raspberry – with some sample code to test – but you can see the communication between the Beosystem 3 and the raspberry if you set Debug = True in the ser.py code.

Note that the script switches the TV to HDMI1 – this is not necessary if you are using the Pulse-8 adaptor, but ensure that the port chosen is the one that the Beosystem 3 is connected to.

With that all working, you should see that when the Beosystem 3 is turned on, there will be a flurry of text going to the raspberry and what the script is looking for is

Power on: "\x02PON\x03"

Power off: "\x02POF\x03"

When it detects whichever one of those it receives, it sends the corresponding CEC command to the TV

Power on: os.system('echo "on 0"| cec-client -s > null')

Power off: os.system('echo "standby 0"| cec-client -s > null')

Note that as this script needs to be constantly listening on the serial port, you need to start it as:

python ser.py &

and, better still set it up to run in the background at boot.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages