[Skip to the Specs] - [Skip to Changelog]
Drop me a comment

The Evolution of an Idea

For some time I wanted more than just an MP3 player in my car. So, with brain in gear, and throwing sanity to the wind, I began working on my car computer. The obvious choice of an operating system is Linux for various reasons (custom kernel for fast booting, ram disk, easier access to machine functions, I'm comfortable programming in it).

Of course, the first thing that a Linux computer for the car needs is a name. As the computers on my network are all named cat related names (purr, pawz, prowl, catseye, catnip, kinich ahau) a suitable name for the car computer was chosen : Meow.

The next step would be to find a computer small enough to easily build into the trunk of the car. I had initially thought of buying a SFF (small form factor) desktop machine, as it was closest to the size of a trunk-mounted CD changer. I have a machine known as an Iopener, which I originally bought for this purpose, but ended up finding other projects for. A laptop computer was also a good choice, as it's designed to be mobile.

So, one day I get a call at work, Takaza, a good friend has found just such a laptop, and is sending it out my way by special delivery (Thanks for giving a hitchiker a ride Duncan). It just so happens this laptop is a common model, a Dell Lattitude CPi 300. I have one of these at home, that I got at an auction at work (It worked fine, but had cracked case plastics, and non-working caps/numlock lights). It's also the same laptop that my mom has. Excellent, I can use the extra parts from the car computer to repair the one I already own, the remaining parts can go into a box to be used as spare parts to fix mine or my mom's in the future (Spare parts are the key to being a geek, you never know what you'll need).

Somewhere along the way I picked up a docking station for the Latitude, this allowed me to hook into the power button without having to specifically modify the computer itself.

While I now have a working version of the car computer software, I'm of the belief that there's always room for improvement. I will keep updating this page as I add new things.

Done In Progress Planned (not started) Not Doing (At this time)


Dell Latitude CPi
PII 300mmx
128mb RAM
6GB Harddrive
Modified dock - power button
Needs a battery for the Laptop to assist with powerdown.
By happy accident I found out the computer playing for 8 hours will not drain the battery in the car enough to prevent it from starting.
GPS - Radioshack Digitraveler (Serial GPS unit)
Car-Power Controller
Power the computer up when ignition is turned on
Monitor the voltage of the battery (prevent draining of the battery if the engine is not running)
Power off with the ignition switch
This one :
uSDC20D - Well built, functions perfectly.
20v @ 3A for the laptop (Modified car laptop adapter)
6v @ 1.6A for the USB Hub & GPS
Wifi Network
Write a cleaner interface to setting up, and auto-finding WIFI access points.
Access point - (play games between cars, link 1 cell phone to all passengers)
Sync files to my home network
Wireing - Wires, everwhere throughout the car!
USB - To the front of the car, for interfacing with control units, memory cards, etc
12v Always On - From the always-on of the radio (fused)
12v Ignition Switched - To tell the Power Module the key is on (fused)
Audio - FM Modulator in the trunk, to add a radio station for the computer. Channel 87.7 It broadcasts about 150-200 feet away from the car as well.
Car Computer interface (To the onboard diagnostic system) - I seem to have found good deals on this technology, and will be adding it eventually.


Debian Linux install
Apache (Webserver)
Configuration of the system
Control of the MP3 player
GPS Logging system
Weather Reports (based on Latitude/Longitude)
Perl - Brains of the system

Custom modules:

process_monitor - Monitors all car computer functions, and re-starts as appropriate
data_hub - Centralized hub for all the car apps to communicate through
mp3_daemon - Controls the play of MP3's in xmms
monitor_gps - Monitors the GPS data stream, logs, waypoints, etc
speak_daemon - Speaks using flite
Data Hub (Diagram/Notes)
Distributes data to and from seperate system processes.
Each connecting program sets a channel to listen to, then when a program sends data through the hub, it passes it on to whichever program is listening to the channel tagged in the data. I'm told that this is offically a de-multiplexer.
(* designates modules that talk to data_hub)
MP3 player*
Plays mp3's via XMMS
Manages playlist and shuffling
Interface to outside control programs
Track which songs are skipped or jumped to, assign a score
Handle multiple playlists (Right now I just have 1 master list)

GPS Monitor*
Listens to incoming GPS data from GPSD
Logs trip data
Detects proximity to stored landmarks
Calculate speed (It does now, but isn't right)
Store landmarks (currently need to enter this manually)

Speach daemon* (What's the point of having a car computer if it can't talk to you)
Perl wrapper for Flite.
(Flite - Festival LITE voice synthesis)
Mutes all other sound sources (MP3, etc) before speaking, and restores them afterwards
Software to retrieve local weather forcasts based on current position.
Uses data from NOAA National Digital Forcast Database
Should speak a weather forcast when it is retrieved, or on command.
Predictive course plotting, and waypoint weather forcasts. (AKA what will the weather be when we arrive)

Changelog / Notes

Decided to add this section for those keeping track of what's happening on the car computer.


With a new van, I re-started the project. No longer do I need to hide the computer in the trunk, I have no trunk. So I had to brainstorm a new location to keep it hidden, but accessable. Between the front seats seemed ideal, I build (rough use of the term) a carpet-covered box to fit snuggly between the seats, and house the computer. It's big enough where I can swap to a mini-ITX or a different laptop if I need to in the future, for now the PII/300 is doing everything I need, and costs almost nothing to replace if it dies. I mounted 2 antenna's on the roof-rack of the van, one for Wifi and the other for Cell (CDMA) this will allow me to share Wifi from my cell phone's connection from further off the beaten path. The new FM injector had a quirk, whenever it was on, it would cut out the antenna with a relay. Since it was going to be always on, this presented a problem. A little soldering and now the antenna is always connected. The GPS is almost working again after switching models several times. I am able to dial the internet through my phone, connected to the carcomputer via bluetooth and share that connection over the WIFI. The weather forcasting software will pull a forcast for the current location (when entered manually). There's more to do, and the project keeps moving forward a little bit at a time. Pretty soon 1ghz laptops will be cheap, and then I can really get to work :)
From here down : Old Car, this project is retired, work moved to my new van


I've been busy with other projects lately, so not much has changed on the car computer. Initially I started soldering wires into the laptop, my idea was to bring the power-switch, power-led, serial-port and audio through one cable to my interface-box. So, of course, once I finished wiring all this up, I found a docking station for $5 at a local computer store. On the bottom of the docking station, there are 6 metal pins, it has serial and audio ports. Basically it does everthing I was trying to wire into the laptop. I qlwo picked up 3 more laptops at a work auction (cheap!) These are PII/300's (as opposed to the original 266) and have 128mb of RAM .... score! Swapped one for my mom's 266 laptop, and still have the other 2, one will be turned into the car computer (My motto, develop on the lesser hardware, run on the greater), and the existing car computer will be retired to parts. So, work to do, but great possibilities ahead. I'm going to build a frame to mount in the trunk so that the laptop slides in, connects to the docking station. When I want to take it with me, I just undock it. Sweet!


I have a working but still beta version 1.1b that now uses the data_hub for communications. I am excited by this because it essentially ties all the independantly operaing modules together into a whole. Eventually the GPS module can detect nearby landmarks, and select a song in the mp3 player. The GPS could speak out important landmark names, or play stereo-tones indicating the direction of the landmark. The possibilities open up tremendously with this interlink between the programs, as new applications can be written, and easily tie into existing data sources, and I/O.


Tinkering on and off between October and March I finally have a self-booting, no intervention required car computer. I'm using an uSDC20D startup controller to automatically start and shut down the laptop. It works better than anything I would have taken the time to build. The designer was kind enough to re-program this one for me to operate below 0C so that I can still have tunes during the cold Chicago winters (Laptop lives in the trunk). I mounted everything into the lid of the trunk, out of the way of the storage below. After a brief ... disagreement with the laptop (It wouldn't boot with the lid closed) ... it starts properly. This phase of the development of the car computer is finished, it's offically at ver 1.0.

Lots more to add to it before I consider it finished however. I need an interface in the front of the car to control the music more easily. The WIFI network needs to be fleshed out (possibly a card with an antenna jack). But, what I wanted as a computer is already here. My motto has always been "Make it work, then make it pretty."


Scrapped the mpg123 interface, and instead am now using an interface to Xmms. Since Xmms requires and X server to connect to, I installed a VNC X server on :10. I can VNC in and watch what Xmms is doing, while my program mp3_daemonruns the show (playlist, shuffling, playing the next song, interface to the webpage). The Weather interface was upgraded some to improve it's reporting capabilities. MP3 screen got a playlist selector added.

Right now the bulk of the software writing is done. There will of course be fine-tuning and new ideas to add. My primary focus at this time will be the car power system. Getting the computer to read the ignition switch, power on automatically, and more importantly shut down on it's own.


Figured out the Targus adapter, and now have 20.00v (Exactly According to my multimenter) coming off of the adapter. I psudo-attached it to the car, and wired it to the cable going to the front of the car (Which right now plugs into the lighter socket. Didn't get MP3's playing because the laptop had the sound muted, and all the wires were in the way. I was too lazy to remove it just for sound. I took a drive to Fry's and back (about an hour each way). The computer locked up at one point (I'm assuming it's power issues as I geek-rigged a power connector from a hot-melt glue stick). I will try running with the battery in the laptop to see if it improves stability, if so I'll drop the $25 on ebay to get a proper connector for the laptop (Or get lazy and solder it in).


Fleshed out the GPS-data mapping program, it looks clean, and navigates like the online-maps. Still only draws the trip, and not the roads/states, but there's always ver 2.0.

The mp3 player was re-written. The library I was attempting to use to wrap and control MPG123 didn't work for me, so I re-wrote my own MPG123 daemon. It works well, and the basic web-interface I have can control the basic functionality of playing mp3's (play, stop, pause, next, previous). I'm happy I had to write my own daemon in the end. The old one didn't shuffle correctly, instead it just picked random songs on forward and back, so you could never go back to the previous song, mine can.

Wrote a parser for the NOAA downloadable weather XML files. It's an ugly format, but gives a lot of information. My in-car webpage can now connect to the internet (where available) and download local weather conditions and forcast. Take that weather.com.

I mounted the laptop in the car (Dremel works off my inverter), and a friend gave me a Targus adapter to use for power (Thanks Tybis). I am still figuring out the pinout of this devices 'switchable tips' which appear to contain only a resister to limit the voltage. $.10 for a resistor, or $15+S&H for a new tip....let me think about that.

Part of the car wireing is in place as well, I ran cat5 from the trunk to the dashboard, along with a 3 conductor wire to provide power and 'key on' signal. I have yet to wire it into the electrical system.


To catch everyone up to date:

Debian Linux is installed on the development laptop. Re compiled a 2.4.18 kernel to get everything working on the laptop.

Running tgpsd as an interface to my GPS unit, works very well. Conducted my first trial run last weekend (Oct 2nd) on my way to Detroit. You can see a screenshot above of the trip-log, it turned out better than I had hoped for a trial run.

I have written a VERY VERY basic mp3 playing application, which is likely to be erased and re-written as things go.

Tried to mount the laptop in the car today, only to find out my inverter is not powerfull enough to run my drill. Perhaps my dremel will work. Using Heating-pipe mounting straps to hold the computer, and a belt to hold it in place.

Still have to design, test, and install the power connections so I don't need to run off of the inverter.