Jump to content

Iridium Edge Communication Protocol: Difference between revisions

From Teltonika Telematics Wiki
No edit summary
 
(14 intermediate revisions by 5 users not shown)
Line 1: Line 1:
__TOC__
__TOC__
==Iridium Configuration Parameters==
Information here includes the naming of the configurable parameter in accordance to it's number.
{| class="wikitable"
|+
! rowspan="1" style="width: 400px; background: #000000; color: white;" |'''Parameter ID'''
! rowspan="1" style="width: 400px; background: #000000; color: white;" |'''Parameter Type'''
! rowspan="1" style="width: 400px; background: #000000; color: white;" |'''Default Values'''
! rowspan="1" style="width: 400px; background: #000000; color: white;" |'''Min Value'''
! rowspan="1" style="width: 400px; background: #000000; color: white;" |'''Max Value'''
! rowspan="1" style="width: 400px; background: #000000; color: white;" |'''Value'''
! rowspan="1" style="width: 400px; background: #000000; color: white;" |'''Description'''
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99420
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Uint8
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0 - OFF <br /> 1 - ON
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |(FMx125/FMx225)<br/>TSM232 and Iridium edge<br/> <br/>(FMx6xx) <br/> Short Burst data settings TSM232 and Iridium edge
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99421
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Uint16
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1440
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1440
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Minutes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Save/Send period
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99422
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Uint16
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1574
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0 - Nothing <br/> 2 - DIN1 <br/> 4 - DIN2 <br/> 32 - DOUT1 <br/> 512 - Speed <br/> 1024 - Crash <br/>
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Save/Send period
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99423
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Uint16
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |8000
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |3000
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Bytes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |SBD Upload Limit (B)
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |(FMx6xx) <br/>99424
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Unit8
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |4
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" | 0 - None <br/> 1 - None <br/> 2 - DOUT1 <br/> 3 - DOUT2 <br/> 4 - DOUT3 <br/> 5 - DOUT4
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |(FMx6xx) <br/> Power Control DOUT
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |150
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Unit8
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |2
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" | 0 - Disable <br/> '''1 - RS232''' <br/> 2 - RS485
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" | (valid only for FMx125/FMx225) <br/> Enable RS232 mode for the Iridium terminal
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |151
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Unit8
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |26
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |FMx125 <br/> 7 - Satellite backup <br/> <br/> FMx650 <br/> 16 - Satellite backup
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |(FMx125/FMx225) <br/> RS232 Mode <br/> Satellite backup <br/> <br/> (Fmx6xx) <br/> RS232 Settings <br/> COM2 Settings <br/> Satellite backup
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |(FMx6xx) <br/> 152
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Uint24
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |128000
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1920 kbps
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Baudrate required for Satellite backup is 1920 kbps
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |(FMx6xx) <br/> 173
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Unit8
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |26
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |FMx650 - 16
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |RS232 Settings<br/> COM2 Settings<br/> <br/> Satellite backup
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |(FMx6xx) <br/> 174
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Uint24
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |128000
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1920 kbps
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Baudrate required for Satellite backup is 1920 kbps
|-
|}


==Communication Protocol==
==Communication Protocol==
Line 23: Line 118:
|}
|}


'''Definitions'''
Data Sending Parameters


