Creating a Raspberry Pi Squeezebox server

Create your own Squeezebox server (or Logitech Media Server) with a Raspberry Pi and a HDD in five steps.

If you, like me, own one or more Squeezebox players you can either choose between the service, that streams music from the internet, or set up the Squeezebox server on your own network. The Squeezebox server software (aka Logitech Media Software) being free and open source software guarantees that you’ll take control of your Squeezebox players and the music that you’re streaming.

There many hardware options for the Squeezebox server software (or Logitech Media Server) but I decided to use the Raspberry Pi 2 that I had lying around because of it’s small footprint and massive support for the Pi. Within a couple of hours I had the Logitech Squeezebox Server up an running with my music playing.

Below I’ll show how to set up the Logitech Squeezebox Server on a Raspberry Pi in five steps. I got some important steps from the Variax Firmation website but I tested everything succesfully.

Raspberry Pi 2 with a USB-harddrive connected to my network with a (yellow) ethernet cable.
Raspberry Pi 2 with a USB-harddrive connected to my network with a (yellow) ethernet cable.

Step 1: Ripping CD’s and writing them on an HDD (choosing an audio format)

Before setting up a server rip the CD’s and write them to a HDD. For this project I used a small usb-harddrive that was also lying around. I formatted the HDD as FAT32. Next I collected all my music CD’s and ripped them. As ripping software I used the Asunder software on my Linux system but I guess that the’re good alternatives (fre:ac appears to be an free and open source alternative that is also available for OSX and Windows). As audio format I choose mp3. If I buy a larger drive I’ll probably move to flac.

Step 2: Installing Raspbian Lite

Next I installed Raspbian Lite (currently Raspbian Buster Lite) on the Raspberry Pi 2 by first downloading the image and writing the image to the micro SD card using these instructions for OSX (or these instructions for Windows and Linux).  I chose the lite version of Raspbian to make the server as lightweight as possible. I had no problems booting the Raspberry Pi and connecting it to my network using ethernet. To avoid potential problems connect the Pi to a monitor with an HDMI cable and make sure that it boots properly.

Step 3: Mount the HDD on the Raspberry Pi

Now with Raspbian Lite installed I mounted the HDD that we prepared in step 1. For this first connect the HDD to the Raspberry Pi (in my case I connected the HDD through a USB port of the Raspberry Pi), login remotely and retrieve the name of the drive. To login remotely we need another computer (Windows, Linux or OSX). Open a terminal (or Putty in case of Windows) and type:

sudo ssh pi@Raspberry_Pi_ip_address (in my case

The default password is raspberry. Then type:

sudo fdisk -l 

Then look for the HDD that is just connected. This was /dev/sda1 in my case (but this may differ in yours). To make the files on the HDD accesible to the Raspberry Pi we need mount the drive. But before that we need to make a mounting point (in this example at ~/media/usb-drive).

sudo mkdir /media/usb-drive 

and mount

 sudo mount /dev/sda1 /media/usb-drive

You should hear some HDD activity. Now type:

cd /media/usb-drive ls -l

and a list of your music should be visible.
To unmount the HDD do:

sudo umount /media/usb-drive
 The list of folders with albums that I ripped. In this stage I only ripped a few albums to test the system.
The list of folders with albums that I ripped. In this stage I only ripped a few albums to test the system (click to enlarge).

Step 4: Installing Logitech Media Center on the Raspberry Pi

First we need to install a library to play audio files. Since you want mp3 only do:

sudo apt-get install -y libsox-fmt-all

This installes SoX, a command line utility that, among other things, plays various types of audio files. If you want to add flac support you’ll probably need to do this

sudo apt-get install -y libsox-fmt-all libflac-dev

Now with the audio libraries in place the Logitech Media Software can be downloaded. We want the latest version which is 7.9.2.

wget -O logitechmediaserver_all.deb $(wget -q -O - "")

Now install the server software with:

sudo dpkg -i logitechmediaserver_all.deb

With all the software installed we’re ready to go.

Step 5: Working with Logitech Media Center

To enter the web interface of the Logitech Media Center on the Pi we need a computer and a browser. In the browser url we type:

<your_Raspberry_Pi_ip_address:9000> (in my case

The Logitech Media Center is started for the first time and a script is started to set it up. Important is that the mounting point of the HDD (in my case /media/usb-drive) is entered. This way the Media Center is able to retrieve all the music files. This is done in the web interface by entering the path of the mounting point under Media Settings under Media Folders.

The Media Settings page of the web interface. Enter the path of the mounting point under Media Folders.
The Media Settings page of the web interface. Enter the path of the mounting point under Media Folders (click to enlarge).

The Logitech Media Server is now ready and every time the Raspberry Pi boots the Logitech Media Server is automatically started however the HDD is not automatically mounted so we need to change that. This is done by editing (with nano) the fstab system configuration file that can be found at /etc/fstab

sudo nano fstab

and add the following line

/dev/sda1 /media/usb-drive vfat& defaults 0

Save the file and exit nano. Reboot the Raspberry Pi. Now the installation is complete. The music can be played from the web interface (see above), with the remote controls that come with the Squeezebox devices or with a free app for Android. The Squeezebox Radio also has controls on the device to play the music. So, plenty of options.

Webinterface of the Logitech Media Server (click to enlarge).

Whats next

In a future blog entry I’ll explain how to maintain the Logitech Media Server e.g how to add music to the server remotely.

Adding radio streams to the cooler with a Raspberry Pi

Using a Raspberry Pi and the program MPD to enhance my audio cooler


In my previous blog post I finished my audio cooler. It’s a small cooler with a tiny audio system that nevertheless sounds good. The only way to control the audio is through a wired connection. It would be a nice addition to have some kind of remote control either by WiFi or Bluetooth. While testing the cooler I’ve got the idea to connect a Raspberry Pi A+, that was still unused, to the cooler and stream audio over WiFi to the Pi.  This could be useful for a garden party or BBQ where WiFi is available and I don’t want to attach the smartphone to the cooler. In this blog post I’ll share my experience with installation and operating the software needed for this project on the Pi.

Raspberry Pi A+ (in it’s Pimoroni Pibow case) connected with the headphone jack to the cooler. The Pi has a small Edimax Wifi adapter.

Installing music software on the Raspberry Pi

Since I run the Raspberry Pi headless I use SSH login to the Pi. SSH is available for most operating systems with the notable exception of Windows. I already had Raspbian installed on the Pi so first I updated the OS. Continue reading “Adding radio streams to the cooler with a Raspberry Pi”

Plywood housing for the homemade surveillance camera

In the last two weeks I have built a Raspberry Pi surveillance camera. For the time being I used a crude housing made out of MDF. This was ok for testing purposes but now I wanted something more permanent. Something that I could attach to my window frame and that is able to pan and tilt to get the best angle at my backyard. I could buy of camera housing such as the ModMyPi Nwazet Pi Camera or buy a dummy camera and build the surveillance camera in it. However building it myself would be more fun. I decided on a housing made out of plywood since it is cheap, strong and durable.

The Raspberry Pi surveillance camera keeping an eye on my backyard.

The housing is rectangular box that nevertheless looks like a camera due to the round placeholder of the camera. I used 1/2 inch thick plywood for the body of the housing and 1/4 inch thick plywood for the lid and bottom plate. The camera module is placed between two pieces of plywood, that keep it in place. The two pieces are tight together with two machine screws. I used spacers to prevent the module from being squeezed when tightening the machine screws.

Housing of the surveillance camera
The front of the housing lifted showing the Raspbery Pi B mounted on the 1/4 inch plywood bottom.  
The camera module is easily removed from the front.

I left an opening in the camera housing to have easy access to the micro-USB connector and the SD-card.
the Raspberry Pi camera module between two pieces of 1/4 inch plywood kept together with two machine screws.

The camera housing is connected to a plywood frame that enables me to pan and tilt it. The frame is also made out of 1/2 inch thick plywood. The three pieces are glued together and two 1/4 inch machine screws (one on the top of the housing and one on the bottom) connect the frame with the housing. Two wing nuts are used to tighten the camera enabling the camera to pan. The frame is connected to the wall with cylindrical piece of wood (from a broom stick). Two pieces of plywood at the end of this pieces of wood enable the camera to tilt (see image below).

The finished surveillance camera. The mount will be fitted to our window frame. The camera can be panned and tilted to get the best view of my backyard.

With the housing and mount complete my Raspberry Pi surveillance camera is finished. Motion has been very stable on the Pi. I haven’t had a crash or malfunction in three weeks. And thanks to crontab the camera doesn’t need a lot of maintenance. Is there something left to be desired? Yes. The camera is not usable at night (I need the NoIr camera and IR lights for that) and I have false positives e.g. when it rains (the raindrops on the window are causing this) other than that I’m pleased with the result.

Raspberry Pi security camera, first experience


Last week I wrote about the Raspberry Pi, the camera module and Motion acting as a surveillance camera. I’ve been testing my Raspberry Pi surveillance camera for a week now and the results are satisfying although there are also some problems. I think much of the succes of the camera comes down to finding the best settings of the /etc/motion.conf file of Motion for a given scenario. The motion.conf file enables you to setup the Motion program. Everything from camera settings to motion detection can be changed in this file.

Image from a motion video. If someone (in this case my son) is entering our backyard it is perfectly recorded by Motion.


I want my surveillance camera to record anyone entering my backyard but this sounds easier than it is. If the threshold parameter in motion.conf is too low all kinds of events are recorded that are completely irrelevant. E.g. on a rainy day raindrops falling on the window are recorded. With higher threshold values I might miss something relevant. After experimenting with different values of the threshold I found that a value of 1500 works best in my case.

Lens flare

On a sunny day bright sunlight can fall onto the camera lens causing lens flare. This reduced contrast and color saturation (see image below). More importantly the Motion program detect changes in lens flare as motion and records them. I think problem can easily be solved with some kind of lens hood.

Lens flare caused by sunlight reducing contrast and color saturation.


A whole different problem is motion detection at night. My camera, the regular Raspberry Pi camera module, is just not up to this task. For detection at night I’ll need the NoIR Pi camera. This camera has no infrared filter. As a consequence colours at daylight look odd but you’re able to record at night, but only with infrared light illuminating the subjects. Several add-on boards for the NoIR Pi camera are on the market that do just that. These boards fit right over the camera module.

The regular Raspberry Pi camera module is useless at night.

Proper file permissions

I created a directory /home/pi/Camera on the Raspberry Pi. I want all my video files to be stored in this place however before Motion is able to do this I had to change the permissions. Motion (the Program) creates it’s own user motion so this user needs proper permission in the home/pi/Camera folder (that is created by the user pi). To do this I first changed the group ownership of the folder:

chgrp motion /home/pi/Camera

And next give the group the proper permission:

chmod g+rwx /home/pi/Camera 

Scheduled tasks

The number of motion video’s that are stored on the Pi increase rapidly over the days. My backyard is quiet but not that quiet (not to mention the false positive that I described above). Since the Raspberry Pi stores the files on an SD card I will easily run out of storage space. So I need a method to remove the files automatically e.g after five days. Cron is perfect for this since it let me schedule commands or scripts periodically. I wrote a shell script that removes avi files created by Motion older than five days and added this to my crontab file to be executed daily. The key command in this script is:

find /home/pi/Camera -mtime +5 -name “*.avi” -exec rm {} ;

Copying files to a PC

Whenever I want to check the motion files (e.g after one day) I copy them to my iMac using scp from the OSX terminal and then created a playlist in VLC by dragging all the files into it. The harvest of that one day is then displayed.

scp pi@*.avi to/destination/folder

What’s next

Next I’ll test the surveillance camera further until I’m satisfied with the settings and build a proper housing for the camera. Possibly I will switch from the regular camera module to the NoIR camera.

Homemade security camera with a Raspberry Pi

One week ago we’ve had a burglar in our house. Of course I immediately started improving the security of our home. After improving the usual stuff I felt the need for some kind of surveillance camera. This camera could provide me a good view of the backyard which is a very quiet place and therefore preferred by burglars. Because I like to make things myself I thought it was a good idea to use a Raspberry Pi and it’s camera module. I used them in the past for timelapse video’s of scenery but I hadn’t used it much lately.

The goal that I had set was a camera that detects and records motion and that I could access through our local network preferably a browser. I also wanted the camera to give decent images by day and night.


The heart of the system is a Raspberry Pi B with the Raspberry camera module. Furthermore I use an Edimax dongle for my wifi connection and a micro-USB power supply (1A). Initially I use an MDF case that I made to fit the camera and the Pi. It isn’t pretty but it protects both the camera and the Pi. If everything works as planned I probably built it into a dummy camera such as this one or may make a wooden enclosure myself.

Initially I had some problems connecting to the Pi through SSH. I discovered that this was caused by the Edimax dongle (8192cu wifi chip) that apparently goes into sleep mode after a period of inactivity. This was solved with a command line fix that disables power saving (see here on page 17 how to fix this).

Raspberry Pi B and camera module in an MDF enclosure.


On top of Raspbian I installed Motion. Motion is a Linux program that monitors the video signal from camera’s and, very important to me, is able to detect motion. Motion is widely used and there is plenty of good information on it on the internet. A simple tutorial how to install Motion specifically on the Raspberry Pi and get it to work with the Raspberry camera module can be found on here (go to step 7 for software installation). However Motion has far more possibilities and it is worthwhile to explore these once you start using it.

Configuring and testing the system

Motion can support multiple camera’s but I’ll stick to one camera for now. Configuration of Motion for the Raspberry Pi and it’s camera module is done in the /etc/motion.conf file (not in the /etc/motion/motion.conf file). There is a very good YouTube tutorial on configuring Motion for Linux here and here. At this point I made only a few changes to the motion.conf file such as camera width and height, directory where the video is stored on the Pi and some camera specific variables.

The camera works great. The image quality is good and the system appears to be stable. I can open a stream of the surveillance camera in my browser by entering the url of the Raspberry Pi and the selected port (default 8081). My motion files are stored as avi’s on the Raspberry Pi. I can play them with VLC media player on my iMac. Next I’ll experiment with the settings of Motion (e.g. sensitivity of motion detection, resolution of the camera), test in under different circumstances (indoor, outdoor, night and day) and build a proper housing for the surveillance camera.

It doesn’t look pretty but the surveillance camera works great.