External devices can communicate with the Geotab GO device through the Third-Party Bluetooth Low Energy (BLE) protocol described on this page. The hardware interface is the IOX-BT.

The IOX-BT supports two modes of operation:

  • Connectionless data intake from advertisement packets
    The IOX-BT acts as a passive BLE sensor hub, detecting presence for up to 200 Bluetooth beacons within range. While it can detect any beacon with a public MAC address, sending custom data requires the beacon to use the Geotab BLE protocol. Note that a rate limit of 1200 logs per 10 minutes applies. Exceeding this limit will halt data intake from the IOX-BT.
  • Two-way communication with device pairing
    This mode allows for direct data exchange with the GO device, enabling requests and responses. However, saving custom data is not supported in this mode.
Connectionless Advertising
OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE General discoverable mode-BR/EDR not supported
40x06 + optional lengthAD length
50xFFManufacturer specific data
60x0275Geotab's company ID
80x00Advertising packet version number
90xXXTx power level
100xXXBattery level
Optional length(11 to 31)0xXXOptional information identifier
3 bytesOptional information data
0xXXOptional information identifier
X bytesOptional information data

Required data types

DescriptionUnit typeRange
Tx power levelSint 8Resolution: 1 dBm, Min: -100 dBm, Max: 20 dBm
Battery levelUint 8Resolution: 1%, Min: 0%, Max: 100%

Optional information types

These information types are optional and are not part of the required packet structure. Each entry must be preceded by the corresponding information identifier byte. If multiple information entries are used in the same advertisement packet, they should be arranged in an incrementing order based on their information identifier. The currently defined identifiers are listed in the table below. Geotab will define new identifiers for any new sensors, as required. You must use the IDs as defined by Geotab. If there is undefined data, contact us via the Help Desk and we will define the data and send you the required ID.

Information identifierDescriptionUnit typeLength (bytes)Units
0 to 4Reserved
5Firmware versionFP243None
6Accelerometer event counterFP243None
7TemperatureFP243Degrees Celsius (°C)
8IlluminanceFP243Lux (lx)
9Relative humidityFP243Percent (%)
10Barometric pressureFP243Pascals (Pa)
11AltitudeFP243Meters (m)
12Particulate matter (less than 1 µm)FP243Micrograms per cubic meter (µg/m3)
13Particulate matter (less than 2.5 µm)FP243Micrograms per cubic meter (µg/m3)
14Particulate matter (less than 10 µm)FP243Micrograms per cubic meter (µg/m3)
15Nitric oxideFP243Parts per million (ppm)
16Nitrogen dioxideFP243Parts per million (ppm)
17Carbon monoxideFP243Parts per million (ppm)
18AmmoniaFP243Parts per million (ppm)
19MethaneFP243Parts per million (ppm)
20EthanolFP243Parts per million (ppm)
21HydrogenFP243Parts per million (ppm)
22Carbon dioxideFP243Parts per million (ppm)
23Fuel levelFP243Percent (%)
24 to 199Reserved(for future data types)FP243
200 to 227Reserved
228CounterUINT162Counter for change of state events
229StateUINT162Current State of asset
230 to 239Generic byte (1 to 10)UINT81None
240 to 249Generic timer (1 to 10)
UINT8
UINT16
1
2
Event Counter
units of time
250 to 253Reserved
254Wakeup eventUINT81None
255Custom dataUINT8XNone

FP24 (floating point 24 bit)

Same as FP32 but the 8 least-significant bits dropped.

SEEEEEEEEFFFFFFFFFFFFFFF
23222120191817161514131211109876543210

[ -2^16, 2^16 ] can be exactly represented

[ -2^17, -2^16 -1 ] or [ 2^16 +1, 2^17 ] rounded to a multiple of 2

[ -2^18, -2^17 -1 ] or [ 2^17 +1 2^18 ] rounded to a multiple of 4

Infinity at: 2^128

FP24 conversions:

Action
StoreConvert to FP32FP24 = FP32 » 8
ReadFP32 = FP24 « 8Read as FP32

Note:

For all information types that use the FP24 format, a new log will be generated for any change in the data. For example, a change in temperature from 2°C to 2.000061°C would trigger a new log. Some implementations may only require a reporting resolution of 1°C. If an excessive number of logs are generated, we will disable reporting on BLE data. The onus is on the implementer to choose an appropriate reporting resolution for their data.

Generic byte

The Generic Byte type can store one byte of data (0 to 255). It can be used to count the number of times a button is pressed, or simply store the state of a toggle switch (0 or 1). Any data changes will generate a new log.

Generic timer

The Generic Timer allows keeping track of an elapsed time. The Units Of Time are not specifically defined and can be chosen by the implementor. It may make sense to measure some durations in hours, while others may warrant seconds. The Units Of Time may continuously increment. A new log will not be saved until a new event counter value is reported. The Generic Timer can be associated with other data types. For example, you can associate Generic Timer 1 with temperature to indicate the time when a chosen temperature threshold was exceeded.

Wakeup event

A custom parameter is used to configure the IOX-BT to wake up periodically to check for any wakeup events from beacons within range. The wakeup duration is 100ms every 3s while sleeping. This periodic wakeup can be enabled using the following custom parameter:

<Parameter Description='Enable Periodic Bluetooth Wakeup' Offset='167' Bytes='80' IsEnabled='true'/>

The implementor of this protocol should increase the frequency of advertisements sent during an attempted wakeup event. We recommend a 100ms advertisement interval that persists for a minimum of 1 minute.

When sending the wakeup event as part of the advertisement data, a value of 0x00 means “no event”. Anything greater than 0 that has not already been reported will cause the GO device to wake up and report on the beacon advertisements. The event is only used as an indication for reporting any changes in the rest of the advertisement data. The actual contents of the alert event byte will not be sent/reported.

Custom data

Arbitrary data can be placed in the custom data segment. The data will not be interpreted by MyGeotab, but will be accessible through the API. The onus is on the implementor to extract and interpret the data. The data must be preceded by the length. The length is limited by the amount of data that can fit in the optional information section. The maximum custom data length is 18 bytes. Any data changes will generate a new log.

OffsetDescription
1Length
2 to lengthCustom data

Example:

TypeLengthData
255812345678

Message interleaving

Message interleaving is not supported. The data types in the packet must remain consistent between advertisements.

Example packets

Reporting temperature

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE general discoverable mode-BR/EDR not supported
40x0AAD length
50xFFManufacturer specific data
60x0275Geotab's company ID
80x00Advertising packet version number
90xC6Tx power level (-58dBm)
100x64Battery level (100%)
110x07Temperature
120x000x412000 FP24 = 10°C
130x20
140x41

Reporting a timer

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE general discoverable mode-BR/EDR not supported
40x0AAD length
50xFFManufacturer specific data
60x0275Geotab's company ID
80x00Advertising packet version number
90xC6Tx Power level (-58dBm)
100x64Battery level (100%)
110xF1Generic timer 2
120x03Event
130xF40x01F4 = 500 minutes
140x01

Reporting temperature and a timer

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE general discoverable mode-BR/EDR not supported
40x0EAD length
50xFFManufacturer specific data
60x0275Geotab's company ID
80x00Advertising packet version number
90xC6Tx power level (-58dBm)
100x64Battery level (100%)
110x07Temperature
120x000x412000 FP24 = 10°C
130x20
140x41
150xF1Generic timer 2
160x03Event
170xF40x01F4 = 500 minutes
180x01

Reporting custom data

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE general discoverable mode-BR/EDR not supported
40x0FAD length
50xFFManufacturer specific data
60x0275Geotab's company ID
80x00Advertising packet version number
90xC6Tx power level (-58dBm)
100x64Battery level (100%)
110xFFCustom data
120x07Length
130x42Custom data "Beacon1" in ASCII
140x65
150x61
160x63
170x6F
180x6E
190x31

Reporting temperature + counter + timer + custom data

OffsetValueDescription
10x02AD length
20x01Flags
30x06-LE general discoverable mode-BR/EDR not supported
40x19AD length
50xFFManufacturer specific data
60x0275Geotab's company ID
80x00Advertising packet version number
90xC6Tx power level (-58dBm)
100x64Battery level (100%)
110x07Temperature
120x000x412000 FP24 = 10°C
130x20
140x41
150xE6Generic counter 1
160x08Count
170xF1Generic timer 2
180x03Event
190xF40x01F4 = 500 minutes
200x01
210xFFCustom data
220x07Length
230x42Custom data "Beacon1" in ASCII
240x65
250x61
260x63
270x6F
280x6E
290x31
Device Pairing

Pairing Request Advertising Packet

The following table describes the format of the advertising packet used for pairing requests:

OffsetValueDescription
10x02AD length (2 bytes to follow, 1 byte for AD type and 1 byte AD Flags data).
20x01AD Type (0x01 = BT_DATA_FLAGS).
30xXXFlags (Generally controlled by the Phone’s driver layer)
40x11AD length (17 bytes to follow, 1 byte for AD type, 16-bytes/128-bit of Service UUID)
50x07Complete List of 128-bit Service Class UUID
6 to 21First 16 bytes of a SHA-256 of the GO device serial number to initiate pairing with

Example: Service UUID

The Service UUID is derived from the first 16 bytes of a SHA-256 hash of the GO device serial number.

GO device serial numberG9D620F4D6D4
SHA 25607963db2184e93fff6145e5442ca4691dd5ce660cb5b502e74179e527340a555
Service UUID07963db2184e93fff6145e5442ca4691

Characteristics

CharacteristicUUIDPropertyCharacteristic
Tx430F2EA3-C765-4051-9134-A341254CFD00Read, Notify, WriteTx Enable CCCD "0x2902"
Rx906EE7E0-D8DB-44F3-AF54-6B0DFCECDF1CWrite

Usable data transferred per data packet is 20 bytes.

Note

  • The GO device will write to "Tx Enable" after a connection is established.
  • For bonding, the BLE security is mode 1 level 2 (Just-Works).
  • When the vehicle ignition is OFF and there is a Bluetooth connection with no data transfer for 10 minutes, the GO will drop the connection.

External device messages protocol

Please refer to Add-On Protocol - RS232 & USB & BLE for the protocol once connected.