larsbaunwall / Beolyd5

Modern software for the Beosound 5

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crates.io Version

   ____             _           _ _____                          
  |  _ \           | |         | | ____|                         
  | |_) | ___  ___ | |_   _  __| | |__                           
  |  _ < / _ \/ _ \| | | | |/ _` |___ \                          
  | |_) |  __/ (_) | | |_| | (_| |___) |                         
  |____/ \___|\___/|_|\__, |\__,_|____/                          
                       __/ |                                     
                      |___/                                ┌───────┐
                                                         ┌─┴─────┐ │
  ┌─────────────┐               ┌─────────┐              │ .───. │)│
  │            .┴.              │  Pi 5/  │              │(     )│ │
  │   BS5     ( = )◀──USB+HDMI──│HifiBerry│◀──PowerLink──│ `───' │ │
  │            `┬'              │         │              │BeoLab ├─┘
  └─────────────┘               └─────────┘              └───────┘  

Beolyd5

Tip

Try the new online device simulator just launched. Follow the progress as the UI matures ✨

Back in the day, I absolutely adored the BeoSound 5, which I thought was a very beautifully designed item for the home - alongside being a sound system.

Unfortunately, Bang & Olufsen made a number of unfortunate choices, not preparing the product for future software updates. This has left the Windows XP-based system in the past, unable to provide modern streaming services or the like.

This project aims to bring new life into this device, with modern hardware and an open source platform to drive it.

This will eventually become an alternative product experience for the Beosound 5 controller.

And the project name? Well, "sound" is "lyd" in danish ;-)

This is a very early version of the new UI:

UI demo

Plans

The hardware

Currently, I am exploring how the rotary dial works over USB, trying to reverse engineer the protocol.

Code for the Rotary controller (which is a USB HID device) can be found in src/dotnet and src/rust. Alternatively, a linux kernel module that exports the HID events into "good" ones (joysting with axis, buttons, etc) is available at beosound5-kernel-module.

This work is greatly inspired and informed by @toresby's work on neomaster.

I am also looking into new hardware to replace the old Beomaster5, which I plan to replace with a Raspberry Pi with the Hifiberry DAC2 HD for audio.

Beosound 5 power connection

The pinout for the mini-DIN 4 power connection is (view from port): beo5 power connector. 1:GND, 2:+5V standy, 3: +12V

Please note that mini-HDMI and USB need to be plugged in for the screen to power on. The beosound 5 does not export EDID information, so the screen caracteristics need to be set beforehand. For unknown reasons, it works out of box on RaspberryPis.

The software

I plan to build and extend the HifiberryOS (Beocreate) platform with a custom local UI that can be operated with the rotary dial on the Beosystem 5 control unit.

Hifiberry in itself will bring support for

  • Airplay
  • Analoge input of the DAC+ ADC
  • Bluetooth (not on Raspberry Pi 3B)
  • DLNA
  • Logitech Media Server / Squeezebox
  • MPD for local music
  • Snapcast (experimental)
  • Spotify
  • Roon
  • Web radio stations

I am exploring a .NET route (which is where I am most comfortable) and a Rust-based approach. The UI is probably going to be web-based on top of WebKitGTK.

Currently, Tauri/WRY (Rust-based) looks like good candidates for the UI platform. This will then bridge the BS5 controller with the web UI via a Javascript-bridge.

Update: The application consist of two parts:

  1. a Rust-based HW abstraction that interfaces with the BS5 controller. This library understands the BS5 controller protocol over USB and is also available on crates.io
  2. a Tauri-based application that hosts a VueJS-frontend using a platform-specific renderer (Webkit2GTK on Linux). This application mimicks the original interface found on the Beosund 5.

Contributing

This is a hobby project of mine. I don't know when I will be done or how it will look.

I am not a UI designer, so I could use some help in that department. Likewise, I am still a beginner in the embedded world, so defintately would appreciate a helping hand there as well.

Just start a discussion or create an issue then I'll get back to you.

About

Modern software for the Beosound 5

License:Apache License 2.0


Languages

Language:Vue 42.0%Language:Rust 39.4%Language:TypeScript 15.4%Language:Shell 1.9%Language:HTML 0.7%Language:CSS 0.6%