BeoSound 5c
A Recreated Classic
A modern resurrection of the Bang & Olufsen BeoSound 5 that preserves its original interface and character—what it might have been if released today. Partly a technical experiment for my personal setup, partly a love letter to Bang & Olufsen. Designed to run on real BeoSound 5 hardware with your B&O PowerLink speakers or with Sonos. Works with Spotify, TIDAL and other sources, B&O remotes (IR, Bluetooth, and two-way Beo6), and Home Assistant.
What is the original BeoSound 5? ↓
The BeoSound 5 (and its accompanying "computer" BeoMaster 5 required to run it) was a groundbreaking music system released by Danish premium audio manufacturer Bang & Olufsen. Announced in late 2008, it arrived in the early streaming era—post-CD but just as Spotify launched (founded in my home city Stockholm!).
At the time, it was clear CD wasn't the future of music. Yet streaming services were mostly accessed through computers, not dedicated devices. For context, Sonos didn't release its first speaker with built-in amplification until 2009.
BeoSound 5 was designed to browse and play music from the BeoMaster 5's internal hard drive—your ripped CD collection—or stream from iTunes and network file servers. It felt like the future. But that future moved in a different direction, and the software quickly felt dated as streaming services like Spotify never got proper long-term support.
Other factors likely contributed to its limited success: a retail price around $5,000 (without speakers), the need for a separate "ripper" device to digitize CDs, or paying B&O dealers for the service.
See a review from 2009 and more details on Beo.Zone.
What works (for me, and hopefully for you)
I've created a setup that works well for me, and I've tried making it work in a wider range of configurations too, but your mileage may vary. Expect to do some tweaking for your environment.
Original Hardware
Works with the original BeoSound 5 screen, including the buttons on the device and IR receiver. Replaces the old BeoMaster 5 'computer'. Works with your active Bang & Olufsen PowerLink speakers. Also works with the music you may have on the HDD/SSD in the BeoMaster 5.
Sonos or PowerLink
Tested with complex Sonos setups and works very well, including ability to join and unjoin other players. Speakers are auto-detected on your network. If you have active speakers connected to the BeoMaster 5 via PowerLink, no need for Sonos at all. Bluesound has experimental support.
Spotify, TIDAL, Apple, Plex, Radio
Browse your Spotify, TIDAL, Apple Music, or Plex library through the arc interface, or tune into 40,000+ radio stations. Select a playlist or song and it plays through your connected speaker. See GitHub for details on source and player compatibility.
Lossless CD Playback
If you have the original CD ripper for the BeoSound 5, it can stream lossless audio directly to any AirPlay device, such as a Sonos speaker. Album artwork is fetched automatically, just like any other source.
BeoRemote One Bluetooth
Support for your BeoRemote One, and you can add the BS5c as just another Bluetooth product. Supports multiple modes and favorite buttons.
Beo6 Two-Way Remote
Support for the classic Beo6 two-way remote. Allows artwork display and playlist selection. Works out of the box.
B&O IR Remotes
All Bang & Olufsen remotes with IR work out of the box. Tested: Beo4, Beo6, BeoSound Essence (all IR modes), Beolink 1000, Beolink 5000 (one-way), B&O Keychain, Beo1, and BeoTime.
Home Assistant
Control scenes, lights, and other smart home devices. In Home Assistant you can customize any logic for any event - e.g., have your lights dim down automatically when you select your Dinner playlist.
What you need & how to set it up
Warnings
The BeoMaster 5 contains mains voltage components that can cause serious electric shock, burns, or fire. Always disconnect from mains power before opening. Capacitors may retain charge even when unplugged. If you're not comfortable working with high voltage electronics, don't attempt this modification. Proceed at your own risk.
- You'll need to modify the BeoMaster 5 or build an external power supply
- Will likely require some coding and configuration to get working for your setup
- Many features are best controlled through Home Assistant - direct control requires coding (not supported out of the box)
- This has been purpose-built for my setup - you'll likely need to tweak configurations, adjust the UI, or modify integrations
That said, if you have a BeoSound 5 gathering dust and enjoy tinkering, this might be a fun project.
Requirements
Required
Highly Recommended
Also Supported
Overview
Hardware: The Raspberry Pi 5 connects to the BeoSound 5 screen via HDMI (using a DVI adapter) and USB (for the wheel, buttons, and laser pointer). The BeoMaster 5 powers the screen and provides USB access to the IR receiver on the daughterboard. The BeoMaster 5's internal power supply could potentially power the Raspberry Pi directly, but this has proven a bit unreliable in some of my tests. For now, a good 5V 5A USB-C power supply is recommended, but I hope to get stability in just using the BeoMaster 5 power supply. The Raspberry Pi's built-in WiFi has limited range, so wired Ethernet is recommended. If that's not an option, a compatible USB WiFi dongle works as an alternative.
Software: The software is structured around a few different Python services, serving a web interface to Chromium running in kiosk mode. This architecture makes it easy to emulate and develop for the BeoSound 5 on a local machine without the actual hardware. See the GitHub repository for all the details.
Hardware setup
Open up the BeoMaster 5
Remove the black screws at the bottom of the BeoMaster 5. The top cover may need a bit of a shake to slide forward and off.
One of mine opened
Remove motherboard
This frees up space for the Raspberry Pi and improves airflow, and is suitable if you want to mount the Pi inside the BeoMaster 5 case for a nice and tidy solution. Even if you don't, it's satisfying to remove an old x86 motherboard and feel like you're doing stuff.
- Unscrew the DVI fasteners at the back (2 for daughterboard, 2 for motherboard)
- Unscrew the daughterboard to access the motherboard
- Disconnect all cables from the motherboard (a VIA EPIA EX x86 board that ran Windows)
- Unscrew and remove the motherboard
- Mount the daughterboard back
The hard drive (512GB or 1TB SATA) can simply be removed, or if you want to access the music stored on it, connect it to the Raspberry Pi with a SATA to USB adapter (~$15 USD).
Liberation day
Fix the power supply
The BeoMaster 5 power supply is routed through the daughterboard (which is actually a modified Beolink PC2 Office). Power is cut off after a few minutes if the original computer isn't running.
On the power supply connector (the cable coming from the PSU to the daughterboard), put a jumper from pin 13 to pin 14, then secure it. This will trick the power supply to always be ready to supply your BeoSound 5c with power.
Power connector - jumper pins 13 and 14
Wire up the daughterboard
Cut open a USB-A cable and connect to the USB header on the daughterboard. You can either connect directly to the header pins, or pull out the connectors and attach cables that way (easier if your cables don't fit the header - normal USB cables tend to be too soft).
This USB connection gives you access to the Bang & Olufsen IR receiver built into the BeoSound 5. B&O remotes use a special 455 kHz carrier frequency, and while third-party receivers like the TSOP 7000 exist, they're increasingly difficult to find and often out of spec. The built-in IR eye is about as good as it gets for receiving B&O IR signals. This connection also enables the MasterLink port on the back of the BeoMaster 5.
Wire colors: outer is daughterboard, inner is USB-A cable. Some BM5s have a grey daughterboard cable instead of blue
I'm an engineer and this is one of my wirings
(Optional) Add support for PowerLink speakers
To get audio out from PowerLink (or S/PDIF or line out), you need to connect audio from the Raspberry Pi to the daughterboard. You can use a Pi HAT with digital audio, such as the InnoMaker Digi One (~$40) or a HiFiBerry — the InnoMaker says it doesn't support the Raspberry Pi 5, but it works fine in this setup — or alternatively a USB to coaxial S/PDIF adapter. The software supports both and will auto-detect your setup.
Next, build a cable between the digital output from the HAT or USB adapter and the S/PDIF input on the daughterboard. The easiest approach is to reuse the existing cable between the old motherboard and the daughterboard that connects to S/PDIF — cut it and attach a single RCA connector. Polarity shouldn't matter for digital audio over coax, but I connected the outer ring to black and the inner pin to red.
You only need this if you want to use the local player and route audio to a local port (PowerLink, S/PDIF, or line out). If you use Sonos or Bluesound as your player, skip this step.
There is also a hybrid option: if you're not using Sonos today but want its convenience while still getting local audio out, you can use a standalone Sonos device with digital out — such as a Sonos Port, Sonos Connect, or Sonos ZP90 (available on eBay for ~$25). Connect its digital out to the daughterboard using the cable described above, then configure the software with player = Sonos (with the device's IP) and VolumeAdapter = PowerLink.
Test
Connect to mains - the LED on the back of the daughterboard (next to the S-VHS style cable to the screen) should light up.
Connect USB to a computer you don't care about (in case something is wrong). The LED on top of the daughterboard (circled in the example) should light up to confirm USB is connected properly.
Connect the DVI output from the BeoSound 5 screen to the Raspberry Pi using a DVI to micro-HDMI adapter.
This LED lights up if you connected it correctly
Finalize
Once validated, connect USB to the Raspberry Pi and connect the BeoSound 5 screen.
You can also put the Raspberry Pi inside the BM5 with a few external connectors and lead them out through the old holes in the back. In my setup, the Pi sits inside with a female USB (for the BeoSound 5 connection), Ethernet (with a female-to-female adapter), and micro HDMI to female HDMI. This particular unit has the Pi powered directly by the BeoMaster 5 power supply.
Back panel connectors
Software installation
Flash Raspberry Pi OS
Use Raspberry Pi Imager to flash Raspberry Pi OS Lite (64-bit) to an SD card. Enable SSH and set hostname to something you like, e.g., beosound5c.
Clone the repository
SSH into your Pi and clone the project repository. If git is not installed, run sudo apt install git first.
git clone https://github.com/mkirsten/beosound5c ~/beosound5c
cd ~/beosound5c
Run the installer
The installer takes care of everything: dependencies, USB permissions, HDMI configuration, service setup, and walks you through connecting your integrations. It will prompt you for your Home Assistant URL, Spotify credentials, and help you pair your BeoRemote One Bluetooth remote if you have one. All Bang & Olufsen IR remotes work out of the box through the original hardware. Got a BeoTime lying around with no use? Bring it out!
sudo ./install.sh
To reconfigure individual components later, run e.g. sudo ./install.sh configure player, configure audio, configure bluetooth, configure menu, etc.
Services installed:
beo-ui # Chromium kiosk for the interface
beo-http # Local web server (port 8000)
beo-router # Core event routing
beo-player-sonos # Sonos player (auto-detected)
beo-player-bluesound # Bluesound/BluOS player (auto-detected)
beo-player-local # Local player for PowerLink/S/PDIF/HDMI
beo-librespot # Spotify Connect via go-librespot
beo-source-spotify # Spotify playlists and playback
beo-source-tidal # TIDAL playlists and playback
beo-source-apple-music # Apple Music playlists and playback
beo-source-plex # Plex music library and playback
beo-source-cd # CD playback from BM5 drive
beo-source-usb # USB file playback
beo-source-news # Guardian news headlines
beo-input # USB input from wheel, buttons, laser
beo-masterlink # IR remote and MasterLink via USB
beo-bluetooth # BeoRemote One Bluetooth
Example config (/etc/beosound5c/config.json):
{
"device": "Living Room",
"player": { "type": "sonos", "ip": "192.168.1.100" },
"volume": { "type": "sonos", "host": "192.168.1.100", "max": 70 },
"home_assistant": {
"url": "http://homeassistant.local:8123",
"webhook_url": "http://homeassistant.local:8123/api/webhook/beosound5c"
},
"transport": { "mode": "mqtt", "mqtt_broker": "homeassistant.local" },
"spotify": { "client_id": "" },
"bluetooth": { "remote_mac": "00:1A:2B:3C:4D:5E" },
"cd": { "device": "/dev/sr0" },
"showing": { "entity_id": "media_player.apple_tv" }
}
Secrets (/etc/beosound5c/secrets.env):
HA_TOKEN=your_home_assistant_token
Optional: Configure Home Assistant
The BeoSound 5c integrates with Home Assistant - receiving button presses from your remotes and displaying dashboards when triggered. This isn't required to use the BeoSound 5c, but it is what really makes it shine beyond just showing Sonos artwork. If you don't have Home Assistant already set up, you can install it on the Rpi. Running the BeoSound 5c software on HA OS is most likely possible, but untested.
Receive button events via webhook or MQTT
Button presses from your B&O remote are sent to Home Assistant as webhook events, or via MQTT for even lower latency. Use them to control lights, trigger scenes, or automate anything.
# automation.yaml
- alias: "BeoSound 5c - Next Track"
trigger:
- platform: webhook
webhook_id: beosound5c
condition:
- "{{ trigger.json.action == 'right' }}"
action:
- service: media_player.media_next_track
target:
entity_id: media_player.living_room
Display a dashboard
Show dashboards directly from Home Assistant - your cameras, who's at home, energy consumption, or whatever you want. Add this to your HA config to allow embedding:
# configuration.yaml
http:
cors_allowed_origins:
- "http://beosound5c.local:8000"
use_x_frame_options: false
Trigger overlays from Home Assistant
When someone rings the doorbell, wake the BeoSound 5 and show the camera. Maybe let the buttons on the device open the door, open your gate, or send your visitors a message.
# automation.yaml
- alias: "Doorbell on BeoSound 5"
trigger:
- platform: state
entity_id: binary_sensor.doorbell
to: "on"
action:
- service: rest_command.bs5c_show_camera
data:
title: "Front Door"
camera_entity: "camera.doorbell"
Try it!
The installer reboots automatically when done. After reboot, you should have:
- Now Playing with Sonos album artwork and playback controls
- Music section with your Spotify, TIDAL, Apple Music, or Plex library browsable via the arc interface
- IR remote support - all B&O IR remotes (Beo4, BeoRemote One, Beolink 1000, etc.) working through the original hardware
- Bluetooth remote - BeoRemote One paired and connected (if configured)
- News — headlines from The Guardian, browsable in the arc like everything else
- Wheel & buttons - the original BeoSound 5 navigation working as intended
If something doesn't work, check the service logs with journalctl -u beo-*.
Things I'd like to explore
These are features I've thought about but haven't had time to implement properly. If any interest you and you have ideas or want to contribute, I'd love to hear from you.
Support for BeoSound Essence Remote in Bluetooth Mode
I've always loved the Essence remote and have a few at home. I once built an Arduino hack with a TSOP7000 IR receiver, but the accuracy was never as good as native B&O IR eyes, and network traffic would cause stuttering. Then I spent weeks getting Bluetooth working through BlueZ - it worked beautifully, until it didn't. Now I just use them with IR and hope to eventually figure out reliable Bluetooth support. Maybe this will be a separate Bluetooth → Ethernet/WiFi bridge with PoE just sending webhooks. TBD.
Support for BeoLab 5 Control Done
Wireless control of the BeoLab 5s using some custom hardware. I guess this is a niche of a niche of a niche. Anyway, my personal favourite speakers, running as they should — with their internal DAC.
Support for Beo6 Two-Way Remote Experimental
Full two-way communication with the classic Beo6 remote. The remote sends commands and receives status back — showing now playing info, volume, and active source on its screen. Required reverse engineering the two-way protocol, which was never documented for third-party use. Niche of a niche, but technically satisfying.
Support for Full MasterLink Compatibility
The BeoSound 5c could show up as an entity in Home Assistant that supports sending and receiving MasterLink commands. There are already integrations that support MasterLink gateways (e.g., MLGW), so it could be interesting to explore for those who use it. This would allow the BeoSound 5c to integrate with existing B&O multi-room setups. Reading all MasterLink messages should work out of the box, but sending commands will need a bit more work.
Support for BeoMaster 5 Power Supply Experimental
It should be possible to power the Raspberry Pi directly from the BeoMaster 5 power supply instead of using a separate USB-C PSU. However, I've experienced intermittent failures with this approach - probably due to voltage fluctuations from varying power consumption. The Raspberry Pi is quite picky about its power supply. Would be nice to figure out a stable solution.
Improved BeoRemote One Bluetooth Reliability Done
Complete rewrite of the Bluetooth driver with true immediate response and optimized latency. Rock solid.
Improved Sonos Volume Control Done
The BeoSound 5c now speaks directly to Sonos for volume control, with cached volume state and heuristics to prevent runaway volume from queued commands. Low latency, works with grouped speakers.
Support for TIDAL, Apple Music, and Plex Done
TIDAL, Apple Music, and Plex are now supported alongside Spotify. Playlists and libraries are browsable through the arc interface just like before. Many that wanted to try out the BS5c were using TIDAL and Apple Music instead of Spotify.
Support for BeoMaster 5 Built-in SSD (or HD) Done
Connect your existing hard drive or SSD to the Raspberry Pi with a SATA to USB adapter and browse your music collection through the arc interface, just like the original.
Join the project
This is a hobby project, but contributions are welcome. Whether you want to fix bugs, add features, or just share your own BeoSound 5 setup, feel free to open an issue or PR. Read the backstory of how this project came to be.
View Repository on GitHubv0.4 · February 2026