O'Reilly logo

Car PC Hacks by Damien Stolarz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Hack #48. Choose an in-Car PC Software Platform

You can use any major operating system for your in-car PC. Here are a few pointers to help you decide.

The major choices for an in-car operating system are the same as for a desktop: Windows, Linux, and, if you "think different," Mac OS X. The primary deciding factors are what software you want to run, what hardware you want to run it on, and of course what system is easiest for you to work with.


Windows XP is your most flexible choice in terms of hardware and software support. Though you can run older versions of Windows, such as Windows 2000 or Windows 98, most of the car computer application development occurs on XP.

Windows tends to have support for the latest multimedia features. I know that sounds very buzzwordy, but it isn't intended to be; it merely means that you get the best driver support, both hardware and software, when using the latest version of the Windows OS. If you're trying to run the latest DVD software with surround sound, a handful of video game emulators, and some 3D games, as well as supporting a number of USB networking, storage, and input devices, you'll have the smoothest experience if you run XP.

One of the drawbacks of Windows XP is the way it handles new hardware. If you so much as change the USB port of a network device, GPS unit, or other similar device, Windows acts as if it has never seen that hardware before. It pops up dialogs asking you to find the driver (even though it knows full well where the driver is), and then it creates a completely unconfigured "new" entry for the device in its hardware list. This has the frustrating result of changing the COM port of your GPS unit, or resetting the "connect to non-preferred networks" setting of a USB network card, making your GPS and networking stop working until you reconfigure them in the Windows control panel.

Another Windows choice is Microsoft's embedded operating system, Windows CE. Embedded operating systems are designed to run on appliances and other special-purpose computers. The BMW 7 Series uses this OS in its navigation computer, and the Windows automotive group (http://www.microsoft.com/automotive/windowsautomotive) is trying to get this OS into new vehicles from other manufacturers. Windows CE also powers the Pocket PC computing platform, which has gained market share over the Palm Pilot after half a decade of fierce fighting. But while you can install applications on a Pocket PC, Windows CE alone isn't sold directly to end consumers. Embedded operating systems expect to be configured with only the necessary drivers and software, burned onto a flash disk, and run for years without any changes. While this ultra-reliability is important for an OS that might be communicating with the engine computer, it's very uninteresting for those of us who want to hack new functionality into our cars on a regular basis.

Windows runs only on x86 instruction set processors, which include Intel, AMD, and VIA Eden processors. Intel's own market-leading Pentium 4 processors get notoriously hot—not an ideal condition for an in-car computer.

But recently, VIA and Intel itself (with the Pentium M) have begun to make hardware that consumes tens of watts, not hundreds. While the "real" in-car computers that auto manufacturers preinstall in their cars are unlikely to ever be x86 processors (or to run Windows XP or its successors), Windows is still one of the strongest options for in-car entertainment computing.

There are actually several different editions of Windows XP suitable for in-car computing: Home, Professional, Media Center Edition 2005, and Embedded. Windows XP Home edition is the cheapest, at less than $100 for the OEM (Original Equipment Manufacturer) version. You can buy an OEM version of Windows when you purchase computer hardware such as a motherboard or processor, as opposed to the retail version, which upgrades your existing operating system. Windows XP Home has almost everything you need for car PC computing (despite the irony of its name), but it lacks one must-have feature found in Windows XP Pro: Remote Desktop. When that feature is enabled, you can log into your computer remotely (say, when you go into the house after parking your car) and see the full screen, enabling you to control and configure things, run programs remotely, and so on. While there are many other remote desktop services that you can install (including VNC, at http://www.realvnc.com), the one built into XP Pro is probably the most bandwidth-efficient version you can get.

Windows XP Media Center Edition 2005 is essentially Windows XP Pro with a special media player application, and for an additional $30 you can get an infrared remote control designed for it. Like the OEM version of XP Home, you can purchase this in conjunction with just a minimum amount of computer hardware from a licensed vendor. Media Center can play MP3/WMA (Windows Media Audio) collections and WMV (Windows Media Video), but not DVDs—for that, you need a separate DVD player plug-in or application. It also can control a radio or TV tuner if you have the correct hardware (check out http://www.microsoft.com/windowsxp/mediacenter for more info). Since it is designed to be used with a remote and not a keyboard, it is a decent option for rear-seat entertainment, although you will find that most dedicated in-car computer frontend software has far more features.

The final version of Windows XP that I recommend for in-car computing is XP Embedded. This version of the OS is designed to work on embedded (dedicated-purpose) computers, not as a general-purpose computing OS. It is purchasable only from Microsoft's embedded licensing companies, such as Bsquare (http://www.bsquare.com), and you have to sign several license agreements to get hold of it. The license takes great pains to make sure that you don't ship XP Embedded with general office-productivity applications as a desktop OS replacement, and it has a lot of other language intended to ensure that you use it only for appliance-type computers.

Once you get through these rings of fire, in small volumes XP Embedded costs about the same as XP Home, and you get a lot of features you'll wish XP Home had. For instance, XP Embedded has a read-only filesystem driver that allows you to use a hard drive so that unexpected shutdowns won't corrupt the drive [Hack #49] . Another cool feature of XP Embedded is that you can throw away all the features you don't want—really. It's as if you were given a bag of all the thousands of drivers in XP Home/Pro and told, "Have it your way." The learning curve on XP Embedded is high; it's designed for system integrators, not car PC nuts. But the results of customization can be vastly reduced boot times; exact control over startup activities and their sequence; and the ability to make bootable, very small footprint XP drives. A reasonably capable XP Embedded image (all the files that boot XP) can be squeezed onto a small flash drive. "Install Windows on a CompactFlash Card" [Hack #49] goes into more detail on using XP Embedded.

Information on a nice selection of in-car frontend software for Windows can be found in the MP3Car.com forums under Mp3Car Technical, Software & Software Development, as well as in Chapter 7 of this book.


Linux runs a strong second to Windows in terms of versatile in-car multimedia support. Linux has strong hardware support for all the popular hardware peripherals useful in a car, such as wireless remotes, video capture cards, and networking peripherals. Plus, Linux is much more easily customizable than Windows XP. Taking out unneeded drivers and resources is as simple as editing a few text files, and advice abounds on the Net on how to make a good Linux box do all sorts of things.

The drawback with Linux is that it requires familiarity. If you aren't a command-line edit-config-files type of person, and aren't willing to learn, Linux can be a rough road for you. However, Linux will ultimately get you the most bang for your buck—your computer will boot faster, react more responsively, and act more predictably between boots than it will with Windows XP. Linux's graphical user interfaces, to date, lack most of the "helpful" wizards that pop up demanding explanation of new networks, devices, updates, and how much disk space you have left. Although these bells and whistles are arguably useful for a desktop user, they are a hassle to deal with when you don't have a keyboard or mouse, and they disturb the experience of an in-car computer user.

The major strength of Linux is its command-line and scripting capabilities. Just about every scripting language runs on Linux, and almost everything you would want to do can be done from a command line. This comes in quite handy when you don't want to write a full-blown program, but you want to, for example, quickly make a nice button on the screen that the driver can press to instantly play a DVD on the car's second screen (for instance, with MPlayer, available at http://www.mplayerhq.hu).

It's perhaps somewhat unfair to describe Linux only in terms of how it differs from or is better than Windows, but the common wisdom of the desktop world applies here as well: Linux is more open, more configurable, and arguably better for programmers, but it has fewer available applications. While there are dozens of navigation and car PC frontends for Windows, only a small selection is available for Linux. SourceForge is a good place to look for projects.

An excellent, full-featured, open source in-car PC project for Linux can be found at Dashwerks (http://www.dashwerks.com); the SourceForge project for Dashwerks can be found at http://sourceforge.net/project/showfiles.php?group_ id=43989.

Another Linux-based car PC frontend project is Headunit, found at http://sourceforge.net/projects/headunit. You can find more information about it at the MP3Car web site (http://www.mp3car.com).

Mac OS X

Mac OS X is a strong solution for in-car applications. It's no secret that the iPod pretty much owns the portable MP3 market, and one obvious (if overkill) way to get your iPod integrated into your car is to use a Macintosh computer running iTunes as the go-between.

OS X has fantastic multimedia support with its QuickTime architecture, and iTunes alone can be used as a dashboard jukebox with a remote control. OS X also has an integrated DVD player application that will play DVD video right off the hard drive or DVD drive, without you having to buy additional software. Almost every application on the system is accessible by the native scripting language AppleScript, and the OS has built-in speech recognition for launching commands. Thus, with a few lines of relatively painless programming, everything in the OS can be made "speakable" (i.e., respond to voice commands).

Besides the built-in apps, there are some really promising individual projects out there [Hack #53] , such as Dash Mac (http://sourceforge.net/projects/dash-mac) and iDash (http://sourceforge.net/projects/idash).

A good resource for Mac car PC software is http://carmac.acmelab.org. Along with iTunes frontends, they have a number of more advanced projects and general discussions. But the biggest reason to switch to a Mac for in-car computing is the new Mac Mini, which is described in "Choose an in-Car PC Hardware Platform" [Hack #41] and installed in "Install a Mac Mini in Your Car" [Hack #54] .

DOS and Other Operating Systems

Depending on the hardware you're using, DOS may be a viable OS choice for you. DOS, including the simple DOS that comes with Windows 95, 98, or ME, is by far the fastest-booting OS on Intel hardware. Using an MP3 player such as DAMP (http://www.damp-mp3.co.uk), you can get your music playing mere seconds after you start your computer, instead of a minute later, as with modern bloated GUI OSs.

DOS also runs on very old hardware. If you have an old Pentium or AMD processor, for instance, you can underclock it (say, run a 500-MHz chip at 300 MHz or a 200-MHz chip at 133 MHz). Underclocking will reduce the processing power and thus the amount of heat generated. Since you only really need a 90-MHz (or faster) Pentium to play back MP3s, underclocking can let you build a simple media computer that draws small amounts of power and generates little heat.

Any other orphaned OS that still has an online community can be adapted for in-car use, as long as you can get it to talk to whatever touchscreen, remote control, or other user-interface device you want to use. If you just want to have a fixed menu of options (say, music, videos, and some games) and you can develop a simple menu for your computer, there's no good reason not to, and you may get some brief Internet notoriety when you post screenshots of the only BeOS or OS2/Warp in-car computer system out there.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required