Home Engineering Publications
Engineering Projects: CAVE, A Car MP3 Player

Alternate, equally out-of-date site.

Player & Head Unit
CAVE player rendering


CAVE stands for Compressed Audio for Vehicle Entertainment. CAVE is a hard disk-based MP3 player that can play audio files from FAT32 disks written on a Windows PC. The player unit uses a removable IDE hard disk tray. The caddy can be removed from the vehicle and placed directly into a drive slot on a PC, or into a special USB dock so that new songs and playlists can be loaded onto the drive. A custom head unit with a large graphics LCD and an off-the-shelf Sony "stick" type controller are used to control the player. An infrared receiver has been added, making it possible to control the player using any infrared remote control. In the future it will also be possible for the passenger of the vehicle to use a Palm Pilot or other PDA to navigate the music library and cue songs for playback. An FM tuner option has also been prototyped, providing a complete solution for those with no existing radio in their vehicle.

The core of the player unit is a Dallas Semiconductor DS80C320 enhanced 8051 with a Waferscale PSD813 for Flash program storage and other necessities. A Micronas MAS3507D MP3 decoder IC with a DAC3550A digital-to-analog converter are used for MP3 decoding and playback. The prototype player was constructed from a Waferscale PSD evaluation board and an evaluation board for the MAS3507D from the now-defunct company IMBDEV. The head unit prototype is constructed from a smaller Waferscale PSD evaluation board and an Optrex RGB color 240x64 LCD with a SED1353 graphics controller and a touch-screen.

The project is a collaboration between Steve Richardson (firmware & hardware design & debug, prototype construction) and Bill Groves (hardware design & debug).


  • Uses removable 3.5" hard disks for up to 128GB (approximately 100 days non-stop at 128kb/sec)! Consider that at the time of writing that 30 gigabyte hard disks are selling for about $100!
  • Removable hard disk carrier inserts directly into PC or into external USB caddy for easy management of your song library. The disk uses the standard FAT32 filesystem for PC compatibility.
  • Supports up to 256kbit/sec MP3 playback in the prototype. Production version will support up to 320kbit/sec. All versions support variable bit-rate MP3 files.
  • Volume, bass, treble are adjustable. Auxiliary inputs allow you to connect other devices or connect the CAVE player in a pass-through fashion, in-line with your existing CD changer.
  • Custom switch mode power supply allows operation from 8-16VDC. Protection is included for automotive power (protects against double battery, reverse polarity and load dump). This is in stark contrast to some commercially available units which actually supply the hard disk with the unregulated 12-14.5V voltage from the vehicle!
  • CAVE follows the paradigm of an in-trunk or under-seat CD changer. The player unit contains the electronics for reading the hard disk and playing audio. The remote head unit, which can mount in or to your dashboard, controls the player. Various head units will be available, encompassing the range from a simple alphanumeric LCD to a full-color 240x64 graphics LCD with touch-screen.
  • Varying degrees of information display are possible with the head unit. Artist, track, album, color thumbnails of album covers, etc. are all supported.
  • Many control sources are supported, including: Sony RM-X4S steering column controller, Sony CD player infrared remote controls and Palm-compatible PDAs. In addition the head unit offers softkeys or a touch screen.
  • Sonique playlist files are supported. The PC management software will likely use one of these formats for its internal playlists.
  • Random-play with an adjustable no-repeat feature is planned. This will allow the user to set a window of 2 to 50 songs during which no repeats are allowed.
  • Your music library is managed via a Windows, BSD, or Linux application. Playlists are created manually and automatically (e.g. auto-generation of genre playlists). Eventually "smart agent" type software is envisioned, where the system will automatically download new music from the internet and load it on to your player.
  • FM Radio has been prototyped and tested, and may be a possible option in the production units.

