Features

GSatMicro OEM

Measurements

45 mm x 45 mm x 34 mm including battery, modem, and antenna

Items included

  • Ceramic patch antenna, dual-tuned for Iridium and GPS
  • GSatMicro main board
  • Iridium 9602 SBD
  • breakout board (with VCC, GND, Relay 1,2 and ADC 1,2 and LED status, USB, RS-232)
  • 2400 mAh lithium polymer battery

Interfaces

  • DC Power (6V to 36V DC) @ 1A max
  • USB Interface (Power, Serial Console/Logging, Firmware Update)
  • RS232 Interface (Serial Console/Logging)
  • 2 Relay Outputs @ 250mA (Open Drain)
  • 2 Analog Inputs (0V to 30V DC)

Cable Pinout

NameFlex PinHirose PinCable Color
ADC IN 0151orange
ADC IN 1145yellow
OUTPUT 113/122brown
OUTPUT 011/103grey
V_USB97purple
USB D-86white
USB D+710green
RS232 TX612pink
RS232 RX511blue
VCC4/38red
GND2/14black

NOTE: OUTPUT 0 and OUTPUT 1 are connected to the MCU pins PB4_0 and PB4_1 respectively. The voltage levels on the outputs are inverted:

  • Setting PB4_0/PB4_1 high will drive OUTPUT 0/OUTPUT 1 low.
  • Setting PB4_0/PB4_1 low will leave OUTPUT 0/OUTPUT 1 floating (connect a pull-up resistor to these lines to drive them high, since they are open drain outputs).

Use the Lua code below to drive the output pins (the example is written for OUTPUT 0, change P4_0 to P4_1 for OUTPUT 1):

-- Set the direction of the pin P4_0 as OUTPUT
pio.pin.setdir(pio.OUTPUT, pio.P4_0)

-- Set the pin P4_0 to a high state (logical high or 1)
pio.pin.sethigh(pio.P4_0) -- This drives OUTPUT 0 low

-- Set the pin P4_0 to a low state (logical low or 0)
pio.pin.setlow(pio.P4_0) -- This leaves OUTPUT 0 floating

NOTE: OUTPUT 0 and OUTPUT 1 are connected to the MCU pins PB4_0 and PB4_1 respectively. The voltage levels on the outputs are inverted:

  • Setting PB4_0/PB4_1 high will drive OUTPUT 0/OUTPUT 1 low.
  • Setting PB4_0/PB4_1 low will leave OUTPUT 0/OUTPUT 1 floating (connect a pull-up resistor to these lines to drive them high, since they are open drain outputs).

Use the Lua code below to drive the output pins (the example is written for OUTPUT 0, change P4_0 to P4_1 for OUTPUT 1):

-- Set the direction of the pin P4_0 as OUTPUT
pio.pin.setdir(pio.OUTPUT, pio.P4_0)

-- Set the pin P4_0 to a high state (logical high or 1)
pio.pin.sethigh(pio.P4_0) -- This drives OUTPUT 0 low

-- Set the pin P4_0 to a low state (logical low or 0)
pio.pin.setlow(pio.P4_0) -- This leaves OUTPUT 0 floating

Message Formats

Mobile Terminated (MT)

Max Length (interface 2): 255 bytes

Byte ordering is little-endian MSB 0 unless otherwise noted.

Authenticated Message Type

Interface Version: 2 (or later)

header (byte): 0"payload"authentication code (10 bytes): HMAC-SHA256-80("password","payload")

Where an HMAC-SHA256 is computed over the payload (header byte not included) using a password/key shared by the device and server and is truncated to the first 10 bytes (80 bits).

Passwords can be set on the unit using the Lua commands:

-- Set a custom password, up to 32 bytes (interface 2)
core.setpassword("password")

-- Reset the default password
core.resetpassword()

-- If the reset operation is successful, a hexadecimal representation of the default password will be displayed as follows:
-- RP#password:0x<hexadecimal representation of password>

Encrypted Message Type

Messages can also be encrypted using AES-CCM mode (using no additional auth data, a 7-octet nonce, and an 8-octet authentication field).

The payload messages below are the same but are wrapped in encryption following the format:

