Saturday, August 16, 2008

HowTo: Musicpd (Music Player Daemon) on FreeBSD

MPD stands for Music Player Daemon. It is made to control music through a very unique way. MPD has support for MP3, Ogg, FLAC, AAC, Mod, and wav files.

Let's proceed with the steps needed to install musicpd from ports:
  • % su
  • # cd /usr/ports/audio/musicpd ; make install clean
  • if you want select additional audio formats such as AAC and MOD files
Now let's move onto the configuration by copying the port's supplied example and editing from there:
  • # cp /usr/local/share/doc/mpd/mpdconf.example /usr/local/etc/mpd.conf
  • # chmod 644 /usr/local/etc/mpd.conf
  • # vi /usr/local/etc/mpd.conf
music_directory "/mnt/music"
playlist_directory "~/playlists"
db_file "~/database"
log_file "~/log"
error_file "~/error"
pid_file "~/pid"
state_file "~/state"
user "musicpd"

port "6600"
bind_to_address ""

audio_output {
type "oss"
name "OSS"
To prevent MPD running as root we can setup a new user (musicpd):
  • # adduser
Username: musicpd
Full name: Music Player Daemon
Uid (Leave empty for default):
Login group [musicpd]:
Login group is musicpd. Invite mpd into other groups? []:
Login class [default]: daemon
Shell (sh csh tcsh bash rbash nologin) [sh]: nologin
Home directory [/home/musicpd]:
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]: yes
Username : musicpd
Password :
Full Name : Music Player Daemon
Uid : 1002
Class : daemon
Groups : musicpd
Home : /home/musicpd
Shell : /usr/sbin/nologin
Locked : yes
OK? (yes/no): yes
Add another user? (yes/no): no
  • # mkdir -p /home/musicpd/playlists
  • # chown muiscpd:musicpd /home/musicpd/playlists
To start MPD at boot time:
  • # echo 'musicpd_enable="YES"' >> /etc/rc.conf
Finally we start MPD and create the database:
  • # /usr/local/bin/mpd --create-db /usr/local/etc/mpd.conf
Now that we have the daemon up and running we need to put it to good use. I use the NCMPC client for the job.

To install NCMPC from ports:
  • # cd /usr/ports/audio/ncmpc ; make install clean


Anonymous said...

Awesome! Thank you so much, this worked. I've always been trying to make musicpd (mpd) work on FreeBSD. And now does.

tangram said...


Thanks for the positive feedback.

Anonymous said...

mpd is now named musicpd on ports, and in general the binary is musicpd, do you know why? Just asking because am a bit confused seeing you are running it as mpd

tangram said...

I'm not sure I follow...

In the Linux world Music player Daemon is known by its acronym MPD thus the application is named mp in all distribution repositories.

In the FreeBSD side of things there is a mpd in the base system in FreeBSD 9. To distinguish both the ports team opted to name it musicpd in the ports tree.

In short, mpd (Linux) = musicpd (FreeBSD).

Anonymous said...

thank you for the quick reply. :)

Anonymous said...

Nice job!
M(usic)PD is so light & fast so I love it ;)
A time ago got it on my ubuntu - now ill try it with a BSD


tangram said...

Thanks for the feedback :)

Though this howto is a few years old it should largely (if not completely) apply.

Matthew Mitchell said...

is deprecated, how should i create the database file now?

tangram said...


This how-to was created in 2008, roughly 7 years ago and I'm sure MPD changed much since.

I don't use MPD these days so I'd suggest having a look at the manpage or using a search engine.


Anonymous said...

Hi Tangram.

May I just ask, if you don't use MPD anymore, what then do you use as its replacement? I ask because I'm evaluating the use of 'xmms2d', and so far, MPD seems a nicer, cleaner option.

Paul Kotschy

tangram said...

TBH nothing :) I hardly listen to music these days -.-