Development Log

  • April, 2001 - Presently working on the new player design.
  • March, 2001 - Designed and manufactured the color head unit PC board. Here are two PCBs attached to color displays, ready to go into the enclosure.
  • February-March 2001 - Schematic capture and PCB design for color head unit controller PCB.
  • December 2000-January 2001 - Took a break from Development.
  • November 15-30, 2000 - On vacation. Rented a car with a NeverLost GPS system. Took some pictures of the unit for mounting ideas, etc.
  • November 5, 2000 - Built an adapter socket to add 32KB of SRAM to the prototype head unit PCB. Now it should be possible to further prototype features using real code instead of kludgy prototype code. Changed the play screen stuff so it looks pretty slick. Next up is a major design-fest and re-coding for the head unit to player communications.
  • November 4, 2000 - Re-connected the development system and brought the old kludgy firmware up-to-date with the color display drivers. Only infrared control is available at present (need to build the touch screen interface circuit).
  • September 25-November 3, 2000 - Took a break from development.
  • September 18-24, 2000 - Working on mechanical design for the player. Produced a rendering showing the drive being removed and another rendering with the drive installed. The blue part of the case and the end panels are aluminum. The drive bay and MP3 printed circuit board mount inside of the case.
  • September 16, 2000 - Mocked up touch screen keypad to verify size of on-screen keys. Seems to be reasonably sized to have a full QWERTY keyboard implemented on the touch screen. This will be used for searching for artists/tracks.
  • September 10, 2000 - Successfully rewrote proportionally-spaced font rendering routines. Most of the elements are now in place to re-build the head unit with the color display for actual operation. Until now it has been used standalone to develop code for the display.
  • September 9, 2000 - Experimented with album cover thumbnail display (see screenshots above). Results are very encouraging. Due to limitations with the configuration of the display controller, only 16 colors are available on-screen at any time. Fortunately the palette can be chosen from any of 4096 colors, so with some creative color reduction techniques, an album cover can use 14 custom colors plus black and white (used for text display on the left of the screen). It won't be possible to display the 'skins' while album covers are on-screen because of the color limitations. The best example is probably this RHCP album cover. Some covers such as the Orbital cover have too many colors to look good. In cases with too many colors, perhaps the detail of the picture would be more useful instead of the colors. Conversion to greyscale is a possibility.
  • September 7, 2000 - Received the color displays for the head unit today. I connected one onto the eval board I was using for the head unit (after removing the old monochrome display). With a little bit of code I was able to get some simple graphics to work. I then wrote a simple font rendering routine to display 6x8 fixed-width fonts with adjustable foreground and background colors. Once the simple font rendering routine worked, I moved on to graphics, specifically the CAVE logo that's at the top of the page (thunked down to 16 colors and converted with ImageMagick Convert and a custom C program). The pictures don't do the display any justice, really.
  • September 3, 2000 - Progress is good on the schematics for the first real board design. The intent is to produce five boards to test out the design and work out any remaining bugs. Once these five have been produced and debugged, additional boards may be made depending on the level of interest from friends. The first boards will support both the MAS3507D and the STA013 MP3 decoder ICs.
  • August 28, 2000 - Tested 60GB Maxtor disk with only half-success. Must investigate power supply issues. Constructed astable multivibrator circuit for Sony RM-X4S wired "stick" remote controller. Connected to micro in head unit, wrote code. Controller is working as expected, returning unique codes for each stick position. Head unit can now be controlled from stick controller, an infrared remote, and the front-panel softkeys.
  • August 27, 2000 - Infrared remote control support added, working with existing head unit and software in a primitive fashion. Advanced features will come with protocol and code re-design. At this time only Sony remotes are supported.
  • August 26, 2000 - Demo for the "investment board" (i.e. a bunch of friends) at Purgatory Chasm.
  • August 25, 2000 - New power supply prototype board solves "skipping" problems due to noisy power supply. Tighter parts placement and a ground plane on the entire rear of the PCB helped. Need to find extremely low ESR/high surge current capacitors to further improve design. Many lessons learned for final board layout. The +3.3V and +5V supplies now reside on their own board. Lots of bench-testing took place to get this working.
  • August 14, 2000 - Road testing player during commute to/from work. "skipping" problems in playback. After much diagnosis and investigation it seems to relate to power supply noise on the 12V-12V DC-DC converter.
  • August 22, 2000 - Ran CAVE off of two 6V 10Ah lead acid batteries for over an hour. Conservatively it should run for at least 6-8 hours on these batteries. MP3 boom box anyone?
  • August 21, 2000 - Implemented a super-cheesy protocol for head unit to player communication. It's now possible to navigate the directory structure and play songs and playlists from the head unit.
  • August 14, 2000 - Removed command-line debug interface in favor of a VT100 single-key-driven interface. Much easier to use from the Pilot.
  • August 9, 2000 - Implemented C stdio library functions for fopen(), fclose(), fread() and fgets(). Wrote code to read and play Sonique playlists using these routines. This makes it easier to use the Pilot as an input device since it reduces the amount of interaction necessary.
  • August 8, 2000 - Many bug fixes to FAT32 code fixing issues with deleted files, returning to root directory, etc.
  • August 6, 2000 - First mobile test using Palm Pilot for control. Successfully played two songs on trip from home to a gas station and back. Command line interface is very cumbersome to use via Pilot. To get audio into my stock Mazda radio, I reverse engineered some of the pins on the back of the radio to get a line-level input for the CAVE player.
  • August 5, 2000 - Connected power supply to prototype, seems to work in the lab.
  • August 4, 2000 - Constructed first power - very noisy, but will test anyway.
  • August 2, 2000 - Power supply prototyping components ordered from Digikey
  • July 31, 2000 - Samples of Linear LTC1775 finally received.
  • July 19, 2000 - Ordered samples of Waferscale PSD835G2, a larger package version of their PSD8xx series. It should be possible to implement the IDE interface in this part in addition to using it for flash program storage, battery-backed SRAM (for resume feature), and general peripheral decoding logic.
  • July 16, 2000 - Put unit into Hammond Manufacturing plastic case. The front of the unit has the removable drive bracket and the rear of the unit has the audio, power, and serial connections. CAVE web site goes online!
  • July 12, 2000 - Saw another MP3 chipset from ST at their booth at the Boston Embedded Systems Conference.
  • June 30, 2000 - Found Linear LTC1775 and a great application note for a high-current 12V to 12V DC-DC converter. Ordered samples.
  • Late May/Early June - Took a break from development
  • May 13, 2000 - Wrote proportionally spaced font rendering routines for a nice 240x64 monochrome LCD. This will be similar to the display I end up using in the head unit. These pictures are just mockups of what the interface might look like.
  • May 2, 2000 - Sony "rotary commander" stick controller received and reverse engineered. Unit "outputs" various resistances depending on which switches are activated. Strange, but fairly easy to interface with.
  • May 1, 2000 - I2C communications from microprocessor to MP3 decoder chip and DAC working. FM tuner now connected through DAC's auxiliary inputs.
  • April 30, 2000 - Prototyped FM tuner using a Philips evaluation board. Able to receive many stations with no antenna and shielding, and many more with an antenna and a shield.
  • April 28, 2000 - Optimizations to the interface for the MP3 chipset (using synchronous serial mode with the internal UART) allows for 320kbit audio playback from contiguous files on FAT32 disk.
  • April 26, 2000 - 128kbit audio working from IDE disk (FAT32, but playback not following FAT - assumed contiguous files)
  • April 25, 2000 - Constructed new IDE interface on a Waferscale PSD8xx/8051 evaluation board. Ported old code to new board.
  • April 18, 2000 - First sputtering bits of audio (Toad The Wet Sprocket's Amnesia encoded at 56kbit) from MIDIbrick/IDE kludge.
  • March 29, 2000 - Kludged an IDE disk onto the MIDIbrick development board. Able to read/write raw sectors.
  • August 1999 - Received IMBDEV eval board for Micronas MAS3507D & DAC3550A. Runs bit-banged from PC parallel port.
CAVE: Compressed Audio for Vehicle Entertainment
Remember - When you Pirate MP3s, you're downloading Communism!
Page last modified:
Copyright © 1993-2022 prefect - All Rights Reserved.