Car PC

How I sync my car with my house.

Background

I have a 1999 Seat Ibiza. It works OK for me, but it’s got this monolithic head unit which doesn’t offer any easy upgrade options.
What’s that in the middle? Tape? Oh yeah, I remember those – my ZX Spectrum used to use them.

As you can see, it’s not exactly cutting edge equipment.
It’s a standard Seat Ibiza head unit and it’s the same hardware used in VWs and Audis at that time.
If I want to output anything other than tape or radio from this thing I have to use one of those tape adaptors that seems to die off after about 6 months of use.
Fortunately there is a CD Changer interface on the head unit and this is already wired up to a connector in the boot of the car.
So, options for getting some decent tunes in there:

  1. Buy a CD changer.
    I could get an MP3 CD changer at great expense or I could get a normal one for a bit less.
    All a bit 20th century though, isn’t it?
  2. I could whip out the entire centre console and put a new one in which would allow me to fit any after-market head unit with more options.
    Problems: That’s a lot of screwing around in the car and it just makes my car more likely to be broken into.
  3. Somehow fit an AUX input into the head unit to allow devices like MP3 players or phones to play music through it.
    My phone has 2 gig of music on it and I always have my phone with me.
    Could work…
  4. Fit a car PC.
    Wire in power supply and head unit controls and run software on a small form factor PC or laptop to play music and anything else.
    Nah… too much work, surely?

Research

So I went about looking for a way of getting a simple AUX stereo input into my car.
After lots of googling and reading of various forums I decided the easiest way to do this was to get a unit which connected to the CD changer I/O and fooled it into thinking there was a CD changer there when in actual fact one could connect whatever audio source they wanted.
I quickly found a likely product in Car2Aux, however looking around I found that for a teensy bit more cash I could have the Car2PC interface.
The Car2PC interface is the same as the Car2AUX one with the added bonus that it has USB support to allow the head unit to send and receive commands from the PC it’s connected to. I like to keep my options open so I got that one 🙂

In the time it took for the Car2PC unit to arrive I think I’d forgotten about the simple AUX input I was going to add and I’d remembered the old laptop that was sat under my bed gathering dust.
The plan changed somewhat, mental feature creep set in and simply getting music to play through the car speakers seemed like low-hanging fruit.
New requirements!:

  • Audio output controlled and fed through the original (untouched and undesirable by thieves) head unit.
  • It has to look untouched – again with the concern for theft.
    I’ve seen some heartbreaking stories on the various forums I’ve visited where people have had their sweet ICE mods ripped out of the dash within weeks of completing them.
  • Getting new media onto it has to be effortless. Autonomous would be even better.
  • It would be nice if there was room for the device to do other cool stuff I could think up.

Testing out the Car2PC

Getting the Car2PC unit was ludicrously easy.
Install the drivers onto a laptop, install Winamp, connect up the unit to the CD changer plug and connect the USB and audio to the laptop.
The head unit automatically recognises the Winamp playlist as a CD and lets you use the normal CD control buttons to navigate it, plus in the Winamp plugin lets you assign a playlist to each of the six CD buttons on the head unit.
Very cool!

Hardware issues

Now, I’m no craftsman.
Fitting the laptop as a CD changer was always going to be considerably sub-par compared to an ICE specialist or even a hobbyist.
HOWEVER! I do have a big bag of zip ties, a glue gun and a Draper rotary multi-tool. Good to go!

Obstacles:

  1. Getting an 18.5V 3.5A DC power connection that the laptop can use into the boot
  2. Mounting the Car2PC unit
  3. Mounting the laptop
  4. Connecting a power supply somewhere at the front of the car

I had a few options on getting power to the back of the car.
Ideally I’d do something like this little mod (and I still might),
but we’re in the experimental stage here, so I just extended the 12v socket in the front of the car using 10A cable, a fused 12v plug and a 12v socket from Maplin.
The cable is hidden around nooks and crannies and makes its way to the back where I plugged in a variable voltage air/auto power converter.

Update: Having the cable fused at 5A wasn’t working out – the DC current from the car electrical systems is incredibly messy and I was finding that the fuse would blow quite frequently.
Supposedly the 12V socket is fused at 15A, so a nice big 20A cable would be good, with a 15A fuse, however if you go above 13A it’s really difficult finding stardard cartridge fuses that would fit into the 12V plug.
One frustrating soldering session later trying to fit the 20A cable into the 12V plug and I gave up and went to Halfords where I found a plug splitter / extension from their range of hilariously labelled Japanese ricer products.
This seems to work nicely and has given me a spare power socket too.

Next was the mounting issue.
I figured I could get some kind of box to act as a mounting point and protective structure for the laptop for pretty cheap and just bolt it into the boot.
Wilco’s is full of plastic crap like that, indeed a circuit around the shop later I came back with a little nicknack box thing that was just a little bit narrower
than the laptop, providing an excellent opportunity to multilate something with the multi-tool.
When I was finished with it, the laptop fitted neatly into a couple of slots in the box which also acted to hold it in.
The power converter, Car2PC unit and spare cabling zip-tied to the outside.
Getting the box stuck into the boot was just a case a little brute force and another handful of zip-ties through the fibre floor above the spare wheel well.

The software

Thanks to Winamp’s plugin interface and the flexibility of Car2PC, the whole audio playback problem was pretty much solved.
Now onto more familiar territory: Scripts!

Updating music

The ideal situation is that simply by parking my car within wifi range of my house, the car computer can connect with the signal and pull off new music from our server.
Conveniently, I run Firefly Media Server (aka mt-daapd) which indexes all the audio files on my server and runs an interface
designed for audio players such as iTunes called DAAP (Digital Audio Access Protocol).
It’s a great bit of software for querying and streaming music libraries, and it stores everything in an SQLite3 database.
I needed a little bit of flexibility on querying the library, so I went directly for the DB file instead of using DAAP methods.
This allowed me to create lists of:

  • The most recent albums added to the server, in order of when they were added
  • The last x podcasts downloaded by the server

With these running on the server, all that the car PC client had to do was request these from the web server and then fetch the relevant files over
a normal Windows file share.
The client script then writes the latest 5 albums to playlists, (pointed to in the Car2PC plugin) which assigns them to buttons 1-5 of the head unit.
The podcasts are listed in reverse chronological order and assigned to button 6.

Notifications via Twitter.com

Although sync sessions are logged in a file, this doesn’t really help me know what albums I have loaded up if the laptop is just left in the car, so to help me keep up to date I added in my PHP twitter library so that the synchronisation process is reported back online and appears in my twitter friends feed.

Connecting to my phone

With the addition of a Bluetooth dongle to the laptop I can now pair it with my phone and run floAt’s Mobile Agent,
which opens up the project to a bewildering set of new options.
FMA has become a massive project since it was just a syning interface for Sony Ericsson phones – there is now a plugin/scripting interface for it which enables you
to control apps on the PC it’s installed on as well as the PC itself.
There are loads of scripts available and fortunately to get my SMS-to-speech feature running all I had to do was configure MS SAPI5 (Speech API) and get FMA up and
running.
I then just enabled the “SmsReader” script which uses the Stephen Hawkins sound-a-like voices in windows to read incoming text messages.
I made some slight modifications to that script so that it pauses Winamp before reading the message and also announces incoming phonecalls.
I may mod it a little bit more later so that it doesn’t make an incomprehensible mess out of txtisms like “l8r” and “ru”.

End result: If Bluetooth is turned on on my phone, it auto-connects to the car PC.
It will then read out any incoming texts, announce the names of people calling and (obviously if I’m not actually driving at the time) give me menus and interfaces for
things like the Windows shutdown menu and Winamp.

Downloads for these scripts are at the bottom of the page.

Configuring Windows

As much as I would have loved to claim that “my car runs linux”, the laptop in question already had
a licenced version of XP pro and, given that it was a tablet PC, was a really bad candidate for Ubuntu.
The Kubuntu dual boot on there isn’t exactly optimal, plus all the Car2PC stuff was already written for Windows and Linux power management is (at time of writing)
still shit. No really, it is a bit shit.

No matter what I tried I couldn’t get the laptop to boot in under about 1 minute 30 seconds, which is rubbish, fortunately if I set all the power options to
favour hibernation (hibernate in 3 minutes when running on battery, hibernate on power button press etc) I avoid cold boots and it’s all a bit quicker.
Windows recovers a hibernated session in about 20 seconds and doesn’t use excess battery power.
Acceptable.

In order for the laptop to be able to wake up and shut down without prompting I removed the password from my login, and removed the welcome screen options.
To let Scheduled Tasks run without a password, I then disabled “Limit local account use of blank passwords to console logon only” in
“Administrative Tools/Local Security Policy/Security Settings/Local Policies/Security Options”.
The sync script was added as a task to run daily at 5am, with options set to wake up the laptop and run when on battery.
The script itself takes care of setting the laptop into hibernation mode.

All done!

That’s pretty much it.
I now have a system in my car which automatically imports new music and allows me to control it from the existing head unit.
There is no significant modification to the car itself and from the outside it still doesn’t look worth breaking into 😉

Todo:

  • Have the laptop act as a bluetooth handsfree unit Easy to do, but decided against it. I’d rather take calls when I’m not driving
  • Use text-to-speech to read out incoming text messages done
  • Sat nav? Nah, I’ll stick with my TomTom I think.

Any ideas or suggestions? Leave a comment at the bottom of this page.

External links

Download

All source code for this is on the SVN repository for the project

2 Responses to “Car PC”

  1. Remote Wireless Music Syncing Android and Linux | Strawp.net Says:

    […] available! What I decided to do was to emulate the mechanism that I came up with when I built my Car PC. Basically, the core of wireless syncing in the Car PC was rsync, combined with a little bit of […]

  2. DIY Hands Free Kit | Strawp.net Says:

    […] few years back I came up with the CarPC as a cheapass hacky way of getting MP3 playback integrated into my unspectacular car. Since then, […]

Leave a Reply