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.8 or 0.17.2, full complement of codecs and streaming support

Wizards for MPD & system configuration (using a point'n'click UI or CLI session)

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 (USB attached storage is partially supported).

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 install is possible but not fully automated at this point.

Upgrading from a previous release to 0.9.3a:

First, insert the flash boot media into another system, e.g. a Windows, Mac, or Linux desktop machine.
Delete the puppy_mpdpup_0.9.2.sfs file, as well as the the .2fs save file. Mount the 0.9.3a iso on your system and manually transfer the puppy_mpdpup_0.9.3.sfs file from there to the flash media. This will maintain your mpd database and any smart shuffle information. Your system settings will be removed and you will need to re-run the setup wizards.

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 keyboard & monitor wizards and Xwindows should start.
Xwindows will launch the MPD Configuration Wizard automatically.

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
The MPD Config Wizard will automatically launch during the first time setup.
To navigate the ssh dialogs you use a combination of tab, space bar (select items), and arrow keys. Enter to confirm the specified settings.

MPD Config Wizard

The Wizard walks users through Sound, Storage, GUI, and Network preferences.
Except for the Static IP the steps are basically identical for Console or GUI users.
The Welcome Screen will provide you with a choice between Basic & Advanced setup. Many audiophiles will find the basic setup perfectly suitable. If you want bells and whistles or are an inveterate tweaker, go for advanced. Only the basic setup is documented here.

Sound Configuration

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.
Choose your volume control preference.
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.

Network Share
The CIFS configuration dialogs will ask you for various details regarding your network share, be prepared with IP address, user/pass, share name, and music directory.
If the root of the share is above your Music library then enter the sub-folder 'Music Root Directory'. Be sure to get the case correct. If the Music library is the root of the share then leave that 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.

Local Storage
Note local storage support is new and the audio directory currently limited to a separate drive or partition from the boot device.
The boot drive and music storage drive should also be on separate system buses (e.g. SATA for boot and USB for storage)
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.
A variety of CLI clients built in if you like to access your system using SSH: mpc, ncmpc, ncmpcpp
Graphical/Web clients can be installed from the setup wizard, choose between GMPC, NeoMPC, Client175, phpMp+, Web1.0MPC
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.

Contributing/Hacking on mpdPup

mpdPup has it's own optional development files for people who would like to hack on or contribute to it.
Download the devx file here: (md5 is 5fa7ae9a121c3c769a363c02c970c11b )

To use these files, 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. Refer to the separate package management article for instructions on package handling.

Known Issues

Some minor known issues with the 0.9.3 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.

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.

Multiple USB disks can be problematic as their drive designation may change on each boot, this is system dependent

Future
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 as of 0.9.2)
Improve/Expand the remote control/LCD support
Continue Improving the wizards for various MPD/Client features
Further setup improvements, including automated installation, Localization/il8n
Package Management improvements
Squeezebox Support

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

Some sound devices may default to a muted state in ALSA. mpdPup tries to unmute these automatically, but there is a known issue with cards that have spaces in the device name. You may need to unmute your card manually. 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.

Follow the various prompts at the terminal(s) that pop up and let it download the databases/do it's thing (this will take a little while)

Click 'OK' to close that window once it's done, then close and re-start the Package Manager

When it comes back up it will still be empty, but now there will be multiple 'repo' options across the top of the Window. Choose the various Debian options to browse those repositories.

Use the radios on the left to browse categories, or just use the search box on the lower left to find your package.

Single click on the package name to bring up an install window, follow the instructions

Dependency checking may not be accurate, if you receive errors when trying to run your package return to the package manager and install any required dependencies.

Installing to an Internal Hard Disk

The basic design goal of this project is meant to be run from flash media, typically a USB Stick, or a Compact Flash Card in a SATA/IDE adapter. However some Puppy Linux tools allow more installation possibilities. If you want to install to an internal SATA/SSD drive this is possible, but it requires a few more steps. This type of installation is called a Frugal Install. Note at this time these steps haven't been completely vetted, feel free to post questions or clarifications:

Boot from USB stick set up as per the first post (or CD).

Go into Xwindows (type xwin or startx if it isn't automatically started)

Use gparted to format the SSD drive using FAT32 (optionally ext2/3)

Right click on the desktop, select Setup -> Puppy Universal Installer

Go through all the prompts to install Puppy to your internal hard drive

If it didn't come up as part of the Universal Installer then install GRUB or GRUB4DOS - right click on the desktop System -> GRUB

Reboot without the CD or origianl USB stick, off the hard disk this time

Many thanks to all the users who have tested out earlier versions and provided feedback, much of which is reflected in these updates.
Changes in 0.9.3

MPD versions 0.16.8 (default) and 0.17.2
Major changes to the MPD setup wizards, lots of newbie proofing, additional refactoring
Unmute should now work automatically across more sound cards (WaveIO is still problematic )
Fixed issue that was preventing mpd client auto-discovery
Full Python installation (previous version used pyinstaller)
Albumbler updated to latest version, empty directories are no longer queued
MPD Sima updated to 0.10.0, see coding team website for changelog
Directory browsing enabled for lighttpd, root directory changed to /var/www. NOTE:URL prefix for coverart is now http://tunes.local/musiclibrary/
PHP added, disabled by default
Web Clients: NeoMPC, Client175, phpMp+ and Web1.0MPC can optionally be installed
mpd delayed startup/connectivity resolved
Advanced tweaks for ALSA, MPD, nrpacks, etc built into the wizard
LCD Client daemon changed to mpdlcd
GMPC added as an installable option, XWindows can now be optionally enabled to start automatically
Make sure the mpd database directory is created wherever the user chooses to store their savefile
Updated Realtek drivers for r8168 and r8169
Added Hiface Drivers (snd-usb-asyncaudio.ko)
Updated Intel Graphics Drivers to 2.17.0, should improve compatibility for many newer motherboards
Added libdespotify for Spotify support in MPD 0.17.x
Fixed the ssh password warning so that it really works
Fixed ffmpeg build, previous build was broken, wma and many other codecs are now properly supported
Reduced ffmpeg size by disabling all non-audio functionality, updated to 0.11.1
added deb2pet for managing debian packages
Updated mpc, ncmpc, ncmpcpp, mpdscribble, and libmpdclient
NTFS hard disk support for the music library
Sox support built into the wizards, alsa equalizer handling updated
various updates to init scripts
Restored keymap configuration, should solve issues with international keyboards
Moved non-essential SSH files to the devx
Removed redundant fonts and other non-essential files

Hi Idolse,
I tried to download the v.093 from the link that you have indicated, but there's no file with extension ".iso" in file rar! I do something wrong?
I also wanted to ask if new version of mpdpup is compatible with ARM Cortex processor and if the Hiface device is automatically mount on with the new drivers!!!
Thanks for reply and thank you very much for what you're doing for us!
(ps: sorry for my bad english!!!)

Thank you Idolse, I think you have done a wonderful job.
I'm a newbie, so excuse me if my question is obvious... but here is it.
During the setup I choose and I could listen to the correct soundcard (my usb jkdac32) but after the reboot everytime I try to listen to a song is my integrated soundcard that sounds, not the jkdac32 I've choosen in the setup.
How could I run the setup again or change the mpd.conf file in order to liste to the usb dac?
Thanks.

Thank you Idolse, I think you have done a wonderful job.
I'm a newbie, so excuse me if my question is obvious... but here is it.
During the setup I choose and I could listen to the correct soundcard (my usb jkdac32) but after the reboot everytime I try to listen to a song is my integrated soundcard that sounds, not the jkdac32 I've choosen in the setup.
How could I run the setup again or change the mpd.conf file in order to liste to the usb dac?
Thanks.

Hi Grunter,
a question...
I downloaded the file from the link indicated. In my pc it appears a Winrar archive named "mpdpup-0.9.3". When I extract this archive there's no ".iso" file inside...where am I wrong? It's probably my fault, but I don't know how to solve it.
Has anyone already tried the new version with Hiface One or Arm processor?
Bye

...ok! I solved...the ".iso" extension in my windows os was associated to "Winrar"!
Many thanks for the possibility of customize alsa parameters!
I look forward to know how this release would run on motherboard like Raspberry PI or Cubox or other similar and about Hiface one behavior.
Good job Idolse!!!

@jkoks, Spotify support requires a Spotify premium account. It's also not available in my part of the world so I wasn't able to QA it to be certain it works, but I expect it should be ok.

Anyway to get it set up you need to re-launch mpdwizard after the initial setup, it's not part of the welcome prompts:

1. From the command line type 'mpdwizard'
2. Select 'services', then 'Spotify'
3. The wizard will ask you to change to mpd 0.17.x
4. Finally enter your Spotify Premium credentials
5. Select 'Save settings and exit' from the wizard
6. confirm you want to commit the changes
7. type save2flash or reboot the system to completely save the changes

@kocozze, I just wrote that as the likely cause of your problem, glad you were able to figure it out. This release is only compatible with x86 hardware. I'm thinking about ARM for a future release, as Puppy Linux recently added Raspberry Pi support, but it's going to be a while before I have time to leverage that work. That said the Raspberry Pi and many other cheap ARM platforms aren't necessarily ideal for high end audio because of the compromises that were made with USB. That's not true across the board, some are fine (e.g. Beaglebone), but it's something to watch out for.

@grunter, Sounds like a rather strange problem - you used the wizard to test the sound output during the initial configuration, correct? Did the sound come out from the right place at that time? The only way I can see it changing is if the hardware did funny things where the internal and external cards swapped positions when the system initialized. Anyway glad you were able to resolve it. In the future you can always type 'mpdwizard' to get back to any options to make changes to the system.

Hi Idolse, finished today the install of mpdpup, very easy and straightforward, very good work! I've got only two problems (or better.....three):
1) I'm using a WaveIo card (from Luckit.biz) and probably it's a problem of the card because i've got the same problem in Win7, but if i restart the system without turning off the WaveIo at startup is not recognised, i've to turn the card off, disconnect the usb cable, restart and reconnect and than it's ok, there is some trick that can be done to probe the card at startup?
2)At startup, the volume in Alsa on the WaveIo it's always muted, have to enter Alsamixer and unmute, any fix to consider the card always on?
3) I'm using a mini pc (samsung Q1 ultra), but can't find a solution to turn the screen off ("xset dpms force off" reports "xset: unable to open display ""), any way to turn it off by default? In the bios there are no option for screen management.

The WaveIO has been a particularly problematic card on these specific points. I do think that it's a hardware design issue, not sure if the developers can fix some of these issues through firmware updates. That said, a number of WaveIO users seem to have gotten it working to their satisfaction. Did you read through their experiences on the 0.9.2 thread?

I'd really hoped I'd solved the muting problem, but based on what you're describing it's persisting across reboots. Did you commit your changes to the ALSA mixer by running 'save2flash' or 'reboot' from the command line? When you ran the initial wizard and did the sound test was it muted? If it wasn't then I think we could create an init script which unmutes it - this was something I'd considered for the other WaveIO users, but they managed to get the unmute persisting across reboots, so I stopped worrying about it. I'll re-read the old thread.

Regarding having to unplug/replug it, I'm pretty sure most WaveIO owners have gotten into the habit of starting up the computer and then powering the WaveIO (not sure if they leave the USB plugged in), and most of them just leave their system running all the time. I'm not sure if there is any other way to re-initalize the card.

As to the screen - how long do you wait to see if it goes to sleep? On my system the screen automatically sleeps after a few minutes if I'm not typing something into the console. You could try going into XWindows and see if there are any Puppy Linux power preferences, but you're in territory I haven't explored.

Edit 2:
This should be fixed now - see the troubleshooting section if it still happens for a simple workaround.Edited_time_total