Wacken Death Box: Documentation

|
Lixtal: 45Svær: Debatlitteratur og populærvidenskabelige artikler
  • aNyhed
  • Digg it!
  • Add to Technorati
  • Stumble It!
  • Google Bookmarks
  • Facebook
  • Facebook

Wacken Death Box: Linux Based MP3 Player for Festival Use

This blog entry is part documentation for future reference, part documentation for others who may want to build a similar application such as a car PC. Note: this is not advanced engineering, but some development experience is required.

Wacken PC: Final (Small)Together with a handful of friends, I visit the German village of Wacken each year in early August for the Wacken Open Air festival. Over the years we've become older and our need for luxury has increased steadily. Eventually we decided we wanted to play our own music while we were back from the concerts in our camp, and about four years ago I decided I'd construct some high-storage MP3 player hardware together with a power amplifier, both capable of running off a car battery and a charger.

Since then, MP3 players have become available sporting many gigabytes of harddisk space, so the design has become somewhat outdated: today it would suffice with a design featuring a car battery, a power amplifier, and an iPod instead of the customized PC that forms the MP3 player in the Wacken Death Box. In fact, that's precisely what I brought along in 2010, but since I had already purchased the PC components I continued building the MP3 player nonetheless.

The key components are:

  • A Via EPIA EN12000EG motherboard with a fanless 1.2 GHz processor
  • M1-ATX intelligent power supply
  • 1 GBytes RAM
  • 120 GBytes SATA harddisk
  • 40x4 LCD serial-port display (Matrix Orbital LK404-25)
  • Home made keypad
  • 2 x 100 Watt car amplifier
  • Economy car battery charger
  • Ø 12 cm fan
  • 70 Ah car battery
  • Ubuntu v. 10.10 "Maverick"


Computer Hardware

This motherboard was chosen for two reasons: firstly, the power consumption is quite low without significantly sacrificing processor speed. With a proper Linux kernel, the processor can operate at speeds between 400 MHz and 1,2 GHz on demand, guaranteeing the lowest possible power consumption and heat production. Secondly, the motherboard is fanless, that is, it includes no moving parts.

The now outdated M1-ATX power supply is capable of powering the motherboard and harddrive, and provides some features of special interest to battery-operated computers: the power supply includes an ignition connector that automatically starts the computer five seconds after the ignition is turned on. When ignition is lost, the power supply sends a shutdown signal to the computer, letting the computer shutdown safely before the power supply removes all power from the computer's power rail. This makes it possible to maximize battery life while the computer is turned off. The power supply may be configured via five switches. I configured it for the most aggressive power savings, sending the off signal to the computer 5 seconds after ignition is lost and removing power from the power rail 45 seconds later.

In addition, the power supply provides a stable supply for battery voltages between 6 and 24 Volts, and features a "delayed on" connector for the car amplifier to avoid speaker pops when the computer is turned on and off.