header (2 bytes): 0x00,0xFFnonce (7 bytes, must be unique to key in use)AES-CCM{"payload"authentication code (10 bytes): HMAC-SHA256-80(<password>,"payload">}authentication field (from AES-CCM) (8 bytes)

No default key or password is set on the unit, so a key must be set to enable the functionality.

-- Set a custom key, up to 32 bytes, represented as 64 hexadecimal characters (interface 3)
aes.sethexkey("hexadecimal key")

-- Example:
-- aes.sethexkey("37996FB42DDE61E890D2D88B9B5A83D16F3D35876D778E3E064677C37B50C424")

-- Note: Do not use the example key above. If you require guidance on generating a secure key, contact GSE for help.

-- If the operation is successful, a hexadecimal representation of the key will be displayed as follows:
-- M#RK#key:0x<hexadecimal representation of key>

-- By default, if a key has been set, outgoing messages will be encrypted. To clear the key, it can be set to an empty string:
aes.sethexkey("")

Payload Messages

Generic message format:

Interface Version: 2 (or later)

message type (byte): <0-255>message length (byte): <0 - 255>command (byte array): <destination length bytes>

Lua Command:

Interface Version: 2 (or later)

Maximum: 1 lua command per MT message.

message type (byte): 0command length (byte): <0 - 255>command (byte array): <destination length bytes>

Text Message:

Interface Version: 2 (or later)

message type (byte): 1message length (byte): <0 - 255>text message (byte array): <message length bytes>

Change Setting:

Interface Version: 2 (or later)

Message Structure:

- Message Type (byte): 2

- Command Length (byte): 6

- Setting Number (uint16_t little endian): <0-65535>

- Setting Value (int32_t little endian): <varies by setting, see setting descriptions>

Request Settings:

Interface Version: 2 (or later)

This message will request the current settings be sent in the next transmit cycle.

message type (byte): 3command length (byte): 0

Request Interface Version:

Interface Version: 2 (or later)

This message will request that just the interface version be sent in the next cycle.

message type (byte): 4command length (byte): 0

Mobile Originated (MO)

Formats are Little Endian MSB 0, unless otherwise noted.

Position Report:

Interface Version: 1 (or later)

header (byte): 0

Reserved for GSatTrack

Text Message:

Interface Version: 1 (or later)

Message Structure:

- Header (byte): 1

- Destination Length (byte): <0 - 255>

- Destination (byte array): <destination length bytes>

- Message (byte array): <byte array bounded by end of MO message>

Settings Dump:

Interface Version: 1 (or later)

Header (byte): 2
Interface Version (byte): <version, currently: 2>
Settings Version (byte): <version, currently: 1>

Settings:
0: default
1: g_hdop // Version 1 or later
2: g_timeout // Version 1 or later
3: i_tx_timeout // Version 1 or later
4: i_signal_timeout // Version 1 or later
5: i_tx_retries // Version 1 or later
6: sleep // Version 1 or later
7: sos_sleep // Version 1 or later
8: sleep_w_power // Version 1 or later
9: led_mask // Version 1 or later
10: i_rx_always // Version 1, 2 (no effect, functional in Version 3 or later)
11: tx_altitude // Version 1 or later
12: g_settle // Version 1 or later
13: t_adc_id // Version 1 or later (not currently used)
14: t_adc_threshold // Version 1 or later (not currently used)
15: status_line // Version 1 or later
16: low_bat_off // Version 1 or later
17: g_hibernate_sleep // Version 2 or later
18: cache_reports // Version 2 or later
19: moving_sleep // Version 3 or later
20: moving_thresh // Version 3 or later
21: require_encrypted_mt // Version 3 or later
22: g_on_always // Version 3 or later
23: sleep_w_bat // Version 4 or later
24: tx_seconds // Version 5 or later
25: report_format // Version 6 or later
26: extpwr_sleep // Version 8 or later: Set this to a value other than 0 to override the "sleep" parameter between transmissions when external power is applied
27: extpwr_autostart // Version 9 or later: Set this to 1 to trigger the unit to "power up" and start transmitting automatically the next time power is applied

Interface Version: 2 (or later)

header (byte): 3interface version (byte): <version, currently: 2>

Encryption Wrapped Message:

Interface Version: 3 (or later)

header (byte): 255nonce (7 bytes)AES-CCM{header (byte)message}authentication field (from AES-CCM) (8 bytes)

Mobile Originated Position Format

Wikipedia Protocol Definition GSE_Open_GPS_Protocol Copyright (c) 2017 Global Satellite Engineering, Inc. Permission is hereby granted, free of charge, to any person to deal in the message format without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the message format, to send and receive messages formatted according to the message format, and to permit persons to whom the message format is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies of documentation describing the message format.

THE MESSAGE FORMAT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MESSAGE FORMAT OR THE USE OR OTHER DEALINGS IN THE MESSAGE FORMAT.

10-byte GSE proprietary format (settings.report_format=0):

This protocol is a highly compressed format that is not publicly released but is available through a decoding service. Interface Version: 3 (or later)

header (byte): 0report (10 bytes)

10-byte Position (settings.report_format=1):

Google Docs Excel Worksheet: Google Docs 10 Byte Format Worksheet Interface Version: 3 (or later)

header (byte): 4report (10 bytes)Remaining bits are Big Endian MSB 0.bits 0-2: magic numberbits 3-25: longitude (encode: ROUND((longitude +180)*23301), decode: value/23301-180)bits 26-31: heading (encode: ROUND(degrees/5), decode:  value*5)bits 32-41: hours since midnight + 2 minute intervals (encode: ROUND(((hours*60) + minutes)/2), decode: (value*2)/60)bits 42-63: latitude (encode: ROUND((latitude+90)*23301), decode: value/23301-90)bits 64-69: speed (no conversion: meters/second, max 63 meters per second or 141 miles per hour)bits 70-79: altitude (encode: meters/5, max 5110 meters or 16765 feet, decode: value*5)

18-byte High Resolution Position (settings.report_format=2):

Google Docs Excel Worksheet: Google Docs 18 Byte Format Worksheet Interface Version: 3 (or later)

header (byte): 5report (18 bytes)Please refer to google docs excel worksheet for bit ordering and fields
Previous
Troubleshooting