Linux for Suits - Navigating with the Nokia N800
I'm a geo-freak. Geography and geology are two of my favorite subjects. Maps are among my favorite reading material. I can sit and study a map with great interest for an hour or more—even if it describes a place I'll never visit. I can fly from Los Angeles to Paris and stare outside at the ground for the whole distance, looking at the map that is the world itself, constantly hungry to know more about it. I consider GPS (Global Positioning System, en.wikipedia.org/wiki/Global_Positioning_System) one of the greatest inventions in the history of our species. I carry a handy little Garmin GPS unit (the excellent eTrex Vista CX, https://buy.garmin.com/shop/shop.do?cID=145&pID=326) with me nearly everywhere I go, and consider it no less essential than a cell phone.
The Navicore, which stores its maps on a 2GB removable-SD card, was able to track progress along the ground during the flight from Santa Barbara to Los Angeles.
Although Maemo Mapper was able to use the GPS receiver and give latitude/longitude/altitude/heading readings, it wanted to download maps from the Web, which doesn't work on a plane without a Net connection. Without a fresh download, the map doesn't match the latitude/longitude readings on the left.
Navicore's zoomed-out view to the ground about midway between Los Angeles and Oakland. Note the speed reading in the upper left.
Trying Maemo Mapper on the LAX-OAK flight. The only useful data are the GPS readings. These include altitude, which the equivalent Navicore display does not. On the other hand, Navicore has its maps in memory and does not need to download them from the Net (which Maemo Mapper is failing to do in this case, because there is no Net connection).
Maemo Mapper will create a track that leaves a red line. Here I'm taking a bus to a BART station from the airport in Oakland. The GPS receiver is in my pocket.
Here we're in Navicore's 2-D view, which shows BART's railroad tracks as dotted lines. The 3-D view shows only roads (presumably because your car or truck is not on rails).
Maemo Mapper at the hotel in San Francisco. The GPS receiver was at the window on one side of the room. The N800 here was on a table across the room near the door. Over on another table was the Nokia E62 mobile phone, which the N800 used for downloading maps off the Web. All were connected by Bluetooth.
Three collaborating instruments provided by Nokia: the N800, an E62 phone and a GPS receiver. The phone used the Cingular/AT&T network.
The N800 could see several Wi-Fi access points in addition to the cellular connection, and showed whether the connection was locked.
Here's the GPS data page in Navicore. The other two tabs on the top are settings (the gear) and Bluetooth.
In Maemo Mapper, a red line with a blue pointer at the leading end draws the taxi's track from the airport toward our hotel in downtown Houston. Note how straight the red line is in this case.
So, you can guess my response when I got an e-mail from our Nokia contact, asking if we'd like to check out Navicore's GPS for the N800. I said yes and had a box in my hands the next day—which was good because we were already up against the deadline for this issue of Linux Journal (in which Jim Thompson and I give a big thumbs-up to the N800 as the Best Handheld Linux Device).
The N800 (and the 770, which preceded it) already has available GPS software in Maemo Mapper, free (GPL'd) software developed and continuously improved by John Costigan and a dedicated crew of programmers.
Navicore's and Maemo Mapper's GPS approaches are very different, but together they validate the N800 as a platform of potentially unlimited flexibility and appeal. The potential for Linux in an open mass-market portable computing device has been obvious for a long time, but reality has always lagged behind promise. But, now that we see companies like Navicore providing consumer-grade hardware and software kits for the N800, we know embedded Linux has passed an important milestone.
I've been using both the Navicore and Maemo Mapper GPS systems as much as possible on the N800 during the week I've pushed back the deadline. In the following order, here are the routes where I checked out both systems, alternating between the two:
Drives around Santa Barbara and the nearby countryside.
Flights from Santa Barbara to Los Angeles and Oakland.
A bus from Oakland's airport to the nearest BART station.
BART from the station to the tunnel under the Bay.
Walks and taxi rides in San Francisco.
A red-eye flight from Oakland to Houston.
Taxi rides in Houston.
Unfortunately, I was unable to use it on the flight from Houston back to Los Angeles, or the drive from that airport to Santa Barbara, because the water bottle in my bag (bought after passing through security) leaked on the N800 and rendered it useless until it recovered the next day, presumably because it dried out. (The fact that it worked fine after being soaked amazes me.)
I'll start with a report on Navicore, which was the first of the two systems I put to use.
The Navicore package is a box of about the same size and shape as the N800's. Contents include:
A Nokia battery-powered LD-3W GPS receiver (about the size of a Zippo lighter or a piece of hotel-room soap).
AC power charger (US standard).
A 2GB mini-SD card with maps covering the entire US and Canada.
Car power adapter (for the lighter socket).
Mounting hardware.
A (Windows-only) DVD with the same data as the memory card.
Support card with numbers for many countries.
Minimal instructions in many languages.
The N800 has room for two SD cards—one internal (under the battery) and one external, revealed when the unit's stand is angled outward. I had already put a 1GB card inside the device, so I slid the 2GB Navicore card into the external slot. It was easy and intuitive to install the software using the N800's application manager.
I got the license activated, chose English, and specified my region as USA-West. Then, I put the GPS receiver by the window while it charged and pressed the button to turn it on.
Getting the N800 and the GPS to see each other via Bluetooth was easy and proceeded in the manner typical of Bluetooth devices (the passcode was the usual four zeros). Once the two devices were associated, activating the GPS through the Navicore UI was a one-button move. (And it continued to work fine for Maemo Mapper as well.)
Navicore's Navigation Kit is made to work primarily on roads as a car navigation system. You can find locations and then plan routes, which you also can clear. You can find detours as well, which can be handy if you run into traffic. You can choose to find locations by address, city, favorites, points of interest (POIs) or by latitude/longitude coordinates.
The screen centers on your location, which can be displayed in 2-D or 3-D (the latter being the preferable default in car navigation systems these days). Holding down the select button allows you to toggle between Browse and Navimode. Browse lets you move about the map, while Navimode gives you choices of views from your current location. Both make use of the four directional buttons surrounding the select button.
On the screen, a gear icon brings up a control panel with choices for the following:
Guidance volume (four levels from mute to loud).
Routing mode (car, bike, foot).
Route type (shortest, fastest).
Display mode (2-D, 3-D).
Colour theme (daylight, night, brightlight).
Across the top are icons for satellite data and Bluetooth device readings. The satellite data include latitude/longitude, heading, speed, compass direction, satellite locations and signal strengths. It does not display elevation (one of my faves), presumably because the setup is meant for drivers rather than pilots. The device readings tell you the name and MAC address of the GPS receiver and its battery level, and there's a button for activating or deactivating the receiver.
Maps have icons for parking, hotel/motel, airport, amusement park, campground, theater, casino, college, concert hall, Wi-Fi access points and other points of interest. Clicking on one brings up its name and other possibly helpful information. (For example, it tells you whether the access point is a pay one.) If you click on an access point, your choices include adding it to favorites and navigating your way there (at the end of which the voice says, “Now get out of the car!”).
Back on the hardware side, buttons for back, home and menu all do their jobs and work logically.
My car is a 2000 Volkswagen Passat station wagon. Although it's not a small car, its windshield leaves no room for the bulky N800 mounting hardware. I've used other GPS systems in cars before, especially the Garmins that car-rental agencies offer. All are considerably smaller than the N800/mounting hardware combination. So, I'm sorry I was unable to test the mounting setup because its construction appears to be very good.
I did use the holder for the N800 alone, however, because it provided a nice protective frame around the device and enlarged it enough to make it fit nicely between the two front seats. The location of the GPS receiver didn't seem to matter. Whether it was on the seat, the dashboard or sandwiched between the car's roof shade and the dark glass moon-roof cover (a clever hack on my part, I thought), it worked fine.
We gave the Navicore our first test when we drove from our home in Santa Barbara toward Los Olivos, about 25 miles up Highway 154 in the Santa Ynez Valley (the wine country where most of the movie Sideways was filmed). Even when set for the shortest route, Navicore still wanted us to get on Highway 101 to reach 154, which made no sense from our start point, or any point along the most direct and obvious route. As we drove directly toward 154, the Navicore voice kept telling us to “Try to make a U-turn if possible”. After we were on 154, however, it worked fine. Later, when we set it up to find our house on the return trip, it again wanted us to take the long “faster” way home, telling us to turn around, over and over again.
In San Francisco, it did a better job when set for walking. Here I put the GPS in my briefcase and held the N800 in my hand. I looked weird walking around that way, but the setup did a nice job of navigating me from one hotel or restaurant to another.
I also had fun using it on the airplane between Los Angeles and Oakland, and in the first half hour of a red-eye from Oakland to Houston. It was fun watching the plane “drive” across a close-up road map at speeds of up to 550 miles per hour. Even when I zoomed out to approximate the view from my altitude, Navicore kept wanting to bring the view down to a few hundred feet over the Earth, giving me the sensation of NOE (nap-of-the-earth) flying in an F-16.
In case you're wondering if GPS use by passengers is okay, here is what it says in Continental's Flight Safety Regulations: “Devices such as electronic games, personal computers and entertainment players and recorders...must be used with headsets at all times. These devices, as well as noise-canceling headphones, calculators, shavers, cameras, GPS devices and aircraft power ports for laptops, may be used only at the gate when the main cabin door is open, or when announced by the flight attendants and the aircraft is above 10,000 feet in altitude. These devices must be turned off during taxi, takeoff and landing. Devices such as TVs, radio receivers and/or transmitters (including AM/FM/SW, CB and scanners), remote-control toys and personal air purifiers are not permitted for use at any time.” My flight to Houston was on Continental. The flights from Santa Barbara to Los Angeles and Oakland were on United. I am a top-caste frequent flyer with United and have never been told not to use a GPS on a United flight at times when use of electronic devices are permitted.
One surprise for me was the performance of the little Nokia GPS unit. It was actually much faster at finding satellites than my Garmin. It worked at greater distances from the airplane window and saw more satellites as well. (On these flights, I put the receiver in the pocket closest to the window, and I had window seats on all the flights.)
The Navicore was a real winner in airplanes. Even though it didn't tell me my altitude, it was very handy for telling me where I was in relation to the ground below—a big plus for one of my favorite practices, which is shooting pictures out airplane windows. I have about 3,500 photos (flickr.com/photos/docsearls/tags/aerial) on Flickr tagged “aerial”. With the excellent sensitivity of the little GPS receiver, the Navicore setup was actually better than my Garmin as an accessory to photography. The display of the N800 is also much larger than the Garmin's, which is a plus for my age-compromised eyesight.
Unfortunately, the Navicore kit was disappointing on the ground.
The main problem is speed. It's too slow at too many things. Finding locations and waiting for Navicore to create a route is often so time-consuming that one is inclined just to give up. Worse, once you find something, there is no obvious way to say “go there” and create a route. For that, you have to “Plan route” by connecting two waypoints.
For example, it took about a minute of poking and waiting to plan a route between the hotel in San Francisco and the Oakland International Airport. On a standard Garmin unit in a rental car, this takes only a few seconds. To be fair, the difference is partly due to the Garmin being a single-purpose device, while the N800 is an all-purpose computer. On the other hand, the Navicore system would benefit enormously from, say, predictive text. Most or all of the modern car navigation systems have this feature, and its absence with the Navicore is annoying. Also, switching between views with the Navicore can be torturously slow. When you tap on a screen icon for another view, 30 seconds or more might pass before anything happens. And, if you make the mistake of tapping on it more than once (because nothing happened the first time), the software might take what seems like forever before it finishes obeying your commands. Many times I have just given up and walked away until the system finally stopped thinking.
The Navicore's on-the-road navigation also isn't very smart. If you make a mistake on a Garmin (and I've had experience with a number of those), it says “recalculating”, then changes the route you'll need to take. The Navicore system tells you to make your next available U-turn. I'm not sure if it wants you to back-track to the departure point or to find an alternate route. Whether the logic is lazy, dumb or just wrong, the result on the road is annoying, useless or both.
Map orientation is another problem. If you want Navicore to be looking in the same direction that you're traveling (the forward view of the driver, in most cases), the system often switches for no apparent reason to “north up”. Among lesser problems, the battery level for the GPS always showed 0%, even when fully charged, and clicking on the green satellite icon from the map view takes you to the control panel instead (where there's an icon for the satellite icon that does take you to the right place).
Maemo Mapper is a very different animal.
First, it's open-source freeware. Written in C by John Costigan and a crew of eight other listed developers, it is released under the GPL and is one of the most active projects at Maemo Garage (garage.maemo.org). I installed v1.4.6, which became available on June 9, 2007. After using the Navicore, it was gratifying to see the bug lists (15 open, 39 total), feature requests (33 open, 51 total), forums, project documentation, code repository and mailing list.
Second, Maemo Mapper is not meant strictly as a nav system, but rather as a multi-purpose GPS with a growing box of tools and uses. To explain the background and how it works, here's John Costigan, writing on his own Maemo Mapper site:
The good thing about starting from scratch is that Maemo Mapper was built for the Maemo platform from the outset. No after-the-fact porting here—everything is 100% Hildon UI. Plus, I coded it with the form factor of the Nokia 770 in mind, so it is written in C with memory, CPU and screen-space optimizations in mind....
Information about how to set up your maps directory structure is nice if you plan on lugging all of your maps around on an MMC card (as I do), but it's not for everyone, so there is an alternative: on-the-fly map downloading....
Maemo Mapper was designed from scratch for the Hildon UI of the Nokia 770. The entire drawing area is devoted to the map, without cluttered GUI components. Most of the functionality (zooming, panning, opening route files) can be done using only the hardware buttons (i.e., without a stylus)....
All download operations are asynchronous and thus do not interrupt your user experience. Thus, you can use Maemo Mapper as you normally would while the maps are downloaded in the background, and the display is updated as the maps come in. This is especially noticeable when downloading maps automatically—the effect is similar to that of Google Maps or Google Earth....
Maemo Mapper supports opening and saving of standard GPS Exchange (GPX) files. You can open or save tracks (where you've been) or routes (where you would like to go). With this functionality, it is possible to download a route from the Internet (e.g., from the GPX Driving Directions Web service) and display the route on the map....
In addition to downloading third-party routes from the Internet, you can also generate driving directions from within Maemo Mapper directly. This functionality uses the aforementioned GPX Driving Directions Web service to generate directions to any location that would be recognized by Google Maps (e.g., “1250 Broadway St., SomeCity, PA” or “44012”).
You can even specify that Maemo Mapper automatically update the route based on your current position, giving you the full power of a $2,000 in-car navigation system in the palm of your hand. Of course, an Internet connection is required during the trip....
Maemo Mapper will automatically notify you of upcoming waypoints. Waypoints are defined in Maemo Mapper as any track point in the GPX file that contains a description, and they are typically used in the context of Maemo Mapper to describe action that must be taken at the waypoint (e.g., “Turn left at Bourbon Street”).
The notification takes the form of a Hildon “infoprint” notice (a pop-up in the upper-right corner of the display). Optionally, if you have Festival Lite (flite) installed, Maemo Mapper will use flite to synthesize a voice-based notification of the contents of the waypoint's description, thus providing you with an audio indicator of when and where to turn.
The amount of time/distance in advance that Maemo Mapper will announce the coming of a waypoint is configurable in the Settings dialog box. Also, the path of the flite binary to use is configurable in the Settings dialog box.
In the week since receiving the Navicore package (with the GPS receiver), I've installed and made use of everything I could that John talks about here. While I haven't been able to emulate a “$2,000 in-car-navigation system” yet, I have enjoyed using the N800 as a handheld GPS with the promise to rival many Garmin, Magellan or Tom-Tom units.
The Bluetooth connections between the N800, GPS receiver and cell phone (Nokia E62) are seamless and remarkably fast, flexible and error-free. I just took the N800 into another room while it downloaded maps and stayed in touch with the GPS receiver, even though both the phone and the receiver were up to 20 feet away (and apart from each other as well).
Maemo Mapper can use any number of maps. I have it set up to use these:
Google Street.
Google Satellite.
VE (Virtual Earth) Street.
VE Satellite.
VE Hybrid.
OpenStreet.
You can choose maps from the menu. Switching from one to another is quick and easy. You can zoom in and out with the N800's + and – buttons. These load very fast on a good Wi-Fi connection, and fast enough using the E62's GPRS connection through Cingular (now AT&T).
I'm looking forward to trying other mapping services as well, including TerraServer. Meanwhile, the current list gives me lots of angles to explore. Virtual Earth (from Microsoft) is especially nice, with a number of advantages in look and feel over the Google alternatives.
Maemo Mapper provided a lot of fun while walking and taking taxis around San Francisco and Houston. Oddly, the red track left on maps in Maemo Mapper wanders off course at lower (walking and stuck-in-traffic) speeds. When idle, it might wander up to several blocks away from where it sits, leaving a bug-splat of red scribbles on the screen—not sure what's up with that. But, I am sure that, if it's a bug, the Maemo Mapper developers will fix it.
Flying was less fun with Maemo Mapper because it wanted to download map tiles, and there was no Net connection to allow that. (Though it was cool to see how many satellites I could get looking out one side of the plane and seeing how fast and high we were flying.) I'm not sure if there's a way yet to download and store maps for whole states or parts of continents, but again I have faith that these things will be worked out—if they aren't already—by the Maemo Mapper team.
In summary, it seems unfair to compare the two systems, because their main purposes are so different. But, the contrasts in speed and versatility between them are hard to ignore.
I wish I could recommend the Navicore system, because I really want the “N” platform to succeed—and I think it's great that Navicore is breaking the ice in what I hope will become a competitive market for software, hardware and services for handheld Linux devices. I also hope Navicore listens to our feedback (and other feedback as well) and continues to update and improve its offering.
Of course, I strongly recommend that Navicore embrace open-source development methods, in addition to embedded Linux hardware. Although there has been no official word from Garmin, I've heard from both Linux developers and Garmin staffers that future generations of Garmin gear will be built around Linux operating systems and sensibilities, and will no longer shackle users to Windows-only software for installing maps on attached GPS units. Rather, the units will simply be detachable storage devices, as OS-neutral as a USB thumbdrive. Navicore would be wise to take the same kind of approach. At the very least, opening up the development process would offer the best chance for continuing to work out the bugs that make Navicore's software so slow and frustrating. It would add value while not subtracting a penny from the price Navicore charges for the whole package.
As for Maemo Mapper, it's a great app that will only get better.
Doc Searls is Senior Editor of Linux Journal. He is also a Visiting Scholar at the University of California at Santa Barbara and a Fellow with the Berkman Center for Internet and Society at Harvard University.