Saturday, May 17, 2014

Raspberry Pi with Firefly (mt-daapd) music server

The SoundBridge is able to play your own music collection. But this requires a music server running inside your home network. Since USB sticks with a capacity of 64 GByte and more are affordable the whole music collection of most people will fit onto one stick. So you may put this stick into a mini-computer like the Raspberry Pi and get a small, cheap, and silent music server to run 7 x 24 hours.
There are several options for the software to use. I tested some of them:


This small UPnP and DLNA capable server is part of the Raspbian "wheezy" distribution. You may install it with the standard procedure

sudo apt-get install minidlna

and edit the file /etc/minidlna.conf according to your needs.
The server is working quite good with UPnP capable software and devices like the SoundBridge, but my experience was not the best. In particular the Search function is not working.

Firefly (daapd)

The firefly media server provides a much better integration with the SoundBridge. Raspbian even contains the package forked-daapd which contains a fork of the firefly server. But I didn't managed this one to function at the Raspberry Pi.

So I went back to good old mt-daapd which is another fork of Firefly. Unfortunately it is no longer part of the actual Debian or Raspbian repositories. But the source package is still available at the Ubuntu archive. I built a Debian package for Raspbian "wheezy" from it: 

Download mt-daapd_0.9~r1696.dfsg-15build1_armhf.deb

After download you may install it with:

sudo dpkg -i mt-daapd_0.9~r1696.dfsg-15build1_armhf.deb
sudo apt-get install -f

Update 01/2017:
I build a package for Raspbian/Debian "jessie" and like to share it with you:

Download mt-daapd_0.9~r1696.dfsg-15build1.1_jessie_armhf.deb 

Install it with:

sudo dpkg -i mt-daapd_0.9~r1696.dfsg-15build1.1_jessie_armhf.deb
sudo apt-get install -f

The first dpkg command will probably complain about unresolved dependencies, but the second apt-get fixes this.
You should edit /etc/mt-daapd.conf to adapt the path to the music collection and restart mt-daapd with
sudo /etc/init.d/mt-daapd restart

This solution is working very well together with the SoundBridge. Actually I'm running both mt-daapd and minidlna in parallel at the same Raspberry Pi. The first one is serving two SoundBridges, while minidlna allows to access the music collection at a Samsung TV.


  1. Thanks Martin! I've just bought a Raspberry Pi and I'm looking forward to trying these out.

  2. This worked like a charme with pibang (debian wheezy) and Banshee. I think Rhythmbox would work as well but I could not get the server to respond. With the correct settings I guess everything would work well. :) Banshee recognized the media server by itself, making a connection pretty easy.

    Thank you, dear sir!

  3. Just a question, is Firefly on raspberry able to re-encode Flac to be played on soundbridge?

  4. Any chance you can update this for Jessie? I've tried to install it, and it tries to uninstall while correcting dependencies.

    1. Yes, I added a link to download the jessie version.

  5. The Jessie package will install without issue on Stretch as well. Just as a note, you need an ARM v7 CPU (Rpi2, Rpi3B, 3B+, etc.,) or something else with a v7 CPU like an Orange Pi One. It actually seems to run quite well on the OP1, maybe because of the real Ethernet port?

    It won't run on a RPi 0, Rpi 0W, or original Pi, despite the picture. It will install on these, but won't start due to CPU architecture differences. I was confused as to why it wouldn't run, assuming (yes, I know) that a picture of a original Pi = works there...

    I installed this with the logging and database on a small, ext2 formatted flash drive so to save the uSD card. There's no real issue with race conditions with mounts and starting the application, just reload it after all mounts are performed and it's fine.

    A final note: There is a more modern version of Forked-Firefly available for Stretch located here: - this offers FLAC I believe - but I just prefer the old interface.

  6. Thank you for clarifying this. I actually run the package on a Olimex A20-OLinuXino-LIME2 which is also ARM V7.


English comments only, please!