Logitech Media Server

Sure, multiroom sound systems are a great addition to your home. The ability to play the same music or podcast in every room is a great feature. Take a look at the big names, ebay and thrift stores are littered with the ghosts of unsupported first gen systems from the big players. They are expensive investments and often fall foul of being abandoned by the manufacturer after they are no longer able to make any money on them.

Enter Logitech Media Server and options for playing the streams in software or hardware (squeezebox) Its been around forever, has a ton of open source community support. Logitech have discontinued there cloud based service, however this can still be used to stream local music, tunein, bandcamp and more.

Once you have downloaded and installed LMS from the link above, confirm the necessary ports have been allowed through your server firewall if required.

TCP 3483 squeezebox stream
TCP 9000 Server web interface
TCP 9090 CLI e.g Squeezer

Open a web browser window and enter the address of your LMS e.g http://10.0.0.2:9000

(If using windows you can find this in the information tab of LMS)

You should see a page similar to the following in your browser:

Main parts of the interface

Player: This is the output device that will actually play the audio. It is a drop down list and if nothing is present, you dont have any audio players connected and won’t be able to play anything.

Volume: The volume level of the currently selected player.

Transport: The Play, Pause, Next Track, Prev Track, Loop, Etc… Transport controls of the currently selected player

Source: The source audio that you wish to play, can be local MP3, Internet radio or other souces depending on plugins installed

Settings: (bottom right) Allows you to add and remove plugins, scan for local music and various other house keeping tasks.

Squeezebox players

You will need a player to output the audio stream from the Logitech Music Server. I have listed a few we have had direct experience with, there are many others.

A dedicated squeezebox player from somewhere like ebay or facebook marketplace, search for squeezebox

Squeezelite-X available from the microsoft store.

PiCorePlayer for the raspberry pi , Tested with Pi Zero and Model 3 , both work fine.

Squeezelite-esp32 for the esp32. We build these players and have a few for sale.

SB Player by angry goat for Android and chromebooks in the playstore (small one time fee)

Controllers

You will need some way of controlling the playback, volume and audio source of a player. This can be achived in a multiple of ways. A couple are mentioned here.

via LMS webpage on port 9000 (in our example that would be http://10.0.0.2:9000)

Android google play search for app named squeezer.

Squeezer Configuration page on an Android device

Proxmox notes

This section contains notes for installing LMS on proxmox, may be outdated or incorrect

Create a new LXC container on Proxmox, left all as defaults apart from unsetting the ‘unprivileged container’ checkbox.

Get things up to date

apt update
apt upgrade

Install required dependencies

apt install perl libssl-dev

Download the package

Downloaded latest stable Squeezebox server image from https://lms-community.github.io/lms-server-repository/

or

wget http://downloads.slimdevices.com/LogitechMediaServer_v8.5.0/logitechmediaserver_8.5.0_amd64.deb

Install the package

dpkg -i logitechmediaserver_8.5.0_amd64.deb

(at this point ran into error as I’d missed the perl installation, so installed perl and ran apt --fix-broken install as prompted, the installation was then complete)

make sure to ceate directory for playlists and make writeable for example

mkdir /var/lib/squeezeboxserver/playlists

cd /var/lib/squeezeboxserver/playlists

chown squeezeboxserver playlists

chgrp nogroup playlists

update settings in logitech media server

Control From Home Assistant

    #--------------------------------------------------------------------
    #  Start playing playlist named classical on squeezebox with 
    #  IP address 10.0.0.39
    #-------------------------------------------------------------------- 
   
    - id: 'TurnOnRadioStation1'
      alias: TurnOnRadioStation_1
      trigger:
      
      - platform: event
        event_type: "MY_CUSTOM_EVENT"
 
      condition: []
      action:

      - service: rest_command.lms_command
        data:
           p0: "playlist"
           p1: "play"
           p2: "classical"
           player: "10.0.0.39"