Back in the early ’90s, some of the rich kids’ parents had what felt like science fiction at the time: the Bang & Olufsen Beolink system. A true multiroom stereo setup - you could play one source in the living room, another in the kitchen, and probably annoy your siblings with both at once.
Fast forward a few decades, and at a random yard sale I stumble across a complete Beolink system: three BeoLab 3500s, a tangle of cables, wall brackets, and a Beosound 4 - all for about 300 USD. (Basically the price of two IKEA floor lamps and a meatball dinner.) Pro tip: old Beo speakers are also surprisingly cheap on eBay.
BeoSound 4 is an audio system with built-in CD player, FM radio, and SD (Secure Digital) card slot. DAB radio is also available as an option, factory fitted. It is possible to record from the radio or CD to the SD card and play back the recording on BeoSound 4, or on another portable or stationary system.
This setup is based on Beo MasterLink, which is essentially a glorified, shielded RJ45 cable. it’s bi-directional, meaning the speakers can politely request whatever source they want (Radio, CD, AUX), and the master unit (in this case the Beosound 4) will happily comply.
BeoLab 3500 is an integrated link-room active loudspeaker comprising a Master Link (ML) connection, an IR receiver and a digital display. BeoLab 3500 also has Master Control Link (MCL) connection and a built-in clock.
The design still looks fantastic, the materials are top-notch, and best of all: it easily passes the notoriously strict WifeApproval™ test.
So when I saw it, I thought: challenge accepted. Time to build myself a modern multiroom stereo system with a 90's vibe.
Place the three BeoLab speakers around the house (Library, Kitchen, and Office).
Stream Spotify on demand. I went with a WiiM Pro plugged into the Beosound via AUX, but honestly, any Spotify-friendly gizmo would do
Create a control interface with the ability to:
- Play CDs on demand.
- Control the volume without remotes.
- Standard stuff like Skipping songs, Play, Pause etc.
- Actually see what’s playing instead of guessing halfway through a song.
Bonus: add a tactile way of selecting music so guests can poke at it too.
The ProjectI ended up with this overall system architecture. In my setup I have done The "per room" 3 times (Kitchen, Library and my office ), but there is no limits to the number of rooms:
I started by creating the software for the M5Stack Dial.
The M5Stack Dial looks great and had the hardware I needed:
- Great color screen for showing current album art
- TouchScreen (for user interaction)
- Rotary encoder (Volume Up/Down)
- RFID Reader (Play 'CDs' )
- ESPNow (sending Volume commands)
I created the "Stereo" by drilling a hole in old piece of wood, attaching a furniture knob and glue it to the wall - this one is from the kitchen:
Then, I created a simple UI able to show the current music playing on Spotify
I wanted to be able to both play CDs and Spotify.
When Sound source is changed a lot of stuff needs to happen:
1) An ESPNow package is sent from the M5Dial to the Nano (I send it 3 times. The Beo system, dosen't care, and I found the ESPNow packages to be surprisingly unreliable )
2) The Nano then sends an IR Command to the Beolab 3500
3) The Beolab 3500 then sends a command over beolink to the Beosound4 that then starts transmitting that audio source to that particular Beolab 3500
If the Beolab is in CD playing mode, Forward, play, pause etc commands needs to travel the same route, while when playing Spotify the commands are instead forwarded to the Spotify backend service.
Volume ControlBy rotating the encoder change volume by sending a volume up/down command using ESPNow to the M5Stack Nano.
Mini CDsAnd finally, the master piece; I found some small CDs on Temu with RFIDs. I printed albumcovers and created a feature, so RFIDs could be matched with Spotify playlists (see image in step 3).
This gives a nice tactile feeling, a bit similar to loading a real CD. You pick the Album you want, hold it over the Dial and the album is played.
Step 2 - M5Stack Nano C6The nano C6 contains a pretty simple program able to accept ESPNow commands and emits a IR command. This component could be any ESPNow capable controller, as long as it as IR.
The IR protocol for Beoproducts are pretty demanding, timingwise. I was not able to find a working open source implementation, so I had to write my own. The only way I was able to make it work was using PWM.
The Spotify Server is also a pretty simple component. It's build in Blazor and runs I Azure as a free WebApplication It allows setting up of playlists:
And authenticating Spotify users:
It also provides a basic API, that's polled by the M5Stack Dial, returning current status and accepting playlists skip track, pause, play and other basic controls.
The server also reduces the data needed to be handled by the fairly limited RAM available in the ESP32 units.
Comments