Topic: Chumby-based car music player

I got a Chumby One a couple of months ago and have been tinkering with it and reading this forum since then. I got a lot of helpful tips here and thought I would post the results of my efforts.

Basically my plan was to use the Chumby board to replace my reliable (but aging and relatively bulky) Car PC that was based on a VIA mini-ITX board that I use to play music. Here's what I ended up with:

https://dl.dropbox.com/u/19486859/IMG_5960.JPG

The board fits neatly in a cassette case, which I think is apt since these things used to hold about 1 hour of music. Now this one holds several days of music and also holds the equipment to play the music! I use the Chumby's top switch as a "power" button (seen on the left side) that can switch the LCD and USB hub off, put the system in a low power "standby" mode or power it off completely.

It runs a Linux/Xfce image built with Open Embedded. The playback app is of course XMMS. Since the XMMS window is too small for the LCD screen I also added a simple gtkdialog-based app to control XMMS, display status and browse files. You can see it below the XMMS window, or more clearly in this picture:

https://dl.dropbox.com/u/19486859/IMG_5961.JPG

The playback can also be controlled with an X10 remote using a serial RF receiver plugged in to the USB port. Thanks to pre-generated festival speech files, it can also announce titles of songs.

The whole thing is powered by an automotive mini ATX power supply (from http://www.mini-box.com)  that can survive engine cranking. Total 12V power consumption is 175 mA when playing with the LCD on, and 55mA when in "standby" mode. At that level I can leave it plugged in to the car battery and instantly "resume" it even a day or two later.

Attaching the LCD screen in a safe manner was a little tricky. The flexible cable is secured with a couple of layers of transparent packing tape.

https://dl.dropbox.com/u/19486859/IMG_5947.JPG

All in all I think it's a great upgrade from my old mini-ITX box. Many thanks to all the posters on this forum who provided all the answers to my questions (which I didn't even have to ask!). And of course thanks to Bunnie and the Chumby team for producing a great hackable platform and opening it up!

Re: Chumby-based car music player

Awesome hack! Now you need another Chumby for the home.

Tar, feathers, congress. Some assembly required.

Re: Chumby-based car music player

BoloMKXXVIII wrote:

Awesome hack! Now you need another Chumby for the home.

I already have! I have an old P166 PC I use as a music player client in my bedroom. Planning to replace that with a Chumby-based solution soon.

Re: Chumby-based car music player

This little CPU can run Blursk! (a music visualization plugin for XMMS)

https://dl.dropbox.com/u/19486859/IMG_5977.JPG

Re: Chumby-based car music player

Awesome! Did you compile on the Chumby itself or did you cross-compile?
Are you going to post your code so others can see how you did it?
-dan

Re: Chumby-based car music player

I didn't compile on the Chumby itself; I cross-compiled on an x86_64 machine. Not sure what the benefit is in compiling on the Chumby since cross-compiling lets you use a beefier machine. Even on my x86_64 machine it took almost a whole day to get everything built!

I didn't really add a lot of new software to make it work. Here's a high level rundown:

I started with the xfce46 base image from OpenEmbedded

http://wiki.chumby.com/index.php/Buildi … %28Beta%29
http://www.openembedded.org/index.php/O … tro#Ubuntu

I then added on more packages as needed, including:

wireless-tools_29-r5.9_armv5te.ipk
wpa-supplicant_0.7.3-r7.0.9_armv5te.ipk
xmms_1.2.10-r7.9_armv5te.ipk
xmms-mad_0.10-r0.9_armv5te.ipk
xmms-tremor_1.0-r1.9_armv5te.ipk
xmms-crossfade
gtkdialog

Note that the default xmms plugins for mp3 and ogg (xmms-plugin-input-mpg123 and xmms-plugin-input-vorbis respectively) do not work very well as they make heavy use of floating point calculations and the Chumby ARM CPU does not have an FPU. xmms-mad and xmms-tremor are friendlier replacements. There were a couple of minor bugs that I had to fix in those packages.

I had a LOT of trouble getting the touchscreen to work right with the default X server (xserver-xorg and xf86-input-evdev). Finally abandoned it and got it working with the kdrive X server (xserver-kdrive-fbdev_1.5.3).

I use an aufs overlay to avoid writing to the flash every time on boot. This was based on:
http://www.logicsupply.com/blog/2009/01 … ux-system/

The kernel doesn't support suspend to RAM so I ended up using the tips from this post to get a "pseudo-suspend" state:
http://forum.chumby.com/viewtopic.php?id=4533

As I already mentioned the Chumby's switch is used to control the power state.
I also use the Chumby's rotary encoder (volume control) to seek within music tracks or to skip between tracks.

To read the switch and rotary encoder and to detect touchscreen events I use the device nodes in /dev/input/. You need to read 16 bytes at a time, which you can easily do with 'dd'.

I did write a few scripts to glue everything together:

- a gtkdialog/bash script to provide a touchscreen-friendly user interface to xmms
- a script to determine which window is on top: the gtkdialog interface or xmms/blursk. Basically the blursk window is like a "screensaver" that stays on top when there is no activity on the touchscreen. When the touchscreen is pressed the gtkdialog window is brought to the foreground until the touchscreen is inactive for 10 seconds, when blursk is brought forward again.
- a script to monitor the power switch and transition between various power states.

Lastly I use the x10mp3 plugin for xmms (http://x10mp3.sourceforge.net/) - this is a plugin I contributed to a long time ago and since then have been customizing extensively for my Car PC needs. Currently I use my modified version  to allow browsing of the music tracks using the arrow/OK keys in the gtkdialog interface.

I am open to posting all the code and instructions online if people are interested in it. I could also make my final xfce image available so anyone can try it out without going through all the steps.