This project is read-only.
Project Description
A lightweight GPS logging application for Windows Mobile 6. Logs to a GPX or KML file which can then be used to geotag your photos or imported into other applications.

Created using C#, .NET Compact Framework and the Windows Mobile 6 SDK.

If you are a developer and would like to continue work on this application, please contact me and I can make you coordinator.

Introduction | Installation | Usage | Settings | Geotagging | Keep In Mind | Code | Screenshots | Advanced Configuration

New features in v0.5

GPSTracka Poster


This application uses the GPS receiver on your Windows Mobile phone to log your coordinates to a log file at regular intervals. Its purpose is to track your movements while you are out so that when you get back home, you can import those files and use it with whatever application accepts GPX or KML files.

For example, I used it while I was on vacation in Greece and I then used a geotagging application to import the GPX files, match the datetimes against the datetimes on the photos and then append the GPS coordinates to the photos. The end result is that my Greece photos are geotagged and appear on the Flickr map.


Download the CAB file and copy it over to your phone. Run it from File Explorer, accept that it's from an untrusted publisher and proceed with the install.

Go to Start > Programs and look for an icon that resembles a white paramecium. Double click that and you will get the GPSTracka. It should then be available in the Start Menu since it was recently used.

Now go outside, run the application, and choose a COM port. Then click Verbose. Wait a while and if after a few minutes you see NMEA sentences in the main textboxes, then you have the correct COM port and baud rate. If not, try another COM port.


The app now comes with its own help file accessible from the menu

sshot006.jpg sshot010_joined.jpg

Once you have the application up and running, click on Options.

Verbose: Sometimes, the GPS logging may not work (inside a building, train, new country, alien invasion, etc). If you click verbose, the textbox will start displaying the raw GPS NMEA data being received by the receiver. If you understand it, then good for you, else it's something cool and complicated to show to your uninterested friends. But the main parameters you're looking for are GPGGA (location) and GPGSV (satellites visible). If you want to understand it, you can read up on NMEA sentence information. I also recommend you use this the very first time you run the application to figure out which COM port and Baud Rate is right for you.
Note: Verbose log is not available when using Windows Intermediate GPS driver.
Clear: This clears the textbox.
Settings: This takes you to the settings screen where you can specify the COM port, baud rate, and where to log the GPS data.
Exit: Quits the application. If you click this while GPS is active, you will be asked to quit. When logging to file, your data is never lost by terminating the application.
Satellites: Shows GPS satellites information - signal strength, satellite visibility and location on sky. Satellite information is actualized only when GPS device is running.
Start: Obviously, this starts the logging. If you selected Verbose in the options menu, it'll give you all data being received in the textbox. Else, it will log the data at the specified interval to the textbox or file. If you have logged some data recently and you stopped logging and then you press start, you are asked to continue logging to the same file. This does not occur when you restart the application or visit the settings screen (a new file is created).
Stop: The Start button changes to Stop when you press Start. Then you can use it to stop GPS logging. Helpful!

When you start logging, you will receive data in a terse format:

112358,49.2582123,-123.188958, 123.9

This can be understood as

11:23:58 AM.  49.2582123 North. 123.188958 West, 123.9 m height

