Three years ago I bought a TomTom ONE XL for a family trip. It worked great but I haven't used it much since then. We took another family trip a couple of weeks ago and I again wanted to take the TomTom. I decided to update its maps and thus ensued an unexpected adventure.
I bought an updated (and overpriced) map via the TomTom Home desktop
application. Part way through copying the map to the device, it
complained that it was out of space. A little digging revealed that
there wasn't room for both the old and new maps. I looked for a way to
uninstall the original map via the desktop but couldn't find
one. Luckily, OSX mounted the TomTom as a FAT
formatted disk so I
just deleted the old map files. No more out-of-space problem.
I confidently re-started copying the map to the TomTom but ran into another problem. The TomTom suddenly disconnected. Repeated attempts all ended with the same error message that the USB device had unexpectedly disconnected. I tried different USB cables and ports but nothing worked. With the trip looming, it was time for some hacking.
I opened an OSX Terminal
and used dd
to write files with increasing
sizes to the TomTom. It consistently disconnected when writing files
larger than 100MB. Writing smaller files with intervening pauses
seemed to work OK. Now that I knew what I could do, I turned my
attention to what I needed to do.
I figured out that TomTom Home put the new map files at the path,
~/Documents/TomTom/HOME/Download/complete/map/USA_and_Canada/
The directory contained the files,
$ls -lh total 1790632 -rw-r--r-- jcardent staff 7.7K Apr 13 16:25 USA_and_Canada-1.gif -rw-r--r-- jcardent staff 1.6K Apr 13 17:22 USA_and_Canada.gif -rw-r--r-- jcardent staff 2.6K Apr 13 17:30 USA_and_Canada.toc -rw-r--r-- jcardent staff 874M Apr 13 17:30 USA_and_Canada.zip -rw-r--r-- jcardent staff 305B Apr 13 17:22 activation.zip
Clearly, the file USA_and_Canada.zip
contained the majority of the
data. So I unzipped it and found,
$ls -lh total 1790504 -rw-r--r-- jcardent staff 252K Jan 10 11:05 USA_and_Canada-308.meta -rwxr-xr-x jcardent staff 60B Jan 10 11:05 USA_and_Canada.pna drwxr-xr-x jcardent staff 3.1K Jan 10 11:04 brand -rwxr-xr-x jcardent staff 446M Jan 10 11:04 cline.dat -rwxr-xr-x jcardent staff 113M Jan 10 11:05 cname.dat -rwxr-xr-x jcardent staff 123M Jan 10 11:05 cnode.dat -rwxr-xr-x jcardent staff 23M Jan 10 11:05 cphoneme.dat -rwxr-xr-x jcardent staff 56M Jan 10 11:05 faces.dat -rwxr-xr-x jcardent staff 30B Jan 10 11:05 mapinfo.dat -rwxr-xr-x jcardent staff 92M Jan 10 11:05 poi.dat -rwxr-xr-x jcardent staff 15M Feb 18 10:53 tables.dat -rwxr-xr-x jcardent staff 4.9M Jan 10 11:05 tmccodes.dat -rwxr-xr-x jcardent staff 129B Jan 10 11:05 traffic.dat
Three files over 100MB, oh bother. But there was no need to fear for I
was armed with dd
. I proceeded to use a command like the following
to copy the large files to the TomTom in 50MB chunks,
dd if=./<map file> of=/<TomTom path> bs=1024 count=52428800 \ iseek=<offset> oseek=<offset>
After an hour or so, all the data was on the TomTom. I disconnected
and rebooted it only to get a "map not authorized" error. After a some
curses, I recalled the other downloaded file, activation.zip
. I
unzipped the file, copied the contents to a couple of places on the
TomTom - I wasn't sure where it belonged - and rebooted. Woot! The
updated map worked!
I'm happy to report that the TomTom worked flawlessly for our vacation.
Moral of the lesson, know and use your UNIX
command line tools.