Preparing your Raspberry Pi¶
Hardware¶
For my raspberry pi jukebox I used the following hardware:
- Raspberry Pi, I used a B+ model, but any will model do as long as it fits with the:
- Capacitive Touchscreen from Adafruit: http://www.adafruit.com/products/2423
- 8 GB SD card
- USB audiocard (since the jack output on the Raspberry Pi gave me too much of a headache)
I also built my own case with speakers and in-built amp, but I’ll spare you these ;-).
Installing the operating system¶
I installed a raspbian pre-configured for the Capacitive touchscreen with an image downloaded from this page: https://learn.adafruit.com/adafruit-2-8-pitft-capacitive-touch/easy-install. Since the installation instructions differ per operating system and provided on this page are quite good, you can follow these.
Configuring the Raspberry Pi¶
You can configure some settings on your Raspberry Pi using the command
sudo raspi-config
- Here you can easily do some configurations. Some that I preferred to do:
- Expand the file-system (1) - The initial installation of the OS does not make full use of your SD card. Why throw away so much space?. This option makes sure you use your whole SD card.
- Internationalization options (4) - Configure your timezone and locale settings
- Advanced options (8) - Host name (A2) - Of course you want your Pi-Jukebox recognizable in the network as such, so change it to ‘pi-jukebox’. This step is not a necessity for following steps.
Configuring the USB music device¶
To configure the sound card’s initial volume I used alsamixer. Because we want to configure the USB soundcard, and not the HDMI or jack output we use the -c 1 switch, like so:
alsamixer -c 1
Since we want to make sure the volume settings are kept on reboot we use:
sudo alsactl store
Installing and configuring mpd¶
First, we’ll just install mpd.
sudo apt-get install mpd mpc
Then we configure mpd’s settings with:
sudo nano /etc/mpd.conf
Some mpd clients use zero-conf so that accessing the mpd is made extremely easy. For that I will install the necessary components in a later step. For now we can already set-up the feature in the config by un-comment the line containing:
zeroconf_enabled "yes"
and change the line for the zero-conf name so becomes:
zeroconf_name "Pi-Jukebox"
last.fm scrobbling¶
Since I have an last.fm account I also want to scrobble my plays to it. Luckily a nice little tool called mpdscribble allows us to do just that. Install it with
sudo apt-get install mpdscribble
Configure it:
sudo nano /etc/default/mpdscribble
Here we change “MPD_SYSTEMWIDE=0” to “MPD_SYSTEMWIDE=1” and add the lines:
[last.fm]
url=http://post.audioscrobbler.com/
username=_yourusername_
password=_yourpassword_
journal=/var/cache/mpdscribble/lastfm.journal # The file where mpdscribble should store its Last.fm journal in case you do not have a connection to the Last.fm server.
last.fm suggestions¶
Wouldn’t it be neat if your playlist would be supplemented with music similar to the last track in your playlist? A tool called mpd-sima does just that. We install and start it with:
sudo apt-get install mpd-sima
sudo service mpd-sima start
This automatically adds 1 track whenever your player reaches the last track in your current playlist. You can change some of it’s behaviour by editing the, self explanatory, configuration file and restarting the service after that:
sudo nano /etc/mpd-sima.cfg
sudo service mpd-sima restart
Setting up the music library¶
Setting up the NAS drive¶
My NAS drive contains a publicly (LAN public) available directory called Public, which in turn contains my music folder surprisingly called ‘Music’.
Mounting the NAS¶
For mpd to be able to make use of your NAS drive you need to mount it at boot time. First create a directory where the NAS drive will be mounted:
sudo mkdir /mnt/nas_drive
Then, to make sure the drive mounts on boot, edit fstab:
sudo nano /etc/fstab
and add something along the following line
//_your.nas.drive.ip_/Public /mnt/nas_drive cifs guest,uid=1000,gid=1000,iocharset=utf8 0 0
Now everything should be ready to mount the NAS at boot. To mount without rebooting now (and test whether it works), do:
sudo mount -a
Hopefully you didn’t get an error message. See if the NAS content is available on your Pi-Jukebox, do:
ls -l /mnt/nas_drive
Does the output look familiar? Then everything should be fine
Making the NAS available for mpd¶
In order for mpd to be able to scan the music on the NAS we must make a link to the NAS drive in the directory where mpd scans it’s music. Keep in mind that I stored my music in a subdirectory called ‘Music’ of the just mounted directory ‘Public’. Make the link like so:
sudo ln -s /mnt/nas_drive/Music/ /var/lib/mpd/music/
Setting up USB stick configuration¶
Because I wanted to make sure I was able to access the USB stick, whatever name it might have, I made use of usbmount. This utility mounts all usb drives in the directory /media in subdirectories called usb0,usb1 and so on.
sudo apt-get install usbmount
To make the mounted (or future mounted) USB sticks available to mpd scanning we also make a link to these:
sudo ln -s /media/ /var/lib/mpd/music/
Finally: adding the music to the mpd library¶
To scan all the music sources you just added so the music can actually be reached through mpd:
mpc update
Depending on the size of your library this can take some time. Make sure the scan is completed before rebooting or turning off your Raspberry or you’ll have to start scanning again. I suggest to do the scanning after completing the rest of the set-up.
Zeroconf¶
Zeroconf, sometimes called bonjour, is a group of utilities that allows for easy networking without special configuration or any manual operations. I also wanted the possibility to control the Pi-Jukebox from other devices within the network I thought this would be a useful addition. The installation is quite straightforward:
sudo apt-get install libnss-mdns
Starting the zeroconf deamon:
sudo service avahi-daemon restart
Samba server¶
We need to put the pi-jukebox program on the device, and it is also nice if we can access the USB storage devices so we can put some files on them. For this we’re going to create two window shares. One for the home directory of the user ‘pi’ and one for the USB mount directory.
First we’re going to install samba and related packages:
sudo apt-get install samba samba-common-bin
Now we create the shares by editing the samba config:
sudo nano /etc/samba/smb.conf
and adding the entries
wins support = yes
[pihome]
comment= Pi Home
path=/home/pi
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no
[piusb]
comment= Pi USB drives
path=/media
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no
Then we’re going to set the samba user pi’s password. I’m going to share a big secret here: I kept it the same as the default pi account: ‘raspberry’
sudo smbpasswd -a pi
To make the changes effective we’re going to restart the samba server:
sudo service samba restart
WiFi¶
You want to enable your WiFi right? Is there life worth living without wifi? So bet your life I’m on it! I’m all about ‘making magic happen’. In time it will be all right here... Wait, see and weep.