From Technologic Systems Manuals
Note: This section is new and currently under publishing review. It may change. Technologic Systems advises refreshing this page frequently to ensure the latest information is displayed.

The TS-7800-V2 coincides with enhanced support for the TS-IRIDIUM SBD transceiver module. The TS-IRIDIUM SBD transceiver provides satellite data communication from anywhere in the world provided its antenna has a full, clear view of the sky.

The IRIDIUM satellite constellation consists of 66 low orbit satellites, moving from north to south. For best connectivity, the SBD antenna should have a clear view of approximately 95% of the open sky, or full sky visibility above 8.2 degrees from the horizon.

To check the height of potential obstructions, it is useful to hold a fist at arm's length with the wrist parallel to the horizon. Obstructions larger than that fist above the horizon could interfere with the Iridium signal. Cliffs, buildings, vehicles, and dense foliage will interfere with the satellite signal. Smoke, clouds, fog, rain, and weather will not interfere with the satellite signal.

Iridium infographic.jpg

1 IRIDIUM Getting Started

To connect to the TS-IRIDIUM modem hardware, configure the TS-IRIDIUM jumper configuration and load the serial port driver thus:

source /sbin/ts7800.subr
modprobe ts7800_isa16550 irq=5 io=0x3f8

Once the driver has been loaded, a quick test of modem functionality can be achieved by using your choice of terminal emulator and querying the modem using some AT commands, for example:

root@ts7800-v2:~# picocom -b 19200 /dev/ttyS12
picocom v1.7

port is        : /dev/ttyS12
flowcontrol    : none
baudrate is    : 19200
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        :
omap is        :
emap is        : crcrlf,delbs,

Terminal ready
IRIDIUM 9600 Family SBD Transceiver

Call Processor Version: TA16005

Modem DSP Version: 1.7 svn: 2358

DBB Version: 0x0001 (ASIC)

RFA Version: 0x0007 (SRFA2)

NVM Version: KVS

Hardware Version: BOOT07d2/9602NrvA-D/04/RAW0d

BOOT Version: TA16005 (rev exported)


The modem's IMEI is available using at+gsn. This number identifies the modem on the satellite network and will be used both during setup with the satellite provider, and in sending/receiving data on the modem device.

2 Theory of Operation

The IRIDIUM SBD system is a satellite radio network primarily used for short data reporting or command and control applications. Network operations are largely obfuscated from the downstream developer such that communication with the modem requires very little software support. Communication with the remote device (mobile terminated messages) is achieved through an email to data@sbd.iridium.com, where the subject is the IMEI of the target IMU, and the message to be sent is a 320 byte file attachment with the suffix ".sbd". Communication from the remote device (mobile originated messages) is achieved by the IMU (the 9602 satellite modem) sending up to 320 bytes to the satellite network. The destination for this data is determined when the satellite account for that modem was set up, and is typically either a short list of email addresses (typically up to 5 email addresses), or a fixed IP network socket.

With this description in mind, a typical round-trip communcaiton might look something like this:

  1. Fixed operator sends an email to data@sbd.iridium.com, subject: 1234567890, file attachment "helloworld.sbd". The Iridium network checks the .sbd file and IMEI (1234567890) for validity and sends it to the satellite network for dissemination to the target IMU.
  2. IMU (the satellite modem) makes periodic checkin and pulls in most recent message from SBD mailbox, updating message counter.
    1. SBC (such as the TS-7800-V2) application reads IMU status and copies MT data from message buffer.
    2. SBC parses message buffer and prepares response.
    3. SBC writes response back to IMU (modem)
  3. IMU performs periodic checkin per SBC instruction and transmits MO (Mobile Originated) message to Satellite network.
  4. Satellite network sends MO message via email to predefined destination email address list (or IP address).
  5. Fixed operator receives email from sbdservice@sbd.iridium.com containing attachment data from IMU 1234567890.

