Neo 1973 GPS
The smartphones contain an integrated GPS receiver. The devices used are marketed as Assisted GPS ('AGPS'). Performance requirements are defined in GSM/GPRS 3GPP TS 25.171, CDMA 3GPP2 C.S0036-0. There is some discussion available as to what significance that "A" might have.
The external antenna for the GPS uses an MMCX connector. More information about external antennas on the GPS antennas page. The connector for the internal GPS antenna also uses an MMCX connector. The external connector is located on the side of Freerunner.
A critical problem with early (current) GTA02s is that accesssing the SD card generates RF noise, which causes very long TTFF (time to first fix) (10min+ or longer). See this page for more discussion and suggested fixes. Using an external antenna is one.
Low level access
The Neo 1973 uses a separate userland driver to access the Hammerhead GPS. See this article for more information on this driver: gllin
The gllin driver itself is available here: http://3rdparty.downloads.openmoko.org/gllin/ It can be run from a command line. It outputs the NMEA data stream from the Hammerhead chip on a pseudotty device, so that it can be read as if the data were coming in on a serial port.
Here is email from Michael Shiloh about it. http://lists.openmoko.org/pipermail/community/2007-November/011916.html
There was an effort to write a Free Software program that could be used instead of this binary-only program, but this stalled after the decision to change GPS chips in GTA02. The Iphone 3G uses the same GPS chip. It's not inconceivable that this might lead to further effort.
See Hammerhead/Protocol for details and the latest status.
Some scripts for those with the binary are on Manually_using_GPS
Please see the important information on gllin!
There is no userland driver required for the GTA02, the driver is built into the kernel.
To turn on the GPS, echo 1 to the sys file:
echo 1 > /sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron
To read from the GPS, simply read /dev/ttySAC1. Use the gpspipe command like this:
gpspipe -r 127.0.0.1 2947
You will find gpspipe in the package gps-utils. You can also just "cat /dev/ttySAC1" but it produces the unknown msg*58; This doesn't happen with gpspipe.
Before getting a fix, the GPS spits out lots of "$GPTXT,01,01,01,NMEA unknown msg*58", though these stop once a fix is obtained.
A position without a fix looks like this:
One with a fix:
(The given position is in central Scotland.)
--Speedevil 11:52, 7 April 2008 (CEST)
In Openmoko projects, there is a GPS test program called agpsui that provides graphical and text dump of GPS information. See Howto Test Your GPS with agpsui. The project is called Openmoko AGPS UI project.
Possible GPS applications
As people develop more sophisticated GPS applications, please note them here.
- I want to look at maps.
- I want to go somewhere, tell me how to get there. Routing.
- I want to help with the Openstreetmap project by collecting data.
- I want to use Openstreetmap data in a map viewer.
- I want to use the smartphone GPS to go Geocaching
- I want the GPS to update profile settings based on my location. Example, mute the phone ringer when I am at work.
See [http://lists.openmoko.org/pipermail/community/2007-July/007252.html for another collection of ideas.
Please note if a program works or if it's vapourware.
- Cairo-based mapping (I wonder what this is?)
- Cumulus GPS software for glider pilots (and pilots in general), has a port for Qtopia and pulls (world) maps from the KFLog flight planner project. I think someone has put a project like this on the projects website * Pyroute is a routing program written in Python by Ojw, and a mobile phone GUI for maps, GPS, and routing.
- Raná is the new version of pyroute
- Gosmore is a routing and viewer of OSM XML data such as the planet.osm.
- GPS Sight, a popular Openmoko project under LGPL.
- GPS-Trail a simple trail logger.
- roadmap mapping system using freely available maps (US census TIGER, DGLib, shapefiles).
- Navit a car navigation system with routing engine.
- Openmoko AGPS UI project.* Orrery, an unpopular Openmoko project for displaying the night sky.
- qpegps qtopia (arm PDA) based map viewer with gps features
- QMapControl Qtopia based mapping widget. Displays maps and custom data, also other widgets can be bound to coordinates. GPS parser for the gllin output included.
- TangoGPS mapping program. Downloads maps on demand and caches them, very efficient. Works very well.
Using the Neo's GPS on a Laptop
This procedure depends upon being able to set up a network connection between your Neo and your laptop. The connection can be over either WiFi or USB cable.
First be sure you have gllin (on Neo 1973) and gpsd installed. Some Neo Freerunner images don't have gpsd, they use a different GPS stack called gypsy.
- On host type: nc -vvn -l -p 5000 > /tmp/nmeaNP (Host starts listening on port 5000 for GPS-signals and sends them to /tmp/nmeaNP)
- On the Neo type: nc 192.168.0.200 5000 < /dev/ttySAC1 (Signals from device will be send to port 5000 on host.) If your host is connected to the neo via wifi, change the IP address in the command to the one of the host.
- On the host PC install GPSD, your GPS is attached as /tmp/nmeaNP
- start gpsd on host with: gpsd -p /tmp/nmeaNP
- run your application! I used gpsdrive and it works better than my stand-alone GPS.
Tested with RoadNav. Works great!
If you have an unlimited GPRS data package you could make your gpsd service accessible over the Internet. This opens up many possibilities. For example, you could implemented AVL (Automatic Vehicle Location) by having a web server somewhere query your gpsd server for your position and write it to a KML file which would then display your location on a Google map.
Bluetooth GPS relay
To make your Neo appear like a regular Bluetooth GPS:
- Power up the bluetooth radio
- Run the gllin script
- run sdptool add SP
- run rfcomm watch 0 1 sh -c "cat /tmp/nmeaNP >/dev/rfcomm0" &
- Power up the bluetooth radio
- Ensure gpsd is running and the gps-utils package is installed
- run sdptool add SP
- run rfcomm -r watch 0 1 sh -c "gpspipe -r >/dev/rfcomm0" &