Once you come back from vacation or a day out, you will need to import the GPX files to your computer. The files follow a yyyyMMdd.gpx naming convention.


  • Comm Port: Setup source of GPS data
    • Use Windows driver: Check this to use Windows Intermediate GPS driver instead of eading data from COM port. Using Windows driver may solve some problems with GPS. Using COM port allows you to use GPS device not configured with Windows driver or use multiple GPS receivers at once. You can also configure COM port in such way that it reads raw data from Windows driver. Using Windows driver or reading data from Windows-driver-provided COM port allows you to run multiple GPS softwares at once, which is impossible when reading data directly from COM port GPS devices is attached to. When using Windows GPS driver, NMEA data is not accessible. You cannot save NMEA log files and you cannot view verbose data. Microsoft GPS driver is configured in Start > Settings > System > External GPS.
    • Read: This drop down is the COM port that gives you your GPS data. This may be different on different phones. For me, it was COM1. You'll need to determine this for yourself by setting it and using Verbose mode. If you are using another port, not listed in the drop down, then you can type it in anyways. Note: Sometimes the port may be named GPC instead of COM. In case you have device with Microsft GPS Intermediate Driver (you likely do - it is supported in Windows Embedded CE 6.0 and later and Windows Mobile 5.0 and later), the driver output port (as set up in registry) is displayed right of combo box as recomended. You should use it as it allows multiple GPS applications to work in the same time and as an example, you should be able to use Google Maps/iGo/TomTom and GPSTracka at the same time.
    • Baud Rate: The data transfer speed. Different GPS receivers use different speeds, so you will need to experiment. I use 4800.
  • Polling Rate: How often the GPS data should be logged to textbox or file. I usually set this at 300 seconds. Shorter polling interval causes more precise log. On the other hand, a shorter polling interval means higher power consumption. This setting also depends on speed you are going to move. For the same precision you must set a shorter interval when driving than while walking.
  • Logging Options - To Text Box: The best way to know that it's working is to keep this box checked, so that you can see the values printed to the textbox. When not checked you have no knowledge if GPS is immediately working or not.
  • Logging Options - To File: To log to file, tick this checkbox and then select a folder by clicking the "..." button. It's best if you create a "GPSLogs" folder in "My Documents" or on your Storage Card and then specify that path. If not checked, you wil not have GPS log for future use! GPS logs are stored in files named by date and time when logging started.
  • Format GPX/KML/CSV: Some people prefer GPX (GPS XML format), some prefer KML (Google Earth XML format). If you want a lightweight file, then go for GPX; if you want to use your file with Google Earth and don't mind bloat, use KML (Google Earth can load GPX as well). CSV format is simple text format where date, latitude, longitude and altitude are logged in a comma separated string. It can be configured in Advanced configuration.
  • Log altitude: Check this to log altitude informations as well. When not checked track / points are rendered on the ground. Note: GPS altitudes are somewhat different from the altitudes you generally see on other maps. This can cause you track to be rendered in midair or underground. You can instruct Google Earth to ignore track elevation. The difference between GPS altitudes and regular altitudes arises as a result of how GPS measures it and how it is measured traditionally. GPS uses the WGS84 unified ellipsoid standard to account for the Earth's non-spherical shape, but others use sea level as the origin which is flawed because sea levels are different around the world. The result? On some parts of a map, your track will be good, on other parts, it will appear strange. If you know the difference in altitude for the map you'll be using, you can set it in the advanced configuration section. Also, keep in mind that GPS altitudes are about 1.5 times more accurate than lat-long. If your receiver supports it and you're using the Windows GPS driver, you can instruct it to obtain the true sea-level elevation instad of an ellipsoid elevation (in advanced settings).
  • Distinct points / track: The 'distinct' points option logs separate points to KML/GPX file, while 'track' logs a connecting line between them as well. Ignored for CSV. Note: Points are always logged to KML, because KML does not allow description for track points. You can easily turn points on and off in Google Earth or even delete them as they are in single folder. non-spherical shape, but others use sea level as the origin which is flawed because sea levels are different around the world. The result? On some parts of a m when you can fine tune or completely destroy the application. ;-) If you know the difference in altitude for the map you'll be using, you can set it in the advanced config. Also note: To reset settings completely navigate to application folder and delete the GPSTracka.exe.config file. This is also a good idea if the app is behaving weird.

Geotagging your photos

I ended up writing my own, and to my mortifrustration I discovered that an application for geotagging based on GPS logs already existed. I'd recommend GeoSetter which lets you load GPX files and match them against your photos. It also lets you make corrections visually.

Things to keep in mind

The first time you use this app, I recommend that you choose a COM port from the dropdown and choose verbose. Wait a while, be patient. If you start to receive NMEA data, then you've got the right port. If you get nothing, then try changing ports.

When you go to another country and turn your phone on, it'll take a while for the phone to get its bearings. Keep the application running for about 30 minutes to an hour.

This won't work on an airplane... they usually block signals quite well. I tried.

Using the GPS receiver is a drain on your battery. You'll need to turn it off when you're in one place for a long time.

Exceptions should get logged to the textbox. If you see an exception/error message, do copy paste it somewhere, such as to a note. I'd love to have a look at it to see what went wrong.

So far, tested with: HTC TyTNII, Sony Xperia X1, HTC Touch Diamond, HTC Touch Pro, HTC Touch HD. Let me know your phone model if it works for you.

Source Code

To work with the projects/solution, you will need

VS 2008 or VS 2005 SP1
Smart Device Programmability enabled in Visual Studio setup
Windows Mobile 6 SDK Refresh (Get the Professional one)

If you'd like to make changes, I can add you as a developer, but you will need to sign up with CodePlex first. You will also need to install VS 2008 Team Explorer


sshot004.jpg sshot006.jpg sshot007.jpg sshot008.jpg sshot009.jpg sshot011.jpg sshot012.jpg sshot013.jpg sshot014.jpg sshot015.jpg sshot016.jpg sshot017.jpg sshot018.jpg sshot010_joined.jpg

Last edited Jan 15, 2010 at 5:21 PM by mendhak, version 53