Thursday, December 08, 2011


Car navigation and audio system

I have a new car (as of October), a Subaru Legacy. The new car has a Pioneer AVIC-X930BT navigation/audio system (I mentioned its anti-theft mechanism last week). After years of using maps and printed directions, or relying on my BlackBerry for the GPS task — it’s effective, but small and hard to use while one is driving — it’s good to have the nav system, with a nice, large touch-screen (the next model up also does voice-command activation).

I’m mostly happy with it, and only find two annoying quirks in the navigation system. The more irritating of the two is that there’s a safety disclaimer that I have to touch OK to dismiss every time I start up the system:


This Navi product is intended solely as a driving aid. Review instruction manual and select route before driving. Navi is not a substitute for your attentiveness, judgement, and care while driving or moving your vehicle. Always observe safe driving rules and driving laws, and follow road signs even if they contradict Navi’s instructions. By pressing OK key, you accept the license agreement in the instruction manual.

I get the issue here: there are a good many documented cases of people driving onto railroad tracks, going the wrong way on one-way roads, and other such because they blindly and stupidly followed (what they thought were) their GPS systems’ instructions. But, really, I ought to be able to accept that safety and license-agreement message once, and be done with it. Or if they must remind me periodically, how about once a month? Even weekly would be better than having to deal with it every time I start the car.

The other annoyance is that the positioning system doesn’t seem to understand reverse gear. When I pull up my driveway and into my garage, the system doesn’t know where I am with respect to the roads. When I start up again, back out, and head up the road, it thinks I’m on the next block, and remains confused about that for a few minutes, while it acquires the GPS satellites and sorts out its actual location. That’s mostly comical, because I don’t need the GPS location to be accurate when I’m near home. Still, it’s rather goofy.

The most interesting thing about the system is that it replaces the audio system in the car, and includes AM and FM radio, CD and DVD player (including video), bluetooth audio streaming from your smartphone, playing your iPod, playing Pandora or Aha from the Inernet via an iPhone app, and playing music or video files from a USB device or microSD card. It makes for quite the music system.

I had been streaming music from my BlackBerry, but there’s not really a need — microSD cards are very cheap these days. I got a new card and copied all my music onto it. Thousands of music files live with the car. Very nice.

But there’s a problem, caused by a combination of an odd software choice in the Pioneer system and what happens to the microSD card on my MacBook. When I first plugged the microSD card into the audio system and turned on random play, it played the first song, gave me a popup message saying that unplayable files would be skipped, picked a random next song, and turned the random-play feature off.

Unplayable files?

I investigated. There turn out to be three things causing this, all related to hidden files (files whose names begin with ., which are hidden by the Unix file system that’s used on the Mac):

  1. iTunes, which manages my music library on the Mac (and whence I copied the files), keeps a hidden file associated with each song, to keep track of metadata. When I copied the music directories, I copied all those as well.
  2. Spotlight, a Mac feature that helps you search for things, creates a hidden directory structure called .Spotlight-V100 when it indexes the drive. This happens just because you plugged the microSD card into the Mac.
  3. The operating system and the MacOS Finder create various hidden files and directories, both in the root of the drive and in its subdirectories: .Trashes, .fseventsd, and .DS_Store (that last exists in every subdirectory that’s been touched by the Finder).

I configured Spotlight not to index the microSD drive (which you can only conveniently do after it’s already done it), and then wrote a shell script to delete every file and directory whose name begins with . (and one had best be very careful about writing and running such a script). Every time I plug it into my Mac, I have to run the script on it just before I eject it when I’m done.

Now everything works great. The audio system no longer complains about unplayable files, and the random-play feature doesn’t get turned off. I find that truly an odd programming choice: not only to display the message (which is odd enough), but then to stop random play. But it’s also bad that MacOS treats removable media that way... it should assume that removable media formatted with FAT(32) will be used on non-Mac platforms, and not pollute it with Mac-specific stuff.

No comments: