the itjerk

my adventures with technology

squeezeslave and the raspberry pi

Ever want to listen to your digital music collection at home while you were at work? Specifically, the idea here is to connect to my Logitech Media Server (aka Slimserver or Squeezebox Server, and LMS for short) that's at home, with my Raspberry Pi (RPi for short) at work. (I'm going to assume that you know the drill about opening ports on computers and routers, your work's tech security policies, and all that jazz). Technically, it's relatively simple – make an ssh connection to the LMS, forward a few ports to the RPi, and then launch the player! Of course, this could all be done using just about any media player on just about any computer, and a web interface – that's the beauty of the LMS. But this is about the RPi, and I'd like to keep this as basic as possible – without even using a gui for playlists.

Squeezeslave is a great little program that emulates a Squeezebox player, providing both a SLIMP3 type interface and the capability to stream music. It's truly turns the RPi into a virtual machine. The program is an already compiled binary for ARM6 (the chip that the Rasberry Pi uses), which saves a lot of work. But be sure to get the "hard float" version for Raspbian Wheezy.

Installation is simple, this taken from Paul Webster's more than informative blog:

tar -xvf squeezeslave-1.2-367-armhf-lnx31.tar.gz
mv squeezeslave-1.2-367 squeezeslave

Before we run Squeezeslave, we have to connect to the LMS server at home. This is done via ssh and port-forwarding. I've configured my home router (and LMS computer) to accept connections on ports 22, 3483, and 9000, the latter two which Squeezeslave uses to connect to the LMS. I've also setup keys (using ssh-keygen) between the LMS and RPi so that a password isn't required to login. Finally, I also know the LMS's WAN and LAN addresses (using DynDNS for the former).

First, we connect to the LMS using the ssh command. The -L switch can be repeated, which is great because we need both ports 3483 and 9000 forwarded for Squeezeslave to work. The -N switch prevents remote commands, since we are just using ssh for port forwarding. Finally, by ending with &, we stay in the local terminal, and can immediately issue our next command. Note that all addresses are for your LMS computer.

ssh -L <3483>:<lan address>:<3483> -L <9000>:<lan address>:<9000> -N <username>@<wan address> &

Running Squeezeslave is simple: all we do is enter the IP of the localhost for the LMS, and give it the -D switch to open its display.

./squeezeslave -D -R

What a cool interface!

Here are the key options for the display:

Now, if I point a browser to my home computer and bring up the LMS web interface, I'll find a player called "Squeezeslave". One performance note, I did need to edit Server Settings in LMS for the Squeezeslave to change Bitrate Limiting to something from "unlimited" to get smooth playback over the internet. That said, sound was excellent, making the Raspberry Pi one inexpensive SqueezeBox player!

Extending this little exercise, both commands could be scripted to run automatically at boot, making this a completely auto-on operation. And because of Squeezeslave's simple interface, I'm sure the RPi could be hooked up to a cool little LCD display instead of a monitor, add a remote…

Isn't computing fun?!

On the web:
Installing Squeezeslave


Comments are closed.

%d bloggers like this: