This project is for anyone that has or is thinking of building a dedicated music server as a replacement for traditional CD transports. The basic goal is to provide the simplest possible avenue for someone to get a Linux system based around Music Player Daemon up and running. There are a lot of people building dedicated music servers on the hifi and audio boards, and it seems like the majority of them go for Windows or Mac as Linux is too complex a pill to swallow. I've always been a big fan of Music Player Daemon and am hoping a simplified setup like this may introduce more users to the project.

Basic Features:

Music Player Daemon 0.16.6, full complement of codecs and streaming support

Flash Media, minimum 256MB (USB Stick or CF-SATA, or whatever you can boot off of)
Format using FAT32, Single partion
Unetbootin or similar software
A network file share (i.e. NAS, Windows, or Mac CIFS/SMB share) or separate hard disk with your music library.

Installation, Prep the Flash Media:

Download the iso file from one of the links above.
Insert your formatted USB Stick/Flash media into your computer
Install and Launch unetbootin
Select the second 'Diskimage' option, browse to and select the ISO image
Drive type will be USB drive, make sure you've selected the same drive letter/designator as the flash media.
Click 'ok' and wait for the installation to complete.
Remove the flash media and insert into the music server

Using unetbootin or similar will put all the mpd state/database files in the correct locations allowing read/write. A frugal install should be possible, but then you'll need to create those directories in /mnt/home/ yourself.

Upgrading from a previous release to 0.9.2:

You can optionally back up the 'mpd' folder on your flash media device, which contains your mpd database and playlists. Any other files that were created by the previous installer should be deleted. Follow the new installation instructions and restore the mpd folder afterward.

First Boot

You have a choice between doing the basic configuration using point and click or remotely from a CLI.
If you're using a USB DAC make sure it's plugged in before booting.
Make sure the machine is plugged into the network.

Monitor/Keyboard/Mouse Install

Hit whatever keys are required to get into the BIOS during the bootup.
Make certain the BIOS is configured to boot from the right media.
Disable on-board sound in the BIOS if you're not planning on using it.
Go through the self explanatory monitor wizard and Xwindows should start.
Xwindows will launch the MPD Configuration Wizard automatically at this point.

SSH Console

This works best if Bonjour/Zeroconf is on your system (default on Mac and many Linux installs. Also installs with iTunes on Windows. Download here if you need it.
Once the system is booted, SSH to tunes.local
user/pass is root/woofwoof
On the initial boot the MPD Config Wizard will automatically launch.
To navigate the ssh dialogs you use a combination of tab and arrow keys. Enter to confirm the specified settings.

MPD Config Wizard

Sound Configuration

The Wizard goes through Soundcard, Storage Configuration, and Static IP Config. Except for the Static IP the steps are basically identical for Console or GUI users.
Go through the Welcome Screen, Select your sound output to your DAC from the list.
You'll be given an opportunity to check the sound output to make sure you got it right. Make sure your stereo is on and correctly hooked up to your sound device. If you don't hear any sound you can go back and choose another output.
Provide a name for the Sound Output.
You'll be asked to optionally configure an equalized output and volume control.
Continue on to the storage configuration.

Storage Configuration

The first dialog will ask you whether your audio is stored locally or via a network share.
The CIFS configuration dialogs will first ask you for the IP address, username, and password for your network share.
The next dialog will ask for the name of the Share itself.
If the root of the share is above your Music library then enter the sub-folder for the music library here. Be sure to get the case correct. If the Music library is the root of the share then leave the second box blank.
You'll then get a chance to confirm and test these settings. Go through those options, and if the test fails you can go back and change the settings.

Note local storage support is new and the audio directory currently limited to a separate drive or partition from the boot device.
The local storage wizard will have you select a drive and subdirectory where your audio data is located.

Remote Control/LCD Config

If the wizards detect a Soundgraph iMon LCD/Remote then you'll be asked whether you want those functions enabled, along with the default settings for the LCD screen.

Static IP (optional)

You'll be asked after this if you want to set up a static IP. This is optional but recommended as most MPD Clients don't support Bonjour.
The setup is slightly different for GUI vs. SSH users. SSH is self explanatory.
For GUI User's you'll see a list of interfaces, and you'll need to select a button for your interface, in most cases Eth0.
Then Click the 'Static IP' button. Enter the IP in the following window, then click through the various confirmation/Done dialogs.

Password

GUI users will be asked to change the default Password at this point - this is strongly recommended.
Because of the security context the CLI based MPD Wizard is running in this isn't possible for SSH users, so you'll need to do this later.

Note any of these settings along with several others can be modified later by typing 'mpdwizard' at the command line.

Saving the Config

The final step in the wizard will ask you to reboot. This is recommended unless there is something else you want to change.
During the shutdown you'll be asked to create a save file, follow these steps, any size save file should be sufficient, smaller is fine.
After rebooting the server will be fully operational.

Using MPD - Clients

MPD requires a separate client, there are many to choose from.
For iPhone/iPad users there is MPoD/MPaD, both of which will auto-discover your new server on the network.
Most other clients will require you to configure the IP address of your music server.
Look here for a full list of clients.
MPDPup has a full complement of CLI clients built in if you like to access your system using SSH: mpc, ncmpc, ncmpcpp, Practical Music Search (pms)

Contributing/Hacking on mpdPup

I'm happy to announce that mpdPup now has it's own optional development files for people who would like to hack on or contribute to it.
Download here: (md5 is 62fd02533781cd70f4bc5c65624a3b77 )

To use this file, just place it on the flash media used in the installation instructions.
Then launch the Puppy Linux boot manager and configure it to load the devx file at startup.
I've taken a different approach with this devx vs. other Puppy Linux variations. Several 'heavy' applications such as Geany & Firefox are only available when using the devx file. Since mpdPup is hard-coded to run from RAM I wanted to make the base file as small as possible, but provide maximum flexibility to anyone developing on the platform.

mpdPup is binary compatible with Debian Squeeze, so you should also be able to use any of those Debian packages. Better package management is a future to-do item.

Future

This release is marked 0.9.2 There are a variety of minor known issues with this release:

The ESI Juli@ seems to have problems with 176/192 Khz audio files. My own ESI Juli@ died, and it's possibly related to my specific card - if this is an issue for you and important then stick with 0.9.1,download hereor here.

empcd is unable to call albumbler when the system is started - this will work if the user manually restarts empcd from the local console.

Albumbler will attempt to queue directories which contain no audio data

JWM's themes are a bit messed up, as is a fair amount of basic desktop usability. Since a full functioning desktop isn't one of this project's goals that's not a barrier to incrementing a release, but I would like to improve this in the future.

Other potential changes will be based on user interest/feedback, things I'm thinking about are:

Support for automount/hotplug actions for USB drives and expand local storage support.
Realtime Kernel (The BFS scheduler may make this moot)
Serial Console Support (partially implemented in 0.9.2)
Improve/Expand the remote control/LCD support
Continue Improving the wizards for various MPD/Client features
More MPD community projects built in
Add Web Interfaces
Package Management
Squeezebox Support

159, 224Last edited by ldolse on Tue 06 Nov 2012, 15:16; edited 38 times in total

Xwindows is only configured to launch automatically on the first boot. Type xwin to launch it on subsequent boots. If it fails for some reason on the first boot you can try typing xorgwizard and xwin afterward to try and start it.
Alternatively skip the GUI and just type mpdwizard to go through the same CLI wizard that ssh users use.

Note for underpowered device users e.g. Alix/Soekris

After setting the basic settings the initial reboot can take a very long time - approximately 10 minutes on my AMD Geode based Soekris.
This is a one time event while Puppy Linux optimizes the save file to work with optimally with SquashFS/UnionFS. Since there is no serial console you won't be able to see this happening at this time.

No sound after the initial setup/reboot though everything appears to be working

In rare occurrences with a few types of sound cards, ALSA may default to have the device muted. You need to go to the CLI and type alsamixer to launch a mixer application.
Use the left and right arrow keys on the keyboard to highlight each sound device/channel, then press M to unmute it. When everything is unmuted press escape to get out of the mixer.
If you get a 'mixer not found error, use the following command instead:

Code:

alsamixer -c 1

You may need to change the number '1' to correspond with your sound device. aplay -l will list out the sound devices and their corresponding numbers.
To make sure the mute setting is saved across reboots, enter the following commands:

Code:

alsactl -f /etc/asound.state store
reboot

Low Memory Devices (256MB or less)

By default mpdPup runs the whole operating system/file system from RAM. This will boot fine with as low as 128 megs of RAM, but if you have a large music collection there may be problems the first time the database is built. You can edit the syslinux.cfg file in the USB stick to retain maximum memory for applications, at the expense of not running the OS from RAM. Find the line which includes 'pmedia=cd', and add 'pfix=nocopy' (no quotes) to the end of the line.

Last edited by ldolse on Fri 15 Jun 2012, 13:59; edited 9 times in total

I’m a bit surprised there isn’t a queue of frustrated audio enthusiasts, Linux wannabes, much like myself standing in line to shake your hand.
No worries, let me be the first then.

I’ve got Voyage MPD running on a music server atm thanks to considerable help from a friend who “knows” about Linux.

I know of a number of people who would love to use Linux for audio but as you’ve mentioned elsewhere, its just way too complicated for most Windows weaned computer geek wannabes to cope with.

Despite hours trawling the web for information on how to set up Voyage MPD I got frustrated at every turn by the Linux communities reluctance to speak plain English and explain things in a logical step by step manner that didn’t make assumptions regarding knowledge of such basic things such as what to type to enter a command.

Glad you appreciate the release - I'm haven't promoted this all that thoroughly yet, so I don't think that many audio enthusiasts are aware of the effort. I'm working on the next release, trying to increase the ease of deployment/setup. The next release will have install wizards instead of hand-editing the files, headless setup (no monitor/keyboard) will be an option, and I'm going to go ahead and bundle as many mpd 'toys' as possible.

The Alsa 1.0.24 upgrade will wait til later, been banging my head against that wall and decided to take a break and focus on the wizards, not sure if my problems are with Alsa or something else.

I have previously tried myself, but as a complete beginner, I was not able to get Squeezeboxserver running on puppy - it needs Perl

Here you can find the newest version: http://forums.slimdevices.com/showthread.php?t=89619

I've spent several hours and two different versions of perl (5.8.8 and 5.10.1) trying to get this running, no luck. Downloaded the source code from SVN, rebuilt on Puppy, and the problem comes down to CPAN module, YAML::Syck - CPAN says this module is installed, Squeezeserver says it can't load it. Google searches seem to indicate this is a very common Squeezebox problem, but I didn't come up with any solutions - most indicated a different perl version might help, but the best version is unclear. If you can find any info with regard to a solution I can give it another shot.

Edit - got past that issue - it's still not working, but there's a new set of errors to solve, so making progress.

P.S. @ldolse, Check your PM_________________Get ACTIVE Create Circles; Do those good things which benefit people's needs!
We are all related ... Its time to show that we know this!
3 Different Puppy Search Enginesor use DogPile

In terms of sound, the ISO is ALSA only, but not USB only - I use this build myself with a ESI Juli@, and I've also tested with a few USB DACS. Any card supported by ALSA should work fine with this ISO.

The ISO in the first post has MPD pre-configured and ready to go aside from the sound card selection and network share. The music directory may also require a change if it's not the root directory of your network share.

The iso 'should' work perfectly fine as a LiveCD, but it won't work out of the box per my instructions in the first post. The most important thing the USB install does is automatically create a separate read/write area outside the main file system for MPD's working directory. (/mnt/home/mpd/)

If instead you run it from a LiveCD then the entire system is read-only, and you'd need to create a separate area for read/write working space - which likely brings the user into gparted-land, which I wanted to avoid. Once that's done you also need to create the requisite working directories for mpd and point it there. That said, livecd is the only way I've found to get this working on a Mac (because of Apple's crappy bootloader), so it's something I can document better in the future.

