Empeg networked audio streaming

Posted on in software, articles with tags systems.

The Empeg is (was) a car stereo audio device created by Empeg Ltd of Cambridge in 1998-99. It was later renamed the Rio Car when Empeg Ltd were acquired by Sonic|Blue. Unfortunately, the line was EOLed in 2001; only around 4300 were ever made. I have a Mk2a, serial number 10102115.

The device features a StrongArm 1100 running linux, decent DACs presenting as phono outputs, a 2.5” hard drive, a 128x32x2bpp VFD, a 10Mbit ethernet port, a remote control, and a player application supporting (amongst other features) playlists, searching and a host of visualisations. Being intended for the car market it came with a docking sled, though mine has only ever been in my hi-fi stack.

There is however a burgeoning owner community, many of whom tinker with the Linux-based software on the device. See: http://www.riocar.org/, http://empegbbs.com/ and http://www.empeg.mars.org/.


So, where is this leading?

Take the Empeg. Rip out the hard drive and teach it to nfs-root off a server on my LAN. On that server, run the DisOrder jukebox software in its brand shiny new (as of 2007) RTP streaming mode. So the empeg can live on in my hi-fi stack, but play selected tracks from my master music store (which, incidentally, has grown to be larger than the hard drive in the Empeg), and I’ve done away with the hassle of the Empeg’s faffy synchronisation software.

Phase 1, therefore, is to port the relevant client bits of DisOrder to the empeg. Unfortunately, the empeg doesn’t have ALSA - only a slightly idiosyncratic /dev/audio - so this isn’t just a cross-compile.

Phase 2 will be to add a display on the empeg’s VFD using one or other of the disorder client interfaces showing what’s playing and perhaps what’s next.

Phase 3 will be to tweak the empeg environment so this code autoruns on boot instead of the empeg’s own player.

Phase 4 will be to add a degree of control to the interface so I can scratch tracks, manipulate the playlist and perhaps even search for tracks to queue.

Cyrillic fonts


When it goes wrong...


30/9/2007: Phase 1 completed. The empeg plays a near-flawless RTP stream, even though its 10Mbit ethernet is close to maximum realistic bandwidth (44kHz stereo 16-bit samples come to about 1.44Mbit/s, allowing for ether+IP+UDP+RTP headers).

1/2/2008: To a working approximation, all four phases are now complete to a basic level. I updated to disorder 2.0.x, at which point rjk had merged my changes; I have a great RTP audio stream, the current track name displays, the player and displayer run on boot instead of the empeg’s own player, and I even have play/pause/scratch from both the front panel and the remote.


  • Cyrillic fonts Done (pictured).
  • View playlist Done.
  • Menu system to allow configuration and simple track selection
  • Edit playlist?
  • Visualisations, presumably requiring me to merge in rtp playback
  • New (animated?) bootup logo to flash in (I’ve created an animation for when the player starts up, this would be for when the device low-level boots)
  • Some sort of support for iTunes playlists, or at least something similar. (This is really a DisOrder feature more than disoblige on its own, though it might dovetail nicely with DO’s existing tag support.) I make heavy use of smart playlists for my iPod, filtering both by genre and track preference; I would like to either autosynch these playlists such that DisOrder can play from them, or implement some similar feature natively in DO. Perhaps this would be a constraint on “random play” mode, in that one would say “random tracks from this list”, or perhaps playlists could appear in the track selection interface, be selectable from and queueable (optionally in random order).

N.B. I used to publish a bzr repository here, but it became obsolete after rjk merged in my changes. It may yet reappear if I start making nontrivial internal changes.