3 TS-IRIDIUM Hardware

3.1 TS-IRIDIUM Jumper Settings

COM and IO Jumpers:

PLD Base Address Selection:

3.2 TS-IRIDIUM PLD Registers


The sbdctl application is an example application that can send and receive data on the IRIDIUM network. It requires an IRIDIUM 9602 modem and an appropriate account through a third-party satellite network provider. The source code example is located on the Technologic Systems public github here.

The sbdctl application uses multiple command line switches, and uses stdin/stdout where input or output are necessary:

root@ts7800-v2:~# sbdctl 
Usage: sbdctl [options] ...
Technologic Systems SBD Control Utility
Status output goes to stderr.  All other IO uses stdin/stdout.
Options are executed in the order given on the command line.
For example:
sbdctl -D <data_len_bytes> -c < myfile.bin
This would read myfile.bin into the MO buffer, then initiate an SBD session
(if possible) to transmit the data to the network.
NOTE:  Maximum input is 340 bytes for either text or binary transmissions.
NOTE2:  The MO and MT buffers can only contain one message each.

 -p, --port </dev/ttyEX1>  Define which serial port to use.
 -c, --connect             Connect to satellite and initiate SBD session.
 -t, --tread               Read text from SBD modem's receive buffer.
 -d, --dread               Read binary data from SBD modem's receive buffer.
 -T, --twrite <len>        Write <len> bytes text data from stdin to SBD modem's transmit buffer.
 -D, --dwrite <len>        Write <len> bytes binary data from stdin to SBD modem's tx buffer.
 -r, --rssi                Request new RSSI reading from SBD modem.
 -s, --status              Get local MO and MT message queue status.
 -e, --events              Enable unsolicited event reporting from modem.
 -i, --info                Dump modem-related info in BASH-compatible variables.
 -x, --indexes             Report message index number for MO and MT.
 -y, --clearindex          Clear Mobile Originated Message Sequence Number.
 -k, --clearbuffers        Clear both MO and MT buffers.
 -l, --clearmobuf          Clear Mobile Originated (MO) buffer.
 -m, --clearmtbuf          Clear Mobile Terminated (MT) buffer.
 -a, --cpymomtbuf          Copy MO to MT buffer on modem.

5 AT Command Set

When interfacing with the Iridium 9602 SBD directly, the communication protocol is a serial AT command set. The commands supported by the Iridium 9602 are described here in brief. See the official IRIDIUM 9602 modem user's manual for full descriptions (The latest should be available from the satellite service provider).

A/ -- Repeat last AT command.
AT -- Command prefix used for all other commands. Returns "OK<CR><LF>"
En -- Echo characters to DTE. n=0 no echo n=1 echo.
In -- Indentification. Requests ISU to display information about itself.
n=0 2400
n=1 0000
n=2 OK
n=3 "XXXXXXXX" Software revision level (TA16005)
n=4 IRIDIUM 9600 Family
n=5 8816
n=6 "XXX" Factory Identity (1OK)
n=7 "XXXXXXXX" Hardware specification (BOOT07d2/9602NrvA-D/04/RAW0d)
Qn -- Quiet Mode
n=0 ISU responses are sent to the DTE. n=1 ISU resopnses are NOT sent to the DTE.
Vn -- Verbosity
n=0 Numeric responses n=1 Text responses.
Zn -- Soft Reset
n=0 restore config 0 n=1 restore config 1.
%R -- Displays all S registers
&Dn -- DTR Control
n=0 DTR off, n=1 DTR on (DTR not supported on TS-IRIDIUM)
&Fn -- Restore Default Configuration (n = 0 or 1)
&Kn -- Flow Control
n=0 Disable n=3 RTS/CTS N=4 XON/XOFF n=6 Both
&V -- View active and stored configurations.
&Wn -- Store Active Configuration in profile slot n (0 or 1)
&Yn -- Designate default reset profile (0 or 1)
*F -- Flush to Eeprom
Modem shutdown prep / save volatile buffer data.
*Rn -- Radio Enable
n=0 disable radio n=1 enable radio.
+CCLK -- Real-Time Clock
+CCLK? -- Query RTC (see +cclk).
+CGMI -- Query Manufacturer Information
+CGMM -- Model Identification
+CGMR -- Query Revision Information
+CGSN -- Query IMEI
+CIER -- Unsolicited Event Reporting
Causes modem to actively report changes in status when changes are detected.
mode 0=disable 1=enable. See IRIDIUM documentation for more detail.
+CRIS -- Ring Indication Status
tri not used on 9602
sri: 0=no ring, 1=ring
timestamp = number of seconds since IRIDIUM epoch.
+CSQ -- Signal Quality
+CSQ: 0-5 signal quality rating. 0=none 5=best
+CULK=n-- Unlock.
n=unlock code given by network provider.
+CULK? -- Query if unlock is needed.
0 = not locked (all modems shipped from Technologic Systems are unlocked).
+GEMON -- Power Consumption Meter.
+GEMON function was removed by Iridium in firmware version TA16005.
+GMI -- Get Manufacturer Information. See +CGMI.
+GMM -- Get Model Information. See +CGMM
+GMR -- Get Revision Information. See +CGMR
+GSN -- Get IMEI. See +CGSN
+IPR=n -- ISU Data rate (default 19200 baud).
+IPR=<rate> rates from 0=600 baud to 7=38400 baud. 6 is default at 19200 baud.
+SBDAREG=n -- Short Burst Data Automatic Registration. +SBDAREG=<mode>
0=disable 1=automatic 2=ask 3=auto w/event report 4=ask w/event report
See IRIDIUM documentation.
+SBDC -- Clear MOMSN (Mobile Originated Message Sequence Number).
+SBDDn -- Short Burst Data Clear SBD Message Buffer(s) +SBDD[<type>]
n=0 clear MO buffer n=1 clear MT buffer n=2 clear both buffers
Caveats: See IRIDIUM documentation.
+SBDDET -- Detach ISU from Gateway. See docs for error list.
+SBDDSC -- Delivery Short Code.
IRIDIUM documentation.
+SBDI -- Initiate SBD session.
Connect ISU to ESS, download oldest message from ESS to MT buffer.
Transmit/upload MO buffer to ESS. ISU is modem, ESS is satellite service.
Detach automatically after operation complete.
See IRIDIUM documentation.
+SBDIX -- Extended SBDI.
Required if using SBD Ring Alerts. See IRIDIUM documentation
+SBDMTA -- Mobile-terminated alert
enable/disable ring alerts +sbdmta=0 disable =1 enable see docs.
+SBDRB -- Read binary data from ISU. outpts MT binary. Format is high order byte first
{2-byte length} + {binary message} + {2 byte checksum}
Caveats. See docs.
+SBDREG -- Force manual network registration. Optional include location data.
+sbdreg[=<location>] where <location> is [+|-] DDMM.MMM,[+|-]ddmm.mmm
DD deg lat (00-89) MM minutes lat (00-59) MMM 1/1000 min lat (000-999)
ddd deg lon (000-179) mm min lon (00-59) mmm 1/1000 min lon (000-999)
Resonse is +SBDREG:<status>,<err> 0=det 1=not reg 2=reg 3=denied, 0=no err
See below for error code list.
+SBDREG? -- Check for current registration.
0=detached 1=not reg'd 2=reg'd 3=reg denied
+SBDRT -- Read text from MT buffer.
Format: +SBDRT:<CR>{MT buffer}
+SBDS -- Checks state of MT and MO buffers.
Response +SBDS:<MO flag>,<MOMSN>,<MT flag>,<MTMSN>
Flags: 0=no message 1=message in buffer MTMSN=-1 means nothing in buffer.
+SBDST -- Set Session Timeout
+sbdst=<timeout> in seconds. See IRIDIUM documentation.
+SBDSX -- SBD Status Extended. It's +sbds with ring alert status and waiting msg count.
Note waiting msg count updated after every SBD session (sbdi/sbdix/sbdreg/sbddet).
+SBDTC -- Transfer MO buffer to MT buffer.
Mostly used to test software without using satellite network.
+SBDWB -- Write binary to ISU MO buffer.
+sbdwb=[<sbd msg len in bytes>] len does not inc checksum.
Modem will respond "READY<CR><LF>"
Send {binary sbd message} + {2 byte checksum}.
Checksum calculation is least significant 2 byte sum of whole message.
Send high order byte first.
example: "hello" in ascii would be sent as:
hex 68 65 6c 6c 6f 02 14
Modem will emit 0 on success, 1 on timeout of 60 seconds.
+SBDWT -- Write text message to ISU MO buffer.
Two usages:
  • +sbdwt alone will allow full length 340 bytes
Modem will emit "READY<CR><LF>" After <LF> send text message terminated by <CR>.
  • +sbdwt=[<text message>] <text message> maximum 120 bytes if sent this way.
Modem will emit "OK" on success or "ERROR" if something went wrong.
+SBDGW[n] -- Query what gateway this iridium is configured to use.
Responses are +SBDGW <gateway_text> either "EMSS" or "non-EMSS".
if 'n' version is used: +SBDGWN: <1 or 2>. n=1 default commercial gateway. n=2 some other gateway.
+SBDLOE -- Iridium Traffic Management Status.
Returns +SBDLOE:<status>,
If traffic management is NOT in effect,
-MSGEO -- Request Geolocation. Response -MSGEO
x,y,z is geolocation grid code from a Cartesian coordinate system.
The axes are aligned suhch that at 0 lat and 0 lon, both y and z are 0 and x is +6376, representing the nominal earth radius in KM. Coords are minimum -6376, max +6376, with a resolution of 4.
-MSSTM -- Request System Time.
32 bit integer expressing number of seconds since the most recent Iridium Epoch Rollover. Should not be used to calculate current date and time. Use +cclk for current date and time.

5.1 Status Codes

AT+SBDIX Status Codes
<these come from the gateway>
0: MO message successful send.
1: MO message sent successful, but the MT message queue was too big to receive.
2: MO message sent, but requested location update was not accepted.
3-4:Reserved, but indicates MO session success.
5-8:Reserved, but indicates MO session failure.
10: Gateway reported timeout.
11: MO message queue full at gateway.
12: MO message has too many segments.
13: Gateway reported session did not complete.
14: Invalid segment size.
15: Access Denied!
<these come from the transceiver>
16: Transceiver is locked and may not make SBD calls (see +CULK). AKA call the service provider.
17: Gateway not responding (local session timeout).
18: Connection lost (RF drop).
19-31: Reserved, but indicate MO session failed.
32: No network service, unable to initiate call.
33: Antenna fault, unable to initiate call.
34: Radio is disabled, unable to initiate (turn on the radio with at*r1).
35: Transceiver is busy, try again (transceiver is probably doing auto-negotiation).
36: Reserved, but indicates failure.

6 Checking the Hardware

To sanity-check the TS-IRIDIUM without transmitting messages over the satellite network, the IRIDIUM module includes a data transfer function, copying data from the transmit buffer to the receive buffer. The sbdctl utility can be used to exercise this function:

root@ts7800-v2:/u/home/mpeters/code/iridium# sbdctl --info
root@ts7800-v2:/u/home/mpeters/code/iridium# sbdctl -D 10 < qwerty.txt
root@ts7800-v2:/u/home/mpeters/code/iridium# sbdctl -a
root@ts7800-v2:/u/home/mpeters/code/iridium# sbdctl -d | hexdump -c
0000000   q   w   e   r   t   y   u   i   o   p 004   i