Let’s be real: nothing hits like dropping the needle on a record. As a Dutch hip-hop fan, I’ve tracked down some serious vinyl: Kevin, Mula B, and other local legends. But after switching to a soundbar setup for my TV, my trusty stereo rig just sat there, unutilized.

That changed when I discovered IKEA’s Symfonisk speakers—Sonos-powered gear disguised as home decor. Clean design, solid sound. But I still missed that uninterrupted, full-album vinyl vibe.

So I hacked together a solution: stream my turntable live over Wi-Fi to any Sonos speaker or even groups using a Raspberry Pi Zero 2W, a Behringer UFO202 Soundcard, and two key tools—Icecast2 and DarkIce. Now, when I spin a record, it plays in every room. No skipping, no shuffling, just that musical goodness, end to end.

  sequenceDiagram
  participant Turntable
  participant UFO202 as Behringer UFO202
  participant Pi as Raspberry Pi Zero 2W
  participant Icecast as Icecast2 Server
  participant Sonos as Sonos Speaker

  Turntable->>UFO202: Analog audio (RCA)
  UFO202->>Pi: Digital audio (USB)
  Pi->>Icecast: Encoded audio stream (DarkIce)
  Sonos->>Icecast: HTTP request for stream
  Icecast-->>Sonos: Live audio stream (MP3)

What You’ll Need#

  • Turntable (RCA output)

  • Behringer UFO202 USB phono preamp (switch to Phono)

  • Raspberry Pi Zero 2W (plus micro-USB OTG cable and power)

  • MicroSD card (8 GB or larger with Raspberry Pi OS installed)

  • Software packages:

    • icecast2 – streaming server
    • darkice – live audio encoder
  • Preinstalled SSH user and WLAN/Network config

    🔧 Tip: Give your Pi a static IP on your network. It makes everything easier when configuring Sonos or TuneIn later.


Step 1: Connect the Hardware#

  1. Turntable → UFO202 Plug your RCA cables into the UFO202, and make sure the preamp switch is set to Phono.

  2. UFO202 → Raspberry Pi Use a USB OTG adapter to connect the UFO202 to the Pi’s USB data port. Power the Pi via its micro-USB power port.

  3. Check That It’s Detected SSH into your Pi and run:

    arecord -l

    You should see something like card 1: USB-Audio.


Step 2: Install Icecast2#

Update your system and install the streaming server:

sudo apt update && sudo apt upgrade -y
sudo apt install icecast2 -y

During install, you’ll be prompted to set an admin password and a source password—you’ll need the latter for DarkIce.

Configure Icecast2#

Edit the main config file:

sudo nano /etc/icecast2/icecast.xml

Change or verify the following:

  • Set the (static) IP of your raspberry pi:

    <hostname>YOUR_PI_IP</hostname>
  • Make sure the <port> is 8000.

  • Keep note of the <source-password> and <admin-password> values.

  • You can add or edit the <mount> section later if you want custom metadata.

Enable and start Icecast:

sudo systemctl enable icecast2
sudo systemctl start icecast2

Now visit http://<your_pi_ip>:8000 in your browser to verify it’s running.


Step 3: Install & Configure DarkIce#

Install DarkIce:

sudo apt install darkice -y

Create the Config File#

Edit (or create) /etc/darkice.cfg:

[general]
duration = 0 # duration of encoding, in seconds.
bufferSecs = 5 # size of internal slip buffer, in seconds
reconnect = yes # reconnect to the server(s) if disconnected
realtime = yes # run the encoder with POSIX realtime priority
rtprio = 3 # scheduling priority for the realtime threads

[input]
device = default
sampleRate = 44100 # sample rate in Hz. try 11025, 22050 or 44100
bitsPerSample = 16 # bits per sample. try 16
channel = 2     # channels. 1 = mono, 2 = stereo

[icecast2-0]
bitrateMode = cbr # average bit rate
format = mp3 # format of the stream
bitrate = 320 # bitrate of the stream sent to the server
server = <your_pi_ip> # host name of the server
port = 8000 # port of the IceCast2 server, usually 8000
password = <your_source_password> # source password to the IceCast2 server
mountPoint = stream # mount point of this stream on the IceCast2 server
name = stream # name of the stream
description = This is a stream

Replace YOUR_SOURCE_PASSWORD with the password you set during Icecast2 setup.


Make DarkIce Run at Boot#

Create a new systemd service file:

sudo nano /etc/systemd/system/darkice.service

Paste the following:

[Unit]
Description=DarkIce Live Streamer
After=network.target icecast2.service

[Service]
ExecStart=/usr/bin/darkice -c /etc/darkice.cfg
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

Enable and start it:

sudo systemctl daemon-reload
sudo systemctl enable darkice
sudo systemctl start darkice

Step 4: Add Your Vinyl Stream to Sonos#

  1. Add the stream url http://<your_pi_ip>:8000/stream to the Tunein Radio App
  2. Open the Sonos app
  3. Play your radio station using TuneIn

You can now spin records in any room with a Sonos speaker—including Symfonisk units.


The Symfonisk Obsession Is Real#

I fell hard for IKEA’s Symfonisk line—clean, functional, and surprisingly rich sound. When early 2025 rumors hit that they might get discontinued, I grabbed extras like they were vinyl grails. No shame.

Even if they vanish, this Pi-powered setup means I’m streaming my own collection, on my terms—from needle drop to speaker. No overly expensive hardware, subscriptions, no cloud, no compromises.


Wrap-Up#

Spin your record, power up the Pi, and let the music flow.

There’s a certain joy in hearing a vinyl album play start to finish—no skips, no shuffle, just full analog warmth. This project brought that back for me, but made it wireless, effortless, and whole-home capable.

Build it. Spin it. And keep collecting.