Lastly, the Livecd may be running in a Pupmode I haven't QA'd - all my work has been in Pupmode5 and 13 - some of the scripts I've added/modified do specific things based on the Pupmode. If there is problem on this point I can certainly make the scripts support a liveCD installation.

My personal install is to Compact Flash in a CF->Sata Adapter, so a USB stick isn't required if a more complete install is desired.

As far as media files go, I've compiled MPD and all the associated libraries so any common media format should be supported - my personal collection is a mix of aiff, flac, mp3, and m4a - I haven't personally done much testing for other formats, but all the latest libs are compiled/installed, so they should work without a hitch.

Note I'll be releasing an update soon which will have an SSH daemon built in, a setup wizard that runs from ssh or X, and will also ship with a variety of mpd cli clients and playlist tools.

I would be setting mpdPup up on a Alix 1C with ESI Juli@ soundcard via SPDIF to a Benchmark non-USB DAC.

For most files I want straight bit perfect passthrough to my DAC without any resampling/ upsampling. I do however have a mix of recordings up to 96/24 needing equalization - simple high frequency boost or bass attenuation, etc.

How would you recommend equalization be handled with mpdPup and a Alix 1C? Is the Alix 1C powerful enough or would I need something more powerful like an Atom D525?

One day I would like to explore room correction, let me know if this changes the answer.

I'm not sure how well the Alix would do for equalization, that's probably partially dependent on the software package you were using to do it. I'm thinking either ecasound or bruteFIR? These are both packages I was thinking about bundling into an later release, but I don't have any real experience with either one - I've read that both can use a fair amount of CPU depending on the application, so an Atom based board might be a better bet.

Also note most of the Alix boards don't have a vga output - the current version of mpdPup requires a monitor/keyboard. The next release will have a better chance of working on an Alix board when ssh is included by default. If you don't have a monitor and are looking for something now then VoyageMpd might be a better fit, but I'm trying to get the next iteration wrapped up soon.

I don't know of any mpd clients with equalizers built-in, but I think you could get hardcoded equalization pre-sets by defining multiple MPD audio outputs.

Libsamplerate is similar to the above statement - default settings per the instructions in the first post don't do any resampling.

The way you use audio manipulation engines such as BruteFir or Ecasound is to use MPD's pipe output - basically you can create multiple audio outputs in MPD and you define the unique characteristics of that output - whether it talks directly to the hardware, whether it uses the ALSA mixer, whether MPD does it's own resampling (libsamplerate), or whether it pipes to another application (e.g. Ecasound or BruteFIR). All of those outputs will show up most mpd clients, so you can enable/disable them to get whatever effect is configured for that output. I think the only scenario you'd need to be careful of is enabling multiple conflicting outputs simultaneously (e.g. mpd and Brutefir both outputting to the same sound device).

CPU processing would take place on the same machine running MPD, not on the client - the only way around this was if you piped it across the network using something like JACK (not currently a part of this distribution and not on my to-do list at the moment).

DeaDBeeF integration probably wouldn't happen as that's a full featured player app with a GUI, and this project is about creating a headless system.

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot vote in polls in this forumYou cannot attach files in this forumYou can download files in this forum