The harddrive was selected among a number of high-storage drives (at that time, 120 GBytes was about as much as you could get on a 2.5" notebook drive) because of its comparatively low power consumption of about 2.5 Watts.

I enclosed the power supply, the motherboard, and the hard drive between two sheets of acrylic glass (because I happened to have that; two sheets of wood or metal would have worked fine, too) separated with spacers. The version shown here includes a SoundGraph iMon receiver for IR remote control, which for some reason I couldn't get to work and therefore removed later:

Wacken PC: PC

I chose Ubuntu 10.10 as an operating system although most Linux distributions will probably work; in fact, as will be explained later, Ubuntu 10.04 would probably have given me fewer headaches. I just happen to be more familiar with Ubuntu.

A few customizations were necessary: because the motherboard apparently doesn't report the BIOS date, I had to add "acpi=force" to the GRUB_CMDLINE_LINUX_DEFAULT boot options. Also, to save power, I disabled the graphical login by setting the GRUB_CMDLINE_LINUX option to "text".

Wacken PC: Active Power ConsumptionThe specifications indicate a maximum power consumption of about 17 Watts. With Ubuntu 10.10 and no peripherals (LAN, keyboard, mouse, and monitor attached) except the LCD display, the actual power consumption is somewhat lower: 14.6 Watts according to the power supply used for development. This can be expected to increase slightly while decoding MP3 files. Once the power supply has cut the power from the motherboard, the total power consumption is about 0.1 Watts.

LCD Display

The LCD display requires a serial connection and a 5 Volts power supply. This is easily obtainable with an adapter cable sold by Canadian-based Matrix Orbital, which also manufactures the display. In spite of the warning in the LCD display manual, the cable can actually be connected directly to the floppy power connector; don't worry that the red wire goes to the floppy power connector's GND. The serial connector goes to the serial port on the motherboard.

Software

There are a variety of sound players available for Ubuntu, but without a monitor and a keyboard, I had to find one that was capable of using the LCD display together with a keypad for user interaction. irmp3 was developed with this in mind, and although I find its user interface somewhat problematic, it saved me from programming except for a bug fix and a few workarounds.

The Ubuntu repository version of irmp3 is somewhat dated, and I decided to download and build the source version from the Sourceforge tarball (.tar.gz) instead.

Ubuntu 10.10 introduced another problem for irmp3: OSS was removed from the Ubuntu kernel since 10.10, and without OSS, irmp3 cannot set the mixer levels, leaving output at maximum. I'm afraid my friends at the camp won't appreciate this setting. Attempting to install oss4-base and oss4-kpms enabled the otherwise missing /dev/mixer but instead broke audio playback, so I decided on a workaround instead, using irmp3's ability to execute shell scripts. The scripts are quite simple, and are invoked by specifying in irmp3.conf that two particular keypresses should execute one of the following two browser scripts:

#!/bin/sh

NEWVOL=`/usr/bin/amixer set Master 1+ | grep -o -e '[0-9]\{0,3\}%'`
echo "Volume: $NEWVOL" > $1


and

#!/bin/sh

NEWVOL=`/usr/bin/amixer set Master 1- | grep -o -e '[0-9]\{0,3\}%'`
echo "Volume: $NEWVOL" > $1


These two scripts, when called, increase or decrease the volume and write back the new volume in percent to irmp3 which displays the new volume on the LCD display. A proper configuration of lcdproc and irmp3 (see configuration files shortly) ensures that these scripts are called.

While experimenting, it turned out that "browser scripting" is broken, and I hacked the code to ignore what seems to be an inevitable error (the return value doesn't appear to be set anywhere). In the file "mod_browser.c", the if clause around the call to mod_browser_script( … ) should be eliminated:

    if (!mod_browser_script(command)) {
(etc.)


leaving only the call itself:

    mod_browser_script(command);
// if (!mod_browser_script(command)) {
(etc.)
// } else {
// log_printf(LOG_DEBUG, "mod_browser_exec(): Script execution failed.\n");
// mod_sendmsgf(MSGTYPE_INFO, "browser info Error");
// }


This is probably not a proper fix, but it works for me. The real culprit is likely the function that doesn't set the return value properly.

irmp3 works closely together with lcdproc, which must each be configured properly. I've saved the configuration files here: LCDd.conf and irmp3d.conf for reference. (I've now learned that apparently all the keypresses should be changed to upper-case because upper-case letters indicate a keypress; lower-case letters indicate that the key was released. The configuration files linked here don't include this modification yet.) When the computer is booted, this configuration first introduces lcdproc and then about two seconds later the irmp3 browser on the LCD display:

Wacken PC: Lcdproc Welcome
Wacken PC: Irmp3 Browser
Initial tests reveal that the first time a directory is selected from the file browser, the volume keys don't work. However, stepping back from the directory enables the volume keys, and I can live with that for now.

Keypad

The LCD display provides a connector for a 5x5 key matrix. Shorting any row with any column will produce a key from 'a' to 'z' from the LCD display. I might have been able to find some keypad, but I'd had a number of pushbuttons laying around. I soldered them onto a prototype board with 0.1" spaced stripes providing rows for the pushbuttons. By cutting the stripes and adding small pieces of wire, the columns were also soon ready. (This is pretty standard stuff, so you should be able to find descriptions on the web.)

Wacken PC: Keypad Without Cover

Car Amplifier

The car amplifier is a standard 2 x 100 Watt amplifier ready for installation in a car. It includes an ignition connector, which is connected to the "delayed on" pin on the M1-ATX power supply. All other connections to the car amplifier are obvious: power goes directly to the battery (through fuses, of course), audio input comes from the motherboard's audio out, and the speaker outputs are wired to speaker connectors on the box.

Wiring It Together

I decided to organize the battery connections in a small plastic box so that the battery would only be connected in one place. From here, I drew wires to the amplifier, wires to the M1-ATX power supply, and wires to a car cigarette lighter socket useful for powering, say, an iPod charger or a cooler box.

I decided not to connect the car charger permanently to the battery until I've measured the leak current. It may be neglectible, but I prefer to rather be safe than sorry.

The computer (and hence the amplifier) are turned on via a pushbutton wired from the battery's anode to the ignition connector on the M1-ATX power supply.

The motherboard's power switch connector is wired to the motherboard power output connector on the M1-ATX power supply. This enables the M1-ATX to simulate a power button keypress for powering on and off the computer. The fan is connected to the motherboard's "system fan" connector, serving to cool the entire box once equipped with a power amplifier.

The Box

The box itself is light-weight but solid enough to sustain the weight of a heavy 70 Ah car battery. I constructed a wooden frame with reinforcement beneath the car battery. The wooden "rail" just below the top of the frame is intended to suspend the car amplifier above the other components in the box. Metal straps suffice to fasten the charger and the battery to the box:

Wacken PC: Wooden Frame with Battery and Charger
The box was then covered with a metal mesh on one side, allowing airflow from the fan. The other sides were covered with a thin sheet of wood. I applied hinges to the top cover for easy maintenance. Computer, display, fan, and keypad have not been added yet, but there is sufficient room below the amplifier. There are loudspeaker connectors, line input connectors, and an ignition button on the side, enough to playback sound from an iPod:

Wacken PC: Box with Amplifier, Battery, and ChargerFinally, with the remaining items added, the Wacken Death Box becomes a relatively uninteresting and clearly home made piece of electronic equipment of some sort. That's how it should be at a festival, although it may accumulate some festival stickers during its lifetime:

Wacken PC: Final

Miscellaneous

The choice of loudspeakers was based on a financial shortage the week before we departed for Wacken in 2010, so they're probably a weak link. I settled with a low-cost set of car loudspeakers with no subwoofer. The MP3 player is intended for outdoor (albeit not all-weather) use where a subwoofer will require a disproportionate level of amplification and hence battery life to make any difference.

Future Work, or What You May Consider

Today I would have chosen an Intel Atom-based motherboard. The power consumption is comparable to that of the EN12000EG board but with higher processor speeds. In addition, I'm less than impressed with Via's Linux support where the current display driver doesn't allow movie playback using hardware MPEG decoding.

The movie playback option would require a small monitor, but that seems doable. I was able to locate a low-cost, low-power 7" VGA monitor for the original Wacken Death Box, but its warranty had expired before I realized it was broken. In the meantime a variety of USB monitors have emerged, and while I'm not certain whether they are capable of real-time movie playback, Linux drivers appear to exist. I haven't investigated whether these USB monitors are touch screens, but otherwise I recall seeing screen overlays providing touch feedback. This setup could eliminate the use of the display and the keypad, and with the Ubuntu Netbook edition that is tailored for small displays the user interface could be made as good as would be possible on any netbook.

I'm not too happy with irmp3. It's buggy and the browser could easily be improved: firstly, it should rely on a database of artists and albums rather than browsing a directory of files. Secondly, a 40x4 display allows a much better real estate than is provided by irmp3. Thirdly, keys on the keypad should have state-based functionality; for example, the "next" and "previous" keys used to skip songs could be doubled with the "leave" and "enter" keys on the browser, and the volume keys could be doubled with the "up" and "down" keys. MPD provides an excellent back-end for the sound server and comes with a variety of front ends. Unfortunately I haven't been able to locate a front-end based on lcdproc.

I may also want to experiment with a solar charger, but that's a rather expensive solution.

Ældre indlæg

Sider

Om dette indlæg

Denne side indeholder et enkelt indlæg af Ole Wolf, udgivet d. 17.12.2010 10:25.

Forrige indlæg: TV-duel med to vindere

Næste indlæg:Pressens og risengrødens magt

Find de nyeste indlæg på forsiden, eller søg i de ældre indlæg to find all content.