* Timestamp – Indicates when record was generated
Information here includes the data sending parameters which identifies the naming of the parameter in accordance to its number.
* Longitude - encoded in 3 bytes data. Server which gets this data should divide result from 46603,375 and subtract 180 in order to get actual longitude value. This coefficient is got in following way: 16777215(maximum 3 bytes value) divided from 360 (maximum longitude value then 180 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.
* Latitude - Latitude is calculated in same way as longitude but since latitude maximum value is two times smaller than longitude it can produce a bit more accurate data. Coefficient for latitude is 93206,75. This coefficient is got in following way: 16777215(maximum 3 bytes value) divided from 180 (maximum latitude value then 90 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.
* SBD AVL ID and flags – Custom id that will indicate what caused the record to be generated (as only periodic records are generated, id is not used)
* Din/Dout info - Displays configured IO elements in parameter id 99422
* Reserved - Not used anywhere, but left due to compatibility with fm6 project.
* Speed – Indicates the speed of the vehicle if configured. If not (or in case of no gps) – will display 255


==Data Sending Parameters==
'''Parsing of the Iridium SBD record'''
Information here includes the data sending parameters which identifies the naming of the parameter in accordance to it's number.  
 
<br>
“Hercules” Software or similar is required to listen your pc port.
{| class="wikitable"
 
Also, Iridium must be set up to send packets to your pc.
 
Run "Hercules":
#Select TCP server tab
#Insert your PC port
#Right click in “Sent Data” window
#Select Special characters/Hexadecimal
#This will enable the “HEX enable” selection, enable this option.
 
[[File:Iridium SBD test setup 1.png]] [[File:Iridium SBD test setup 2.png]]
 
Now Iridium packets can be captured by Hercules.
 
Hercules will receive the full Iridium packet, but '''only last 14 bytes are needed''':
 
[[File:Iridium packet example.png]]
 
Full packet looks like this:
 
<span style="color:blue">{01}{00}{3E}{01}{00}{1C}{7F}{DA}{96}{A1}{33}{30}{30}{32}{33}{34}{30}{36}{34}{30}{37}{30}{38}{33}{30}{00}{0A}{E9}{00}{00}{63}{57}{6A}{E3}{03}{00}{0B}{00}{36}{A5}{A7}{19}{2F}{E9}{00}{00}{00}{04}{02}{00}{0E}</span><span style="color:green">{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}
 
There blue part of record is satellite device generated data and green is actual record payload which was sent to server.
 
Only the green part (last 14 bytes) is needed for analysis:
 
<span style="color:green">{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}
 
==Packet Parsing==
 
'''Packet:'''
 
{AD}{69}{57}{63}<span style="color:blue">{91}{F6}{A0}</span><span style="color:brown">{CD}{CC}{64}</span><span style="color:orange">{00}</span><span style="color:darkgreen">{00}</span><span style="color:purple">{FF}</span><span style="color:red">{00}</span>
 
{| class="wikitable" style="width:50%;"
|+
|+
! rowspan="1" style="width: 400px; background: #0054A6; color: white;" |'''Parameter ID'''
! colspan="7" style="width:50%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| SBD Packet structure
! rowspan="1" style="width: 400px; background: #0054A6; color: white;" |'''Parameter name'''
|-
! rowspan="1" style="width: 400px; background: #0054A6; color: white;" |'''Min values'''
! style="width:10%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| Timestamp
! rowspan="1" style="width: 400px; background: #0054A6; color: white;" |'''Max values'''
! style="width:10%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| Longitude
! rowspan="1" style="width: 400px; background: #0054A6; color: white;" |'''Default values'''
! style="width:10%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| Latitude
! rowspan="1" style="width: 400px; background: #0054A6; color: white;" |'''Description'''
! style="width:15%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| SBD AVL ID and flags
|-
! style="width:10%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| DIN/DOUT info
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99420
! style="width:10%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| Reserved
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Iridium Edge
! style="width:10%; border: 1px solid white; border-bottom: 2px solid #0054A6; background: white; color: #0054A6; text-align: left;"| Speed
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | 4 bytes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:blue">3 bytes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |This parameter enables or disables Iridium Edge functionality
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:brown">3 bytes
|-  
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:orange">1 bytes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99421
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:darkgreen">1 bytes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Save/Send period
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:purple">1 bytes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:red">1 bytes
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1440
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1440
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | AD695763
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |This parameter lets to configure Iridium Edge sending period
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" |<span style="color:blue"> 91F6A0
|-
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" |<span style="color:brown"> CDCC64
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99422
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:orange">00
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |SBD IO source
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" |<span style="color:darkgreen"> 00
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:purple">FF
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |6
| style="border: 1px solid white; border-bottom: 2px solid #E8E8E8; text-align: left; vertical-align: center; background: white;" | <span style="color:red">00
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |SBD IO elements which when enabled are included into the SBD record
|-  
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |151
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |RS232 Mode
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |26
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Implement ability to select "Sattelite backup"
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |99423
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |SBD Upload Limit
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |30000
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |8000
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Limit to save user from exceeding the monthly plan. Max limit of 30000 due to 30KB plan. If set to 0 – limit will be off.
|}
|}
[[Category: Iridium Edge]]


==SBD IO source==  
===Timestamp===
Configures IO source which can trigger SBD record saving.  9 elements can generate Alarm for SDB sending. These elements are:
 
* Digital input 1
Indicates when record was generated
* Digital input 2
 
* Digital output 1
<span style="text-decoration: underline; text-decoration-thickness: 3px;>{AD}{69}{57}{63}</span><span style="color:blue">{91}{F6}{A0}</span><span style="color:brown">{CD}{CC}{64}</span><span style="color:orange">{00}</span><span style="color:darkgreen">{00}</span><span style="color:purple">{FF}</span><span style="color:red">{00}</span>
* Speed
 
* Crash
First 4 bytes are timestamp in hex:
<br></br>
 
Configurator parameter IDs and their explanation:
'''AD695763'''
{| class="nd-othertables_2" style="width:100%;"
 
|- style="font-weight:bold; text-align:center;"
Converter: https://www.epochconverter.com/hex
! '''Parameter ID'''<br />
 
! '''Parameter name'''
Converted Data:
! colspan="3" | '''Values'''
 
! '''Explanation'''
*'''GMT:''' ''Sunday, March 12, 2062 4:07:05 AM
|- style="font-weight:bold; text-align:center;"
 
| style="font-weight:normal;" |
*'''Your time zone:''' ''Sunday, March 12, 2062 6:07:05 AM GMT+02:00
| style="font-weight:normal;" |
 
| '''Min'''
*'''Decimal timestamp/epoch:''' ''2909362025
| '''Max'''
 
| '''Default'''
===Longitude===
| style="font-weight:normal;" |  
 
Longitude - encoded in 3 bytes data. Server which gets this data should divide result from 46603,375 and subtract 180 in order to get actual longitude value. This coefficient is got in following way: 16777215(maximum 3 bytes value) divided from 360 (maximum longitude value then 180 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.
 
{AD}{69}{57}{63}</span><span style="text-decoration: underline; text-decoration-thickness: 3px;><span style="color:blue">{91}{F6}{A0}</span></span><span style="color:brown">{CD}{CC}{64}</span><span style="color:orange">{00}</span><span style="color:darkgreen">{00}</span><span style="color:purple">{FF}</span><span style="color:red">{00}</span>
 
<span style="color:blue">5-7th</span> bytes are longitude:
 
<span style="color:blue">91F6A0</span> convert to decimal -> 6525430
 
(6525430/46603.375) - 180= -39.9794542777
 
===Latitude===
 
Latitude - calculated in same way as longitude but since latitude maximum value is two times smaller than longitude it can produce a bit more accurate data. Coefficient for latitude is 93206,75. This coefficient is got in following way: 16777215(maximum 3 bytes value) divided from 180 (maximum latitude value then 90 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.
 
{AD}{69}{57}{63}</span><span style="color:blue">{91}{F6}{A0}</span><span style="text-decoration: underline; text-decoration-thickness: 3px;><span style="color:brown">{CD}{CC}{64}</span></span><span style="color:orange">{00}</span><span style="color:darkgreen">{00}</span><span style="color:purple">{FF}</span><span style="color:red">{00}</span>
 
<span style="color:brown">8-10th</span> bytes are latitude:
 
<span style="color:brown">CDCC64</span> convert to decimal -> 10538444
 
(10538444/93206.750)-90=23.0652447382
 
===SBD AVL ID And Flags===
 
SBD AVL ID and flags – Custom id that will indicate what caused the record to be generated (if periodic record are generated, id is not used).
 
From 03.28.06.Rev.320 supported all AVL ID's listed below.
 
{AD}{69}{57}{63}<span style="color:blue">{91}{F6}{A0}</span><span style="color:brown">{CD}{CC}{64}</span><span style="text-decoration: underline; text-decoration-thickness: 3px;><span style="color:orange">{00}</span></span><span style="color:darkgreen">{00}</span><span style="color:purple">{FF}</span><span style="color:red">{00}</span>
 
<span style="color:orange">11-th</span> byte is SBD AVL ID
 
<span style="color:orange">00</span> convert to decimal -> 0
 
===DIN/DOUT Info===
 
Din/Dout info - Displays configured IO elements in parameter id 99422
 
{AD}{69}{57}{63}<span style="color:blue">{91}{F6}{A0}</span><span style="color:brown">{CD}{CC}{64}</span><span style="color:orange">{00}</span><span style="text-decoration: underline; text-decoration-thickness: 3px;><span style="color:darkgreen">{00}</span></span><span style="color:purple">{FF}</span><span style="color:red">{00}</span>
 
<span style="color:darkgreen">12-th</span> byte is DIN\DOUT info
 
<span style="color:darkgreen">00</span> converted to binary is 00000000
 
00000000 -> bits presenting DINs and DOUTs state in 1 - high, 0 - low or turned off (if not configured to be sent in SBD record), DINs and DOUTs are represented in this order in DIN/DOUT info bits DIN1, DIN2, DIN3, DIN4, DOUT1, DOUT2, DOUT3, DOUT4
 
{| class="wikitable"
! Hex !! 00 !! Converted to binary = !! 0 !! 0 !! 0 !! 0 !! 0 !! 0 !! 0 !! 0
|-
|-
| 99420
! colspan="3" |  
| Iridium Edge
| DIN1 || DIN2 || DIN3 || DIN4 || DOUT1 || DOUT2 || DOUT3 || DOUT4
| 0
|}
| 1
 
| 0
Examples with a different value:
| This parameter enables or disables Iridium Edge functionality
 
{| class="wikitable"
! Hex !! 16 !! Converted to binary = !! 0 !! 0 !! 0 !! 1 !! 0 !! 1 !! 1 !! 0
|-
|-
| 99421
! colspan="3" |  
| Save/Send period
| DIN1 || DIN2 || DIN3 || '''DIN4''' || DOUT1 || '''DOUT2''' || '''DOUT3''' || DOUT4
| 0
|}
| 1440
 
| 1440
{| class="wikitable"
| This parameter lets to configure Iridium Edge sending period
! Hex !! 69 !! Converted to binary = !! 0 !! 1 !! 1 !! 0 !! 1 !! 0 !! 0 !! 1
|-
|-
| 99422
! colspan="3 |  
| SBD IO source'''*'''
| DIN1 || '''DIN2''' || '''DIN3''' || DIN4 || '''DOUT1''' || DOUT2 || DOUT3 || '''DOUT4'''
| 0
|}
| 8
 
| 0
{| class="wikitable"
| SBD IO elements which when enabled are included into the SBD record
! Hex !!42!! Converted to binary = !! 0 !! 1 !! 0 !! 0 !! 0 !! 0 !! 1 !! 0
|-
|-
| 99423
! colspan="3"|  
| SBD UploadLimit
| DIN1 || '''DIN2''' || DIN3 || DIN4 || DOUT1 || DOUT2 || '''DOUT3''' || DOUT4
| 0
| 30000
| 8000
| Limit to save user from exceeding the monthly plan. Max limit of 30000 due to 30KB plan. If set to 0 – limit will be off.
|-
| 99424
| Power control DOUT
| 1
| 5
| 0
| Device DOUT which can control ON/OFF pin of the Iridium Edge
|-
| 151
| RS232 Mode
| 0
| 23
| 0
| RS-232 mode selection. "Satellite backup" - 15
|}
|}
<br></br>
In order to configure parameter 99422 manually users must simply set the appropriate values of bit positions, according to their needs:
* Bit1 - DIN 1
* Bit2 - DIN 2
* Bit5 - DOUT 1
* Bit9 - Speed
* Bit10 - Crash


==SDB record structure==
===Reserved===
SDB Record which will be sent through the Iridium satellites network will be different than the regular record. It will contain 4 bytes timestamp, 3 bytes longitude, 3 bytes latitude, 1 byte record generation info, 1 byte DIN,DOUT info, 1 byte Speed value.
 
Reserved - Not used anywhere, but left due to compatibility with fm6 project.
 
{AD}{69}{57}{63}<span style="color:blue">{91}{F6}{A0}</span><span style="color:brown">{CD}{CC}{64}</span><span style="color:orange">{00}</span><span style="color:darkgreen">{00}</span><span style="text-decoration: underline; text-decoration-thickness: 3px;><span style="color:purple">{FF}</span></span><span style="color:red">{00}</span>
 
<span style="color:purple">13-th</span> byte is reserved for FM devices and on FMB platform not used, therefore it is always <span style="color:purple">FF</span>.


{| class="nd-othertables_2" style="width:100%;"
===Speed===
|-style="text-align:center"
 
!Timestamp 
Speed – Indicates the speed of the vehicle if configured.
!Longitude 
 
!Latitude 
{AD}{69}{57}{63}<span style="color:blue">{91}{F6}{A0}</span><span style="color:brown">{CD}{CC}{64}</span><span style="color:orange">{00}</span></span><span style="color:darkgreen">{00}</span><span style="color:purple">{FF}</span><span style="text-decoration: underline; text-decoration-thickness: 3px;><span style="color:red">{00}</span>
!SDB AVL ID and flags 
!DIN/DOUT info 
!Reserved 
!Speed 
|- style="font-weight:normal;"
|4B
|3B
|3B
|1B
|1B
|1B
|1B
|}


'''''Timestamp''''' - Indicates when record was generated.
<span style="color:red">14-th</span> byte need to be converted from HEX to decimal, only GNSS Speed used, if no GNSS fix FF - 255 sent, if not configured to send as SBD IO element 0 sent.
<br></br>
'''''Longitude''''' - In this packet is encoded in 3 bytes data. The server that gets this data should divide the result from 46603,375 and subtract 180 to get the actual longitude value. This coefficient is got in the following way: 16777215(maximum 3 bytes value) divided by 360 (maximum longitude value then 180 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.
<br></br>
'''''Latitude''''' - Is calculated in the same way as longitude but since latitude maximum value is two times smaller than longitude it can produce a bit more accurate data. The coefficient for latitude is 93206,75. This coefficient is got in the following way: 16777215(maximum 3 bytes value) divided by 180 (maximum latitude value then 90 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.
<br></br>
'''Din/Dout info''' - Displays configured IO elements in parameter id 99422 (only din/dout). If IO is not set, it will send be replaced by 0.
<br></br>
'''Reserved''' - Not used anywhere.
<br></br>
'''Speed''' – Indicates the speed (from GNSS) of the vehicle if configured. If not (or in case of no gps) – will display 255.
<br></br>
'''''SBD AVL ID and flags''''' – Custom ID that will indicate what caused the record to be generated
This byte is divided in two parts of four bits, as shown in table below:


===SBD AVL ID’s===


{| class="nd-othertables_2" style="width:100%;"font-weight:bold; vertical-align:middle;"
{| class="wikitable"
! style="font-weight:bold;" | <br />ID
|+
! <br />0
! rowspan="1" style="width: 45px; background: #0054A6; color: white;" |'''ID'''
! <br />1
! rowspan="1" style="width: 120px; background: #0054A6; color: white;" | '''IO Element'''
! <br />2
|-  
! <br />24
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |0
! <br />179
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Periodic record
! <br />247
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |1
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Digital Input 1
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |2
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Digital Input 2
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |24
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Speed
|-
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |179
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Digital Output 1
|-
|-
| style="font-weight:bold;" | <br />IO  element
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |247
| <br />Periodic rec.
| rowspan="1" style="text-align: center; style=" width: 150px; background: white; color: black;" |Crash
| <br />Digital Input 1
| <br />Digital input 2
| <br />Speed
| <br />DOUT1
| <br />Crash
|}
|}
<br></br>


==SBD packet example==
===Additional Information===
'''Unparsed data:'''
 
*1 Iridium data packet uses 14 bytes of data, this means when using SBD8 service plan we get 8000/14=571 records, please keep this in mind when testing out the iridium terminal.
 
*The device is able to generate 1 record every minute. That is about 9,5 hours of continuous record generation (once every minute), which can deplete the plan.


<span style="color:#0000ff">''01004C01001CF99DD263333030323334303634303730383330000018000059282DBC03000B0036A2B8193D120000000302001C''
*Exceeding the plan will introduce overdraft fees, unless SBD upload limit is configured.  
<span style="color:#008000"> ''59282BA391F5ABCDBFDD0180000059282BA891F5ABCDBFDD0180000059282BA391F5AB'' </span>
<br></br>
<span style="color:#0000ff">{01} – Protocol revision number</span><br></br>
<span style="color:#0000ff">{00}{4C} – overall message length</span><br></br>
<span style="color:#0000ff">{01} – MO header IEI</span><br></br>
<span style="color:#0000ff">{00}{1C} – MO header length</span><br></br>
<span style="color:#0000ff">{F9}{9D}{D2}{63} – CDR Reference</span><br></br>
<span style="color:#0000ff">{33}{30}{30}{32}{33}{34}{30}{36}{34}{30}{37}{30}{38}{33}{30} – IMEI of the device</span><br></br>
<span style="color:#0000ff">{00} – Session status (Transfer OK in this case)</span><br></br>
<span style="color:#0000ff">{00}{18} – MOMSN</span><br></br>
<span style="color:#0000ff">{00}{00} – MTMSN</span><br></br>
<span style="color:#0000ff">{59}{28}{2D}{BC} – Time of session</span><br></br>
<span style="color:#0000ff">{03} – MO Location information IEI</span><br></br>
<span style="color:#0000ff">{00}{0B} – MO Location information length</span><br></br>
<span style="color:#0000ff">{00}{36}{A2}{B8}{19}{3D}{12} – MO latitude and longitude as described in Iridium documentation. </span><br></br>
<span style="color:#0000ff">{00}{00}{00}{03} – CEP radius</span><br></br>
<span style="color:#0000ff">{02} – Payload IEI </span><br></br>
<span style="color:#0000ff">{00}{1C} – Payload length </span><br></br>
<span style="color:#008000">{59}{28}{2B}{A3}{91}{F5}{AB}{CD}{BF}{DD}{01}{80}{00}{00} – Record 1</span> <br></br>
<span style="color:#008000">{59}{28}{2B}{A8}{91}{F5}{AB}{CD}{BF}{DD}{01}{80}{00}{00} – Record 2 </span><br></br>


There blue part of record is satellite device generated data and green is actual record payload which was sent to server from {{{device|}}}. Information of the first record should be parsed like this:
*Once device reaches SBD limit it will stop sending records via Iridium terminal.
<br></br>
<span style="color:#008000">{59}{28}{2B}{A3} – Timestamp of record generation in GMT0;</span> <br></br>
<span style="color:#008000">{91}{F5}{AB} – Longitude (recalculated value is 25,255756) </span><br></br>
<span style="color:#008000">{CD}{BF}{DD} – Latitude (recalculated value is 54,832396) </span><br></br>
<span style="color:#008000">{01} – DIN1 generated event </span><br></br>
<span style="color:#008000">{80} – DIN1 on, while DIN2, DOUT1, – off </span><br></br>
<span style="color:#008000">{00} – Reserved byte</span> <br></br>
<span style="color:#008000">{00} – Vehicle was stopped when the record was generated</span> <br></br>

Latest revision as of 10:15, 4 November 2025

Iridium Configuration Parameters

Information here includes the naming of the configurable parameter in accordance to it's number.

Parameter ID Parameter Type Default Values Min Value Max Value Value Description
99420 Uint8 0 0 1 0 - OFF
1 - ON
(FMx125/FMx225)
TSM232 and Iridium edge

(FMx6xx)
Short Burst data settings TSM232 and Iridium edge
99421 Uint16 1440 0 1440 Minutes Save/Send period
99422 Uint16 0 0 1574 0 - Nothing
2 - DIN1
4 - DIN2
32 - DOUT1
512 - Speed
1024 - Crash
Save/Send period
99423 Uint16 8000 0 3000 Bytes SBD Upload Limit (B)
(FMx6xx)
99424
Unit8 0 0 4 0 - None
1 - None
2 - DOUT1
3 - DOUT2
4 - DOUT3
5 - DOUT4
(FMx6xx)
Power Control DOUT
150 Unit8 0 0 2 0 - Disable
1 - RS232
2 - RS485
(valid only for FMx125/FMx225)
Enable RS232 mode for the Iridium terminal
151 Unit8 0 0 26 FMx125
7 - Satellite backup

FMx650
16 - Satellite backup
(FMx125/FMx225)
RS232 Mode
Satellite backup

(Fmx6xx)
RS232 Settings
COM2 Settings
Satellite backup
(FMx6xx)
152
Uint24 0 0 128000 1920 kbps Baudrate required for Satellite backup is 1920 kbps
(FMx6xx)
173
Unit8 0 0 26 FMx650 - 16 RS232 Settings
COM2 Settings

Satellite backup
(FMx6xx)
174
Uint24 0 0 128000 1920 kbps Baudrate required for Satellite backup is 1920 kbps

Communication Protocol

SBD Packet structure
Timestamp Longitude Latitude SBD AVL ID and flags DIN/DOUT info Reserved Speed
4 bytes 3 bytes 3 bytes 1 bytes 1 bytes 1 bytes 1 bytes

Data Sending Parameters

Information here includes the data sending parameters which identifies the naming of the parameter in accordance to its number.

Parsing of the Iridium SBD record

“Hercules” Software or similar is required to listen your pc port.

Also, Iridium must be set up to send packets to your pc.

Run "Hercules":

  1. Select TCP server tab
  2. Insert your PC port
  3. Right click in “Sent Data” window
  4. Select Special characters/Hexadecimal
  5. This will enable the “HEX enable” selection, enable this option.

Now Iridium packets can be captured by Hercules.

Hercules will receive the full Iridium packet, but only last 14 bytes are needed:

Full packet looks like this:

{01}{00}{3E}{01}{00}{1C}{7F}{DA}{96}{A1}{33}{30}{30}{32}{33}{34}{30}{36}{34}{30}{37}{30}{38}{33}{30}{00}{0A}{E9}{00}{00}{63}{57}{6A}{E3}{03}{00}{0B}{00}{36}{A5}{A7}{19}{2F}{E9}{00}{00}{00}{04}{02}{00}{0E}{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

There blue part of record is satellite device generated data and green is actual record payload which was sent to server.

Only the green part (last 14 bytes) is needed for analysis:

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

Packet Parsing

Packet:

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

SBD Packet structure
Timestamp Longitude Latitude SBD AVL ID and flags DIN/DOUT info Reserved Speed
4 bytes 3 bytes 3 bytes 1 bytes 1 bytes 1 bytes 1 bytes
AD695763 91F6A0 CDCC64 00 00 FF 00

Timestamp

Indicates when record was generated

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

First 4 bytes are timestamp in hex:

AD695763

Converter: https://www.epochconverter.com/hex

Converted Data:

  • GMT: Sunday, March 12, 2062 4:07:05 AM
  • Your time zone: Sunday, March 12, 2062 6:07:05 AM GMT+02:00
  • Decimal timestamp/epoch: 2909362025

Longitude

Longitude - encoded in 3 bytes data. Server which gets this data should divide result from 46603,375 and subtract 180 in order to get actual longitude value. This coefficient is got in following way: 16777215(maximum 3 bytes value) divided from 360 (maximum longitude value then 180 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

5-7th bytes are longitude:

91F6A0 convert to decimal -> 6525430

(6525430/46603.375) - 180= -39.9794542777

Latitude

Latitude - calculated in same way as longitude but since latitude maximum value is two times smaller than longitude it can produce a bit more accurate data. Coefficient for latitude is 93206,75. This coefficient is got in following way: 16777215(maximum 3 bytes value) divided from 180 (maximum latitude value then 90 is added). This calculation is used to fit negative and positive values to 3 bytes width variable.

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

8-10th bytes are latitude:

CDCC64 convert to decimal -> 10538444

(10538444/93206.750)-90=23.0652447382

SBD AVL ID And Flags

SBD AVL ID and flags – Custom id that will indicate what caused the record to be generated (if periodic record are generated, id is not used).

From 03.28.06.Rev.320 supported all AVL ID's listed below.

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

11-th byte is SBD AVL ID

00 convert to decimal -> 0

DIN/DOUT Info

Din/Dout info - Displays configured IO elements in parameter id 99422

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

12-th byte is DIN\DOUT info

00 converted to binary is 00000000

00000000 -> bits presenting DINs and DOUTs state in 1 - high, 0 - low or turned off (if not configured to be sent in SBD record), DINs and DOUTs are represented in this order in DIN/DOUT info bits DIN1, DIN2, DIN3, DIN4, DOUT1, DOUT2, DOUT3, DOUT4

Hex 00 Converted to binary = 0 0 0 0 0 0 0 0
DIN1 DIN2 DIN3 DIN4 DOUT1 DOUT2 DOUT3 DOUT4

Examples with a different value:

Hex 16 Converted to binary = 0 0 0 1 0 1 1 0
DIN1 DIN2 DIN3 DIN4 DOUT1 DOUT2 DOUT3 DOUT4
Hex 69 Converted to binary = 0 1 1 0 1 0 0 1
DIN1 DIN2 DIN3 DIN4 DOUT1 DOUT2 DOUT3 DOUT4
Hex 42 Converted to binary = 0 1 0 0 0 0 1 0
DIN1 DIN2 DIN3 DIN4 DOUT1 DOUT2 DOUT3 DOUT4

Reserved

Reserved - Not used anywhere, but left due to compatibility with fm6 project.

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

13-th byte is reserved for FM devices and on FMB platform not used, therefore it is always FF.

Speed

Speed – Indicates the speed of the vehicle if configured.

{AD}{69}{57}{63}{91}{F6}{A0}{CD}{CC}{64}{00}{00}{FF}{00}

14-th byte need to be converted from HEX to decimal, only GNSS Speed used, if no GNSS fix FF - 255 sent, if not configured to send as SBD IO element 0 sent.

SBD AVL ID’s

ID IO Element
0 Periodic record
1 Digital Input 1
2 Digital Input 2
24 Speed
179 Digital Output 1
247 Crash

Additional Information

  • 1 Iridium data packet uses 14 bytes of data, this means when using SBD8 service plan we get 8000/14=571 records, please keep this in mind when testing out the iridium terminal.
  • The device is able to generate 1 record every minute. That is about 9,5 hours of continuous record generation (once every minute), which can deplete the plan.
  • Exceeding the plan will introduce overdraft fees, unless SBD upload limit is configured.
  • Once device reaches SBD limit it will stop sending records via Iridium terminal.