Note: This html document was converted from a document created and put into the public domain by John F. Waers (jfwaers@csn.net.)

This document was converted by Tim Hogard (thogard@inmind.com.)

Note that new material has been added at the end of this document.


Garmin Protocol

Garmin Protocol

GRMN/GRMN Simplified Communication Protocol Communication Setup

Message Format

All messages start with a hexadecimal 10 start-of-message character, and are terminated by a checksum byte followed by hexadecimal 10 and 03 characters. If a data field within a message (including the checksum) contains a hexadecimal 10, it is repeated. The checksum is the 2's-complement of the modulo-256 sum of all of the message bytes after the start-of-message character. The Garmin PCX5 program always starts communication with a request for the model/software version. This appears to be unnecessary if just communicating with a GPS 45. However, there are probably differences in protocol between the various models of GPS receivers, and the protocol described in this document probably does not apply to all models.

The first message byte always indicates the type of message to follow.

The second message byte always indicates the number of bytes in the message to follow, excluding the checksum and message terminator bytes. The remaining message bytes contain the message itself, which is dependent upon the type of message being sent.

Commands

There is probably a command for repeating the last record, in the event of a checksum error. The GPS 45 will automatically retransmit the last record if a send next record command is not received within a 5 second time-out period.

"OK" Message

(or "let's get on with it" command) (GPS 45 seems to respond to all of the 0A02xx commands with this message):

Number of Records Message

10 1B 02 05 00 DE 10 03

Track Record Format

10 22 0D CB 17 92 1C E6 08 45 B5 B5 5B BB 08 01 85 10 03

Route ID/Name Record Format

10 1D 15 03 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 00 20 20 20 7B 10 03

Route Waypoint Record

10 1E 3A 48 4F 4D 45 20 20 00 22 92 1C 3F FA 44 B5 A6 19 9B 08 31 32 33 20 53 4E 4F 57 4D 41 53 53 20 50 4C 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 EE 10 03

Waypoint Record

10 23 3A 48 4F 4D 45 20 20 00 22 92 1C 3F FA 44 B5 A6 19 9B 08 31 32 33 20 53 4E 4F 57 4D 41 53 53 20 50 4C 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 E9 10 03

Almanac Record

10 1F 2A FB 02 00 00 48 48 00 00 28 B8 00 00 80 AC 00 A8 6A 3B B1 0D A1 45 1A 99 1F BE 42 D5 9B BF D9 4A 14 C0 EB 48 07 B2 82 73 74 3F A1 10 03 These messages are sent at the completion of a database transmission, when no more records remain to be sent.

Upload from GPS 45 Protocol

Send appropriate upload database command (almanac, route, track, waypoint) GPS 45 will respond with two messages: "OK" message Number of records message Send the next record command repeatedly until EOF record is observed. For each command, the GPS 45 will send the next record. There appears to be no need to differentiate between the types of next record command--any of them seem to work.

Download to GPS 45 Protocol

Send number of records message GPS 45 will respond with a send first record command of the format: 10 06 02 1B 00 DD 10 03 Send the appropriate record. For each one, the GPS 45 will respond with a send next record command for the appropriate record type. Just look for the 0602 in the message and keep on sending until the GPS 45 responds with the appropriate EOF record (0C in the second byte). Format of longitude, latitude and time fields All are 32 bit signed integers in "little-endian" format; i.e. least significant byte is transmitted first. To convert the decimal latitude and longitude to degrees, multiply by 180 / 2^31. The latitude and longitude are referenced to the WGS84 datum. The time field is the number of seconds since 00:00 UTC, January 1, 1990. Summary of Message Formats

New stuff starts here....

This was added by thogard@inmind.com

This is a list of known codes. The number in the form of 0300 are Intel notaion for the number 3. I expect the gerneral format for the the codes is [Start] [MsgType] {[SubMsg] {[Parameters]}}{ [Checksum]}. This would imply that the 10 03 s not an end of message indicator but a trun arround command instead.

10 1c 02 xx xx Send data (xx) in Async mode. When used with 00, it turns off async mode.

Hardware

The Garmin G40, G45 and G90 are all based on the same hardware. It consists of Garmins multiplexing GPS reciever as well as an 80188 based system. The 80188 controls the display and keypad as well as the coordinate conversion to the different formats and map datums. The program is stored in what could be Flash RAM so it might be possable to make modifications to the program area using the Garmin protocol.