OpenJukeBox is a ongoing project where I build music player out of old and new hardware. At the core is a GNU/Linux system with the Music Player Daemon (mpd) as player.

Version 1

The first version is based on the Asus WL-HDD2.5. This is a wireless access point with an optional hard disc. The great things about this device is, that it is a USB host, OpenWRT runs on it and you can solder a connector to access the system bus.

For the audio output, a USB soundcard is used. The user interface consist of an 4*20 character LCD and 5 buttons. As they are directly on the system bus, no controller is needed. A Linux kernel driver for the LCD and one for the buttons ensures easy access. The UI software is a mpd client. It controls the pages of the UI and interacts with mpd. The functionality is as follow. One button is to switch between player and selection mode.

In the player mode, the artist, album and song name is shown. The buttons are for Pause/Play, Next, Volume up and Volume down.

In the selection mode, the user can browse the song database and select songs by artists and/or album. It is also possible to load playlists.

Since mpd has a network interface, more options are provided with an mpd client like gmpc. Unfortunately, the processor of the device is very slow. This results in an average load of 75% when decoding Mp3 files, leading to an slow network interface.

Here are some pictures of the player and the schematic of the print.
The player during development of the hardware.The finished player.Print of the player.Schematic of the print.

Version 2

The second generation player is based on the Excito B3, a very cool NAS. It is so cool because the company understands Free Software; it runs Debian GNU/Linux and you get the root password within the manual.

At the moment, mpd runs on it and it is controlled via the network interface. A dedicated UI is not so important as the device works as the file server in the office where manly always a computer is running while I am in it. Nevertheless, I already started with an USB UI. For the UI logic I will use LCD4Linux. I only have to write the driver for the USB display as it seems that all existing (or supported by LCD4Linux) displays do not use the USB display standard. The buttons are directly used as multimedia keys therefore no driver will be used for them. This means that no browsing on the display is possible, but it is not necessary as the selection can be done over the network interface.

USB speaker

For the sound output, I used the same as for the first version; a USB soundcard and some speaker. As the volume was always quite low, I built active USB speaker out of a USB soundcard and the old active speaker.
The old speaker and USB sound card.Connectors of the old speaker.
Connection of the sound card and the speaker.
The new active USB speaker.Connectors of the new speaker.