The Install (version 1)

The Processing Unit (Mk 1)
The Processing Unit (Mk 2)
The Control Unit (Mk 1)
The Control Unit (Mk 2)
The Control Unit (Mk 3)
The Power Supply (Mk 1)
The Power Supply (Mk 2)
The Software
The head unit modifications
Getting Songs To The Player (Mk 1)
Getting Songs To The Player (Mk 2)
The Installation
The Disclaimer

The Processing Unit (Mk 1)

Outside The main unit is built on an socket-7 embedded PC motherboard in a small aluminium box (12"x6"x2"), with power supply and hard drive all in the same case. It was done this way to keep things neat and compact (at least with the lid on :-). I didn't want to mess around with external power supplies or power converters. The processor is a regular P233 MMX, underclocked to 210MHz to reduce power consumption, with 128Mb EDO ram to keep it happy. The chipset on the motherboard is a TX chipset with 512Kb pipeline burst L2 cache, so the whole thing runs pretty quickly.
Inside The internals are slightly messy, partially due to the cramped enclosure, and partly due to it being the prototype. The case (available from Maplin) is a perfect fit for the embedded motherboard. Some space was left at the end, enough for a small switched mode power supply to convert the 14V to 12V and 5V for the system. The 6.5Gb Hitachi 2.5" laptop harddrive fits perfectly between the processor and IO connectors, slung from a piece of stripboard, fastened by a couple of fuse clips on an old PC chassis rail and fixed on the other side with stacked PC standoffs and a cheesehead screw. The harddrive is attached via three large rubber grommits in an attempt to protect the drive from shock. 2.5" drives are a lot better than 3.5" drives for resistance to shock, but they can still use all the help they can get.

The Processing Unit (Mk 2)

Outside There was quite a lot of space at the end of the case, especially after the smaller mk2 power supply was built. With the mk2 power supply, the efficiency went up, the heat went down and the power supply went over the motherboard. This pretty much rendered the space at the end of the case completely empty, and so I reduced the length of the case. The case was reduced to 8.5"x6"x2" with no loss of functionality (in fact it gained an infra red receiver). With the increase in efficiency of the power supply I could afford to increase the processor clock back up to the full 233MHz.

The Control Unit (Mk 1)

Lid off Inside The control unit is a 128x64 LCD and four buttons in a gameboy sized case. The whole thing hooks up to the parallel port, and has a small amount of TTL (yep, I'm still into that...!) interface logic. It's a tight fit, I will eventually come up with a PIC solution, and build in infra red at the same time. The display module itself is quite neat. It is based on the Toshiba T6963C controller chip, and has graphics and text planes, which can be combined in a variety of fashions. It also has some spare memory to store user character sets.
Pick a CD Pick a Song Here are some shots of the system in action, specifically the control unit. On the left is the CD list (I now have 88 CDs loaded and I still have room for more). On the right is the song list. Only the three left hand buttons are active, and the legends change on the screen depending on the mode that the player is in. The system should hold around 100 CDs once it is full. I really do need to come up with a better menu system for the CDs - scrolling through 88 CDs is no fun.
LCD interface logic There was a small amount of interface logic required for the 128x64 dot matrix LCD. This allows a parallel port (modified to supply +5V power) to power and drive the LCD. The NME0512S generates a -12V supply which is dropped by a zener to drive the contrast input. The 74LS245 buffer allows bidirectional data on the LCD bus, and the 74LS08 combines the status bits into one bit for reading by the parallel port (by this time, I was running out of signal lines). The port buttons are momentary types, with 1k pull-up resistors. The unit worked, but suffered a small amount of data loss (screen corruption is visible in the screen shot above). For the most part it was pretty much unnoticable though.

The Control Unit (Mk 2)

Nicer display They won't electrocute you - honest Eventually I finally decided that the LCD display had to go. It was difficult to see sometimes, and was awkward with it being on the end of a parallel cable. I switched it for a Futaba 20x4 Vacuum Fluorescent Display (VFD). I still have the buttons to sort out, and some of the cabling, but the display is a nice fit in the flip down ashtray under the radio. The VFD is hooked up directly to the parallel port using a 4 bit interface to keep the number of wires down (I use 8-core cable which does power, data and control wires). The buttons are also attached to the parallel port, and provide up, down and play options for the menus.

The Control Unit (Mk 3)

UIR Remote The buttons had to go. They were untidy and I couldn't work out a nice way to integrate them with the dash. I built a Universal Infrared Receiver(UIR) and put this in the case - less wires to disconnect when removing the unit for use in the house, more buttons to work with and the possibility of any one in the car being able to select songs (even from the back of the car). The UIR fits nicely on the side of the hard drive bracket. The circuit board layout can be seen on the same sheet as the Mk2 power supply below.

The Power Supply (Mk 1)

The new compact DC2DC The new compact DC2DC The PSU is fairly conventional, a 2A 7812 to drop the 14V to 12V for the motherboard, and an L296 based switcher for the high current 5V supply. For this motherboard, the 12V line dropping out occasionally due to low headroom on the 12V linear regulator doesn't seem to be a problem (I suspect that the 12V is primarily used for powering the audio circuitary on the motherboard - the HDD requires only 5V). Fortunately the motherboard had efficient switching supplies for the processor voltages, so 5V supply current wasn't astronomical. The supply has been measured to consume less than 2.5A at 14V when the computer is running, and the system draws about 3.8A on the 5V line. The 12V requires are negligible (the laptop harddrive helps out here, the 12V probably only spins the processor fan and powers a small amount of serial port and audio circuitary).
The PSU schematic The PSU pcb The schematic can be seen by clicking on the image to the left. The PSU is very compact, being built on a circuit board 2.3" x 2.7". It includes the relay to allow the head unit to switch the unit on (see head unit section below for details). The same unit is used when running the mp3 player in the house too. The use of an unregulated mains power supply feeds approx 15v into the dc2dc supply and the unit operates as if it were in the car. The use of two extra pins on the Neutrik Speakon connector shorted only on the house supply connector allows the switch on relay to be bypassed in the house configuration (whilst still affording the protection of the fuse which is upstream from the relay). This is necessary since there is no head unit to supply this signal, and I didn't feel like providing a nice stabilised supply for driving the relay.
Outside Inside The unregulated mains supply was built from a car battery charger transfomer and a capacitor bank (to smooth the rectified ac). It was all recased for neatness. It is therefore capable of supplying large amounts of current (8A approx - not that it needs it) at a sensible voltage for feeding the dc2dc converter. The fan and heatsink are necessary to keep the bridge rectifier cool at the high currents required - the bridge rectifiers dissipates some 5 watts with the unit running, but with the heatsink and fan everything stays nice and cool. The underclocking of the processor helps further.
For the Mk 1 power supply, the main processor was underclocked from 233MHz to 210MHz. Dropping the FSB from 66MHz to 60MHz seemed to have most benefit (leaving the clock multiplier at 3.5). The power consumption on the 12v and 5v lines for these clock rates were measured as shown on the right. You can see that the win is significant for only a small drop in performance. The decoder runs with about 20% cpu utilisation even at the lower clock frequency, so I have plenty of cpu spare.
Clock rate
5v current
12v current
233MHz (FSB=66MHz, Mul=3.5)
3.8 A
0.38 A
210MHz (FSB=60MHz, Mul=3.5)
3.49 A
0.38 A

The Power Supply (Mk 2)

The ISR supply The ISR board The ISR supply The new power supply is slightly larger overall, but uses ISR modules for both 12v and 5v rails. This improves the power delivery capability and the efficiency considerably. I used a PT6625 for the 5V and a PT5071 for the 12V section, both from Texas Instruments. Each of these devices has an enable input, so there is no need for a separate relay. Also on this board is the logic for the aux-in switch selected by bits 0 and 1 of the parallel port. The board itself sits over the motherboard. The schematic is on the left and the unit and PCB design (along with a UIR layout) can be seen on the right.

The Software

The Ogg Vorbis and MP3 codecs chosen for my player are the libvorbis and mpg123 modules. Both were ported to DOS, and a frontend written to take care of playlist loading, display handling and the input device.
The frontend simply presents a list of CDs (playlists) and then plays the selected one. The playlists are built as a binary file from the ID3 and Ogg Vorbis info in the songs. The binary file is much faster to load than parsing each song file individually, and allows the entire playlist information to be available immediately on boot.
The frontend also takes care of streaming the songs into memory. At any one time, there is at least one whole song ready for play, and sometimes as much as two. This means that there is never any skipping, and the hard drive can be shut down between songs reducing the risk of head crashes. At some point I plan to increase this caching to load as much as possible (perhaps a whole CDs worth).
The sound chip on the motherboard I selected provided SoundBlaster compatibility. Unfortunately the sound quality wasn't up to the required standards. To get CD quality output I had to write a native ES1869 sound driver. This enabled me to get to the 44100 Hz 16 bit stereo output that this chipset offered.
Boot time is around 25 seconds from power on to music playing. About 20 seconds of this is the motherboard POST, the remaining time being taken to boot DOS, and load the player and binary playlists.
The software is compiled on the player box itself, using Watcom 10.5, and the DOS extender is dos4g. I did start out with djgpp, and the cwsdpmi server, but ran into virtual/logical/physical address mapping problems when putting together the DMA transfer routines for the sound chip driver. Usually I code for other platforms at work, it had been a long time since I had done any DOS work, and I don't mind admitting I was a bit rusty.

The head unit modifications

Head unit mods Head unit mods I have modified the head unit to provide an aux in input (switched by an internal relay to be driven from the parallel port). The audio signal is switched at the input to the TDA7348 audio processor in the head unit - the original audio processor inputs are routed to this circuit, along with aux-in and a switching signal, and the output is then routed into the audio processor. A ground loop isolator is used to eliminate the alternator whine which is caused by the difference in grounding points of the computer and the stereo (the ground loop isolator is internal to the head unit on the final modification, so causes little trouble).
Head unit mods Head unit mods I have also modified the head unit to provide a power on switch for the PC. This switches the PC on whenever the head unit is on. Since the head unit can be switched on with a 1 hour timer without the ignition being on, it means that the mp3 player is not reliant on the accessory line for power. This has the useful side effect of preventing reboots whilst restarting the car (the accessory line switches off whilst cranking). I picked off the power switch signal from the amplifier chip (a TDA7372A in the CAR300 stereo modified here) and used it to drive an open collector transistor capable of switching a relay. The schematic to the left shows the circuits used to make the modifications. Again this board was eventually built on a custom circuit board and mounted securely in a convenient empty space inside the CAR 300 unit.

Getting songs to the player (Mk 1)

Data is transferred to the system using a laplink like solution. A standard 25-pin D-type all-pins-connected parallel cable (male to male) is combined with a cross-over circuit constructed in a breakout box. Then receive software is run on the target (mp3 player), and transmit software run on the host (the pc containing the mp3s). The music is then transferred across the parallel cable at a rate of approximately 3Mb/minute (each byte is transferred as two nibbles). The transfer software is available in the downloads section.
25 Pin D-type Male
25 Pin D-type Female
2
15
3
13
4
12
5
10
6
11
15
2
13
3
12
4
10
5
11
6
21
21

Getting songs to the player (Mk 2)

The parallel link was found to be very slow, and occasionally unreliable. Since I had bought a motherboard with a fast 100BaseT network card on board, I decided to investigate DOS drivers for it. With a little info from www.wown.com I was able to install the NDIS drivers supplied with my motherboard under DOS. I now can mount a shared drive from my home PC and transfer files both ways much faster.

The installation

Installation When the lid is on, and it's sitting on the shelf, you'd hardly know it was there...! And I've since sprayed it matt black, so it's even less noticable. The fan gives off a slight whirr when running, and you get a quiet beep from the BIOS as the system comes up, but other than that, it's fairly unobtrusive. I never really found much use for that crazy little shelf before anyway. The ugly wires hanging out all over the place were a temporary thing (this is an old picture). The power lines are now not visible at all, the tape adapter is not needed with the aux in mod on the head unit. The keypad has been replaced by an integrated IR receiver. There are now no visible wires.

Disclaimer

I TAKE NO RESPONSIBILITY FOR ANYTHING YOU DO TO YOUR OWN CAR OR STEREO SYSTEM USING THIS INFORMATION. THIS INFORMATION IS PROVIDED PURELY AS A GUIDE TO WHAT I DID TO ACHIEVE THE EFFECTS I DESIRED, NOT AS INSTRUCTIONS FOR OTHERS TO FOLLOW.