Two Ways To Use GPS With Linux
An anonymous reader writes "Whether you're wardriving, vacationing or building a Car PC, a Global Positioning System is a handy tool. Interacting with your GPS via your PC makes for an even better GPS experience. As a Linux user, GPS/PC integration can be somewhat sketchy. Vendors don't write software and drivers for Linux; it's probably safe to assume that the good folks over at Garmin would say something along the lines of "Lih-what?". Have no fear! Using your GPS with Linux isn't impossible! Check out this review over at LinuxForumsDOTorg of two fairly robust GPS navigation programs for Linux."
I use gpsdrive without any driver issues. The real problem is the availability of maps.
Linux is perhaps the most stable operating system currently on the market. In fact, in several studies that I've seen, Linux as an embedded system outperforms and crashes less often than dedicated software on traditional GPS systems.
GPS Review
Posted by jeremy1701 at Wed Sep 22, 2004 12:23 pm
Review of Two GPS Navigation Programs in Linux
GPS's, or global positioning systems, are becoming more and more popular every day. With awesome standard features, increased map detail and dropping prices, it's no wonder why. Add to that the the growing popularity of treasure hunting games like geocaching and it's easy to understand the popularity of this little gadget.
There are several programs available for Linux that will interact with just about any GPS on the market. This software generally servers to either interact with or enhance the GPS unit. Programs that interact can transfer information to and from the unit, including way-points, routes, detailed maps, saved tracks and more. These usually run on a proprietary protocol, such as Garmin or Magellan. Though the protocol is considered proprietary, development is supported by most companies and is very well documented. Other types of programs enhance the GPS unit by providing a more detailed and comprehensive visual display of the information read from from the GPS. These mostly use the open source NMEA protocol to read and display data from the GPS such as position, time of day, signal strength and others. These are the types of programs this article will focus on, specifically RoadMap and GPS Drive. Neither of these provide the type of trip planning funcationality associated with programs like Rand McNally trip planner or Yahoo! Maps, however, Rand McNally Trip Planner works well, but not perfectly, under Wine. Should you have any questions on installation, configuration or general use, I can usually be found hanging around at http://www.linuxforums.org. Feel free to post your question.
The basic setup I used for this review consisted of a Garmin Rino 120 GPS connected through the serial port (/dev/ttyS0) to a Compaq Armada m700 Laptop running Mandrake 10.0. This is a pretty basic and straight forward setup. It is simple to install, configure and use.
RoadMap v1.0
Home Page: http://roadmap.digitalomaha.net/
Rating: 4/5 Penguins
Roadmap is a vector based navigation program. This means that maps can be zoomed in or out without having to download another map or without the map image becoming pixelated like the bitmap based map programs do. The map files used by RoadMap are generated from the TIGER files provided by the US Census Bureau, and thus cover the USA only. Maps have to be generated to a Roadmap format using the suite of utilities that come with the program, however, pre-made maps are available to simply download and use. One especially nice thing about RoadMap is that the maps are available for download by state, rather then by coordinate location.
Roadmap can be built on either GTK or QT platforms, but also comes as precompiled binaries able to be run from a local directory. The installation is not Linux standard at all and the documentation is somewhat limited. Rather then a single configure file, there are separate, pregenerated Makefiles for GTK, GTK2 and QT. I found this to be slightly confusing, but installation went smooth after that. I also tried the binaries and they worked great, with the exception that the map directories still needed to be created.
Roadmap uses the gpsd daemon and the NMEA protocol to communicate with your unit. In order for you to use Roadmap, you have to manually start gpsd and configure Roadmap to listen on the correct port before it will work. There appears to be support for starting and stopping gpsd from within the program when it loads, but it doesn't seem to work with the either the pre-compiled binaries or the source.
Roadmap can display other GPS information such as number of connected satellite's and signal strength. This utility is actually a completely separate program, however calling the program from within Roadmap doesn't work. Starting the program separately gives a plethora of additional useful information.
Roadmap can also be set-up with the flite voice synthesis
Vendors don't write software and drivers for Linux
Who cares about software and drivers. Open protocols and open standards, that's what we need!
bash$
I believe the success of GPS has always been the fact that it can reliably give you your position at any point in time. To achieve this, the battery _HAS_ to last long enough. :)
I'm all for linux, but when it comes to GPS I have always been sceptical.
At work, we are developing a device for the police department. It's a portable device based on the ARMVI CPU that runs WindowsCE; the OS does quite a good job. The question is, I guess, can the linux software live up to those needs?
When in its active state, GPS's really use one intense amount of power that it's just not funny; this means the software will need to keep the GPS out of active state for as long as possible. Built-in GPS OSes keep to that important rule as simple rule of thumb. Maybe I should go through the linux code and see what they dp; chances are good they're doing the same, or even better; maybe I can even contribute something to the code base later when I'm bored.
Most GPS receivers will deliver their signals in NMEA format, which is an accepted standard. Most of the USB units even only contain a pl2303 chip or another form of USB2Serial driver and work just fine. I bought mine on eBay, just plugged it in, and hotplug did most of the work. It appeared as a new USB serial port, so I could gpsdrive without any problems.
Life is just nature's way of keeping meat fresh.
Slightly related, someone recently posted to the Full Disclosure mailing list, with a guide for how to get the Pharos GPS-360 (as sold in the "Microsoft Streets & Trips 2005 with GPS locator" package) working under linux. Might be useful to some people
Um, Does your GPS output NMEA? Read the owners manual. If you read the article, then you would know both programs use NMEA from the GPS on a serial port.
If your GPS provides it then Ok it should work, If it doesn't, then your milage may vary.
The truth shall set you free!
Most GPS's use RS232, or a usb-RS232 converter. They mostly are able to use the NMEA standard for transsmission. This is definatly one application where linux has all the drivers it needs.
gpsd: serve up realtime GPS data
s /html57_us er/v.in.garmin.html
http://gpsd.berlios.de
gpstrans: download/upload Garmin data
http://gpstrans.sourceforge.net
gpsbabel: up/download & convert GPS data
http://gpsbabel.sourceforge.net
v.in.garmin + GRASS GIS 5.7: download GPS directly into serious mapping & analysis software
http://grass.ibiblio.org/grass57/manual
http://grass.ibiblio.org
have fun, don't get lost.
~.~
I'm a peripheral visionary.
I don't want to torpedo the purpose of this whole article, but Linux isn't as far out in the cold as you might think. Most GPS programs out there use the NMEA protocol which is handled over a common serial port. The article poster seems to imply that Linux is left out in terms of drivers, but the fact is that most GPS units support the NMEA protocol. That includes Garmin, Magellan and others. If you have a common DB9 serial connector and the right cable, you can get any number of GPS units to work with any number of programs.
That being said, what is troubling is the "any number of programs" that I mentioned above. There really is not a large community of developers working on consumer mapping applications. If you look hard enough, you may stumble across some gems here and there, but for the most part the Linux scene is noticably lacking.
Tuxmobil's Page is a good place to start looking at different apps.
Hmmm...
I used Garble because back in Summer 2000, before the grueling years of my physics PhD program began, I took a 15,000 mile roadtrip around the USA. During most of the driving I had my laptop connected to my GPS, pinging it every minute (through a simple bash script) getting a latitude and longitude. After my trip I compiled all the points, and used IDL to make some nice plots from the data. IDL was cool because I could easily set up map projections w/ my latitude/longitude data, overlap satellite images, and even plot country/state borders (IDL costs $$$$$, but Johns Hopkins University physics department has a large client license on the student terminals, which is nice). Check out my final Mercator Plot and Satellite Perspective Plot. My route is in red (chronologically going clockwise around the country), yellow circles are where I spent the night.
You can read my unfinished online journal here. Yeah, it's been a few years since the trip, and I do really need to finish that journal and clean up the ugly page layouts.
make world, not war
I've got my Garmin Vista talking to my OS X box via a Keyspan USB to serial cable and run the freeware GPS Connect and its shareware big brother Terrabrowser to upload and download waypoints.
This sig intentionally left justified.
Well, they have at least made the protocol specs available.
I hand-built serial cables using plugs I got from this guy (Elsewhere on that site there's links to folks all over the world selling the same plugs for a range of different GPS receivers). Apparently even the tiny little Garmin Geko 201 and Geko 301 (but not the 101 model) also speak serial - and they're tiny cute little things they are!!!
My little eTrex has a menu with a whole bunch of different 'languages' that it will speak (and/or receive) via the serial port. According to the manual (warning: pdf) (page 45) it speaks NMEA 0183, a bunch of proprietary Garmin stuff and a couple of flavours suitable for differential work. I know from fiddling with mine that it also speaks a 'plain text' (they're all plain text, but this one is more so) format that is quite human readable and probably quite easily parseable with some perl.
Another imporant point about GPS and Linux (*nix in general is time). GPS requires incredibly accurate time to operate, so by implication GPS receivers make excellent clocks. Last time I checked xntp had support for NMEA (GPS) as a time source.
A quick freshmeat (if 'google' is a verb, then surely 'freshmeat' can be one too!) will tell you that GPS on *nix is nothing new!!! (Not all of those returns are gps nav related, but there's a lot of stuff to parse gps sentences, moving maps, program receivers, all kinds of goodies!
I find your ideas intriguing and I wish to subscribe to your newsletter.
Yeah I know, you're learning all this stuff and you want to do a neat project, but why re-invent the wheel? If all you want is your position, just pay the 100 bucks and be done with it. You'd have to have something like a 5 layer board to make it work, plus you'd need to buy the chips, hook them up etc, all for something that may not work in the end. Some have tried it a few years ago and posted their results on the web. There is open source software out there for such a thing. But in the end it's just easier to buy an inexpensive unit with the chip that you want and crack it open if you want to do some experimenting (the kind Homeland Defense would be interested in).
OLEX is a nice piece of commercial mapping software that runs under Linux, and to my knowledge there is a lot of very positive feedback from the local fisherman in the area where I work, Scotland, West Highlands.
Our diversity is our strength
Usually: yes.
I have some USB devices and they all work with Linux. In fact, with Linux they worked plug-and-play while for Windows 2000 I needed to install the drivers that came with them.
Some instructions, how to start gpsd automatically when connecting USB GPS receiver. There is also described how to start Kismet server automatically.
http://wiki.version6.net/Kismet hotplug
fixed link
GIS-Knoppix (http://www.sourcepole.com/gis-knoppix/) comes with a set of pre-installed GIS (Geographical Info Systems) software and utilities including GPSDrive.o s&os=Linux is an excellent resource fo GIS, GPS and related tools including many for Linux &c.
A.
http://www.freegis.org/browse.en.html?category=
I've been talking to the OSx guys about this. It turns out that Garmin's idea of USB and the spec don't jive. For example when you ask for the 1st 4 bytes of the config descriptor, garmin USB devices give back more than 4 bytes that are all zeros.
Its a shame too since the garmin GPS 18 USB is a slick little device. One other thing to consider with Garmin's USB GPSs is they don't look like a serial port. You would expect at least one of the USB channels to look and ack like a 9600 baud NMEA device so it would work with all the existing software but they screwed that up and only talk their own binary protocol.
Garmin has gone out of their way to not document the WIRE PROTOCOL of the USB units (60C, 76C, 96C, VistaC, Quest, 26xx, etc.) but to instead document the API into their underachieving Windows driver.
An earlier version of the spec pretended to be a protocol spec. I contacted them with a number of discrepancies betweeen my observations on a protocol analyzer and that specification. Within a few weeks, a new version of the spec appeared that removed the pretense of being a protocol spec.
All (ok, most all) GPS units send data in NMEA format. Electrically NMEA is close enough to RS-232 that you can plug NMEA directly into a PC's serial port. The NMEA data format is plain ascii text. A small set of "sentances" are repeated every second. Each "sentance" begins with s dollor sign "$" and continues to the end of the line. All values are human readable for example latitude and logitude are represented as something like 32.345,118.324. Google will find you all the details.
So, interfacing to a GPS is not hard. Building an application that does something usfull (that the GPS itself does not already do) would be harder.
But there is not reason to wait for someone to write a "driver" for a GPS