In my prior posting, I set up a script to handle the syncing of my iTunes library between my home system and the carputer. The script works fine, but executing it via the Terminal is a pain. With OS X, it is possible to rename a shell script with an extension of .command, which will allow it to be double clickable in the Finder, but this unfortunately will cause Terminal to launch, show the output, and then leave the Terminal window open when the script finishes. There are a few hacks to get around this, but the most common solution I've found is to instead call the shell script via AppleScript. As usual, this has caused a few additional headaches...
August 2009 Archives
Syncing an iTunes library between two computers isn't a straightforward task, normally for this I would simply drag the necessary files between two computers, but for the carputer project, this wasn't desirable. I need some way to keep the two systems in sync with a minimum of fuss and effort. Fortunately, there is a terminal command called rsync that is ideal for handling this task. Rsync works over an ssh connection between the two systems, and since this is running via a script, the login for this connection needs to run without asking for a password, so the use of ssh keys is required. There are a number of good tutorials on setting this up on the web, so I won't document that process here.
The script I need also needs to address a few other issues, including the system sleeping, which presented a few additional wrinkles. As things stand now, the carputer will be a laptop, and will run via the power adapter most of the time. When the car shuts off, the power adapter will be off, and the laptop will be on battery power. The Energy Saver settings are set to sleep the laptop after 1 minute. Obviously, if I'm in the middle of syncing data, I don't want the system to sleep, so the script will override this.
Finally, the script needs to check if the system we're syncing data from is reachable, and abort if it isn't. So, that being said, here is the current script I'm using:
There are a number of front ends used for Mac based carputers, unfortunately most of them are either abandoned projects, lacking in features or polish, or otherwise not quite exactly what I wanted. My main objective was simply to use this as a big, fancy iPod, my old click-wheel iPod just isn't quite cutting it anymore in the car. Something that used cover flow would be ideal, easy to navigate, clean interface, in short, what I was looking for was basically already part of the Mac OS, Front Row.
My main issue with Front Row, though, was that my plan was to use a touchscreen interface for the carputer, and Front Row did not allow for such use, it used keyboard input only, or the Apple IR remote, which is basically a remote keyboard, mouse or similar inputs aren't used. What I wanted, ideally, would have been some way to remap the touchscreen input, so that I could touch the top or bottom of the display for up/down arrows, left/right sides for left/right, etc. Unfortunately, I wasn't able to come up with any software that would let me capture inputs this way, so I was back to square one.
A number of folks had recommended the Griffin PowerMate for controlling Front Row, but I wasn't terribly happy with that solution either. At this point, my plan is to use a Logitech Precision Gamepad to control the action, and the USB Overdrive software to remap the controls for what I need.
After some testing, I found that I really only need four keystrokes, up, down, return, and escape to do all I need done in Front Row. My plan for phase two of this project is to disassemble the gamepad, remove the d-pad portion of the controller (lots of soldering and hacking there) and fabricate a new housing for this that would be placed at the steering wheel for easy access, that is, unless some better idea comes along.
So, with the controlling part done, the next thing I needed done in software was a way to keep my tunes in sync with my home system. Time to start coding...
Back in April, I started work on a Carputer project for my new car, a 2006 Nissan Sentra SE-R Spec V. After some planning, purchasing of parts, testing of software, etc, I'm just about ready to begin a rough install this week as a proof of concept. Basically this will involve placing the key parts where they need to go, but the cables will be exposed and everything can be quickly removed. I've got a road trip coming up next week, so this is a perfect time for a good test.
The software was the trickiest part lately, I had to set up some custom scripts to do the iTunes library syncing with my home desktop, and coming up with a convenient way to control Front Row was also a challenge. I'll post a series of articles on the various pieces of the project.