External devices can communicate with the Geotab GO device through the revised Third-Party Data CAN protocol. The hardware interface will be the IOX-CAN. Two-way communication is supported, allowing a MyGeotab API call to produce messages on the connected CAN network using the IOX-CAN. An initial handshake is required before messages can be produced using the IOX-CAN.
The GO device will start processing third-party data if it is properly formatted. Once processed, the third-party data will be saved and sent to MyGeotab as Status Data.
The following process should be followed when integrating a third-party device with the GO device using our Third-Party Data CAN Protocol:
Contact Geotab Solution Engineering team to obtain an External Device ID for your third-party device. This will allow us to uniquely identify your device when it connects to a GO device. Thereafter, any connection established by that type of external device will be recorded as Status Data in MyGeotab under the naming format "[External device name] device connected".
There is an extensively defined Status Data ID list which can be found at MyGeotab Diagnostics. Specifics regarding Status Data ID implementations can be found on the README sheet.
Implement the Third-Party CAN Protocol in the external device as described below. The CAN speed to be used will be 250K or 500K, and the external device should have its CAN transceiver set to normal mode. The IOX CAN will auto-baud between 250K and 500K.
The CAN ID is an extended frame message (29-bit) and is broken down into 4 bytes, with the most significant byte (MSB) (byte 1) containing 5 bits to make up the 29-bit ID header. A breakdown of the CAN ID is shown below:
Byte | Description | Value |
---|---|---|
Byte 1 | MSB, 5 bits | 0 |
Byte 2 and 3 | Geotab's parameter group number (PGN) | 0x0FDB |
Byte 4 | Message type | Varied |
Indicates how many bytes of data are being sent (up to a maximum of 8).
All values must be sent with the least significant byte first.
Each piece of information related to the third-party device must be sent individually and have its own Status Data ID as part of the message.
Note: See Appendix A for an example of raw message data.
An initial Handshake is required in order for the GO device to accept MyGeotab API calls to produce CAN messages from the IOX-CAN. Vehicle ignition must be on during the handshake process.
Issued by the GO device upon receipt of Third-Party Data from the external device.
CAN ID breakdown | Value |
---|---|
Byte 1 | 0x00 |
Byte 2 (Geotab PGN) | 0x0F |
Byte 3 (Geotab PGN) | 0xDB |
Byte 4 (Message Type) | 0x02 |
Data length | |
DLC | 1 |
Data breakdown | |
Data 1 | The message type acknowledged |
Issued by the external device upon powerup once every second until an Acknowledge message (Msg Type 0x02) is received.
CAN ID breakdown | Value |
---|---|
Byte 1 | 0x00 |
Byte 2 (Geotab PGN) | 0x0F |
Byte 3 (Geotab PGN) | 0xDB |
Byte 4 (message type) | 0x81 |
Data length | Value |
DLC | 2 |
Data breakdown | Value |
Data 1-2 | Device ID (assigned by Geotab) |
Reply: Third-party device ID ACK |
Issued by the external device whenever it wants Third-Party Data saved on the GO device. Rate limit is 100 logs per 10 minutes, for each distinct data ID. If you exceed the rate limit, the GO device will stop taking data from the IOX.
CAN ID breakdown | Value |
---|---|
Byte 1 | 0x00 |
Byte 2 (Geotab PGN) | 0x0F |
Byte 3 (Geotab PGN) | 0xDB |
Byte 4 (message type) | 0x80 |
Data length | Value |
DLC | 6 |
Data breakdown | Value |
Byte 1-2 | Status data ID |
Byte 3-6 | Status data |
Reply: Third-party data ACK (msg type 0x02) |
Currently not implemented.
Priority Status Data follows an expedited processing workflow on the GO device, but will otherwise be treated the same as the 0x80 Status Data message. It will also be logged using an Iridium modem connection, if available.
CAN ID breakdown | Value |
---|---|
Byte 1 | 0x00 |
Byte 2 (Geotab PGN) | 0x0F |
Byte 3 (Geotab PGN) | 0xDB |
Byte 4 (Message Type) | 0x87 |
Data length | Value |
DLC | 6 |
Data breakdown | Value |
Byte 1-2 | Status data ID |
Byte 3-6 | Status data |
Reply: Third-party data ACK (msg type 0x02) |
A handshake must be completed before this functionality will work. To send messages from MyGeotab to the external device, download the source code of the Starter Kit sample, and replace the Sample API with the following script. The alternative is to paste the script in the Runner.
Third-Party Device ID from external device (4208 is a test Device ID).
(Device ID: 4208 = 0x1070)
CAN ID: 0x000FDB81
DLC: 02
Data: 0x70, 0x10
Third-Party Device ID Acknowledge from GO device
CAN ID: 0x000FDB02
DLC: 01
Data: 0x81
…
Third-Party Data from External Device
(Status Data ID: 9999 = 0x270F, Data Value: 230 = 0x000000E6)
CAN ID: 0x000FDB80
DLC: 06
Data: 0x0F, 0x27, 0xE6, 0x00, 0x00, 0x00
Third-Party Data Acknowledge from GO device
CAN ID: 0x000FDB02
DLC: 01
Data: 0x80