The OpenDMTP Project
Home | Project | Downloads | Contact

January 31, 2006

OpenDMTP On The Road

OpenDMTP is an Open Source project designed specifically as a highly configurable and extensible protocol for communicating with mobile devices over a high-latency/low-bandwidth network. We're taking OpenDMTP on a road test and examining the results.

GPS Tracking protocols:

There are a lot of mobile GPS tracking devices on the market today with their own closed proprietary protocols and it's now time for an open, full featured, protocol that can provide the rich set of features that a mobile GPS tracking system requires. In searching the web, there are a few open protocols available for transferring data (including GPS information) between devices. However these solutions are generally designed for non-mobile applications and lack some of the low-bandwidth, configurable, and extensible features that a mobile application requires.

OpenDMTP is an Open Source project designed specifically as a highly configurable and extensible protocol for communicating with mobile devices over a high-latency/low-bandwidth network.  The protocol is simple, yet provides for a rich set of features when used with mobile GPS tracking applications. The protocol facilitates the generation of 'events' on the mobile device based on criteria such as changes in location (from GPS analysis) or other inputs on the device (e.g. digital or analog data inputs). Once these 'events' have been generated, the protocol then facilitates the transmission of this data to a remote server for other analysis and storage. As a bonus, the OpenDMTP project provides a full featured reference implementation that showcases some of the features capable with the protocol. Included are a set of GPS rule based features that provide event generation for criteria such as Start motion, Stop motion, Periodic in-motion, Distance travelled, and Geofence arrival/departure.

To demonstrate the featiures of the OpenDMTP protocol, we'll take it on a road test in Northern California and then look at the results.

The Client Configuration:

We're using the latest available version of the OpenDMTP reference implementation available on SourceForge (OpenDMTP v1.1.1) built with GPRS (General Packet Radio Service) support. The OpenDMTP reference implementation works fine on Windows (under Cygwin), but we will be using a Gentoo Linux laptop for our test client. We've attached a Pharos GPS-360 USB GPS receiver to receive GPS events, and a BlueTree M2M Express GPRS modem (with a Cingular SIM card) to transmit our data back to our server. The client properties will be configured to report events based on the following GPS based rules:
  • Start of motion (10 kph - about 6.2 mph)
  • Stop motion (when not moving for 5 minutes)
  • Periodic in-motion (every 2 minutes while in motion)
  • Geofence arrival/departure zones around the Auburn, California fairgrounds, and the Sacramento Fairgrounds (Cal Expo).
To demonstrate the simplicity of the server/client connection, the client will connect over Internet to a remote Linux server over a simple DSL service.

The Server Configuration:

We'll be using a Suse 9.2 Linux machine running over a simple DSL service as our server. 'sockserve' (included in the OpenDMTP reference implementation) was compiled on this machine and will be started up to listen on TCP port 31000.

The Road Trip:

We will start our field test at the Auburn Fairgrounds (in the Gold Country!) where we will see our first 'StartMotion' and 'Departure' messages.  Our client collects these messages and promptly sends them to our server over the GPRS modem. We're now on our way!

We get on to the freeway (Westbound I80) and travel South-West toward Sacramento.  As we travel toward Sacramento, the client is updating the server regarding our progress by generating and transmitting 'InMotion' messages approximately every 2 minutes (and since the GPS also reports speed, to avoid any "issues" I will try to stay at, or under, the speed limit ;^).

We decide to stop in Roseville at a popular fast-food restaurant for lunch (can you guess which one?). After a few minutes of non-motion, the client determines that we are now stopped and generates a 'StoppedMotion' message. The burgers were great (as usual) and we're back on the road about 20 minutes later and moving again. The client detects our motion and sends a 'StartMotion' message back to the server.

We continue South-West to Sacramento while the client continues to update the server with our progress with 'InMotion' messages. We hit a bit of traffic which is evidenced by our reduced speed.

As we finally arrive at the Sacramento Fairgrounds, we get our final 'Arrival' message which is sent to the server indicating our journey is now complete.

Final Analysis:

As you can see, all events were delivered accurately and timely to the 'sockserve' program running on a Linux machine over a simple DSL Internet connection. If, for some reason, a GPRS connection wasn't available in a particular area, the client would cache the generated events until which time GPRS becomes available and the data can be transmitted to the server, so nothing is lost.

The OpenDMTP reference implementation currently supports GPRS and straight socket communication, however it isn't limited to these types of transport media. Other types of transport media are possible as well, such as BlueTooth, or WiFi. As for hardware, GumStix ( is planning on releasing a daughter board soon that has on-board GPS support that will make a perfect reference platform for the OpenDMTP protocol.

Try out the OpenDMTP project yourself. You'll find the protocol documentation and reference implementation download at "".

For questions or comments, please feel free to contact me at

Copyright (C) 2006 Martin D. Flynn, All rights reserved.