DIY project to “open-source-ify” an IKEA SYMFONISK WiFi bookshelf speaker (black, gen 2), replacing internal electronics with a Raspberry Pi while retaining the original power supply, speakers, and buttons.

Overview

AspectDetails
SpeakerIKEA SYMFONISK (Gen 2, Black)
ComputeRaspberry Pi Zero 2 WH
DACIQaudIO DigiAMP+ SC0370
OSpiCorePlayer
ControlLyrion Music Server (LMS)
IntegrationHome Assistant

Hardware Reuse

Successfully repurposed from original speaker:

  • Original power supply
  • Original speakers (drivers)
  • Four buttons (play/pause, volume up/down, preset)
  • Four status LEDs (green, white, amber, red)

Hardware Setup

┌─────────────────────────────────────────────────────────────────┐
│                  IKEA SYMFONISK Shell                           │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │              Original Power Supply                        │  │
│  │                    (Retained)                             │  │
│  └──────────────────────────┬───────────────────────────────┘  │
│                             │                                   │
│  ┌──────────────────────────▼───────────────────────────────┐  │
│  │                  IQaudIO DigiAMP+                         │  │
│  │                     SC0370                                │  │
│  └──────────────────────────┬───────────────────────────────┘  │
│                             │                                   │
│  ┌──────────────────────────▼───────────────────────────────┐  │
│  │              Raspberry Pi Zero 2 WH                       │  │
│  │              (Pre-soldered pinheader)                     │  │
│  │                                                           │  │
│  │    GPIO ─────► Buttons (4x)                               │  │
│  │    GPIO ─────► LEDs (4x)                                  │  │
│  └──────────────────────────────────────────────────────────┘  │
│                             │                                   │
│  ┌──────────────────────────▼───────────────────────────────┐  │
│  │              Original Speakers                            │  │
│  │                  (Retained)                               │  │
│  └──────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

GPIO Mapping

Mapping the original buttons and LEDs required step-by-step multimeter investigation:

ComponentGPIO PinFunction
Green LEDGPIO XXHealth OK
White LEDGPIO XXPlaying
Amber LEDGPIO XXWarning
Red LEDGPIO XXError
Button 1GPIO XXPlay/Pause
Button 2GPIO XXVolume Up
Button 3GPIO XXVolume Down
Button 4GPIO XXPreset

(Full pinout documentation available)

LED Signaling Scripts

Developed custom scripts to provide meaningful status indicators:

Health Check Script

On boot, performs system checks and signals via LED:

  1. ✅ Check disk space on root filesystem
  2. ✅ Check CPU temperature
  3. ✅ Check Wi-Fi connectivity
  4. ✅ Check internet connectivity

Result: 3x green blink = all healthchecks passed

#!/bin/bash
# Simplified healthcheck logic

check_disk() {
    usage=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
    [ $usage -lt 90 ]
}

check_temp() {
    temp=$(cat /sys/class/thermal/thermal_zone0/temp)
    [ $temp -lt 70000 ]  # 70°C
}

check_wifi() {
    iwconfig wlan0 | grep -q "ESSID"
}

check_internet() {
    ping -c 1 8.8.8.8 > /dev/null 2>&1
}

# Run checks and blink accordingly
if check_disk && check_temp && check_wifi && check_internet; then
    blink_green 3
else
    blink_red 3
fi

Software Stack

ComponentPurpose
piCorePlayerLightweight audio OS
Lyrion Music ServerMusic library and streaming
SqueezeliteAudio player client
Home AssistantAutomation and control

Home Assistant Integration

The speaker integrates with Home Assistant for:

  • Automated music playback based on presence
  • Radio station presets
  • Volume control via automations
  • TTS announcements

Challenges Overcome

  • GPIO Mapping: Required multimeter probing to identify button and LED connections
  • Scripting: Custom scripts for health checks and LED signaling
  • Power Management: Adapting original PSU to Pi requirements
  • Audio Quality: Tuning DigiAMP+ settings for optimal sound

Results

A fully functional, open-source smart speaker that:

  • Plays music from local library or streaming services
  • Integrates with Home Assistant automations
  • Provides visual status via original LEDs
  • Uses original buttons for control
  • Maintains original speaker quality

Skills Demonstrated

  • Raspberry Pi hardware integration
  • GPIO programming
  • Shell scripting
  • Electronics and reverse engineering
  • piCorePlayer/LMS configuration
  • Home Assistant integration

Inspired by similar Sonos Play:1 conversion projects