Mini Serial Interface
The AT commands implemented in this document are a subset of general AT modem commands and proprietary commands which follow the implementation for RAW IMT via REST API for the RockREMOTE.
Refer to: RAW IMT
These documents are intended to provide early access information to interested parties during the development process. Whilst we strive to maintain accuracy, any part of the specification or design of these products may change without notice.
This page was last reviewed for accuracy on September 4th 2024.
Please Note that many of the AT commands will require the 9770 to be correctly provisioned. In order for this to happen the Iridium antenna will need to be positioned in an area with a good view of the sky and the Mini powered for at least 10mins. This will allow the modem to register and collect it's provisioning information including the available IMT topics.
Please Note the v0.3 (BETA) FW release has a limit of 30kB for each individual message in both MO and MT directions for both binary and text. Message sizes beyond this may suffer from corruption, we are working to resolve this issue.
Definitions
MO - Mobile Originated - A message sent from the device to the Iridium network. MT - Mobile Terminated - A message recieved at the device from the Iridium network.
General information
The Mini and Mini OEM will not provide any response to strings or characters that are not defined within this document.
All commands MUST be prefixed with "AT" in order to be recognised
NOTE that characters are NOT echoed back by the Mini
MO and MT buffer limitations.
Due to limitations in memory availability within the Mini and Mini OEM products the buffer between the serial AT interface and the Iridium 9770 modem has the following limitations. The maximum total number of individual messages in both MO and MT directions is 10. i.e 10 can exist in the MO queue at the same time as 10 in the MT queue. The total sum of message sizes in both directions must be less than 190kB. i.e. Less than 100kB in the MO queue at the same time as 90kB in the MT queue would meet this requirement. See note above on message size limit of 30kB for the v0.3 BETA.
Default settings for v0.3 (Beta)
Serial - Speed 115.2kBd, 8 data bits, No parity, No flow control. RS232 Only.
Future feature (not implemented in v0.3 (Beta) will be to enable these settings to be changed in the user config.
AT Boot-Up
When the RockREMOTE is powered up the AT serial command will display a message of the day. This message will include the Rock Three Words (serial number) of the device and the model.
Future feature (not implemented in v0.3 (Beta) will be for this message to also indicate the cause of the last reboot.
AT Syntax
Command Syntax: All command will be issued as follows:
AT+CMD<CR>
Where AT is the AT command prefix, +CMD
will be proprietary AT commands for RAW IMT and <CR>
is carriage return which will indicate the end of a line.
Response Syntax: All responses will have the following syntax:
+CMD: <Response Context><CR>
OK<CR>
'
If the response requires a contextual response it will return it with a prefix of the command followed by the response context and a carriage return.
All responses will end with an OK<CR>
.
Error Syntax: A contextual error from the command will have the following syntax:
+CMD ERROR: <Error Num><CR>
Where <Error Num>
will be an unsigned integer defined in by the command followed by a carriage return.
Unsolicited Syntax: +CMD: <Unsolicited Context><CR>
If a command can come in unsolicited it will be prefixed with the command followed by the unsolicited context and a carriage return. This can be enabled and disabled with +UNS
command, it is enabled by default.
Indicate queue full notification - particularly for MT
Add Queue status request - lists the message ID’s - useful after waking up from sleep. Include remaining buffer space.
General AT Commands
Get manufacturer string
+CGMI | |
---|---|
AT+CGMI | Returns the device manufacturer string. |
Example | AT+CGMI +CGMI: "Ground Control" OK |
Get model string
+CGMM | |
---|---|
AT+CGMM | Returns the model string. |
Example | AT+CGMM +CGMM: "RockREMOTE Mini" OK |
Notes | Returns the “Variant” key from the device.cfg file |
Get Rock 3 Words
+CRTW | |
---|---|
AT+CRTW | Returns the Rock 3 Words - device serial number. |
Example | AT+CRTW +CRTW: "mini.mini.me" OK |
Notes |
Get Power Consumption - from V0.5
Command | Description |
---|---|
+CPOW | |
AT+CPOW | Returns the average device power consumption in mW over the last second. |
Example | AT+CPOW +CPOW: 285 OK |
Notes |
Reboot - from V0.5
Command | Description |
---|---|
+CTOK and +CRBT | |
AT+CTOK AT+CRBT=<TOK> | Returns a token number that is used to validate a subsequent reboot request. Request reboot |
Example | AT+CTOK +CTOK: 123456 OK AT+CRBT=123456 |
Notes | A successful reboot command (AT+CBRT=<TOK> )is executed immediately - there is no feedback |
Errors | +CRBT ERROR: <Error Num> Error Nums: 1: Invalid token |
Ethernet enable - from V0.5
Command | Description |
---|---|
+CETH | |
AT+CETH AT+CETH=0|1 | Returns whether the Ethernet interface is currently enabled in the configuration. Disables or enables the Ethernet interface in the configuration. Returns the configured state. Takes effect at next device restart. |
Example | AT+CETH +CETH: 0 OK AT+CETH=1 +CETH: 1 OK |
Notes | |
Errors | +CETH ERROR: Setting not written |
User configuration read - from V0.6
Command | Description |
---|---|
+CFGR | |
AT+CFGR | Returns current contents of the user configuration |
Example | AT+CFGR {<JSON>} OK |
Notes |
User configuration write - from V0.6
Command | Description |
---|---|
+CFGW | |
AT+CFGW | Writes a JSON string into file user.cfg |
Example | AT+CFGW = {<JSON>} +CFGW: 0 OK |
Notes | JSON has to be formatted as a single line |
Errors | +CFGW ERROR: <Error Num> Error Nums: 1: Invalid Command format 2: Illegal message length 3: Bad JSON |
Get the RR-mini firmware version - from V0.6
Command | Description |
---|---|
+CGCV | |
AT+CGCV | Returns the version number of the firmware running on RR-mini. |
Example | AT+CGCV +CGCV: 0.6.1 OK |
Notes |
Get the Iridium modem firmware version - from V0.6
Command | Description |
---|---|
+CIRV | |
AT+CIRV | Returns the version number of the Iridium firmware running on RR-mini. |
Example | AT+CIRV +CIRV: 1.3.4 OK |
Notes |
Device firmware update - capability added in V0.6
Command | Description |
---|---|
+CTOK and +CDFU | |
AT+CTOK AT+CDFU = <TOK> | Returns a token number that is used to validate a subsequent reboot request. Start kermit session to transfer the new device firmware file. |
Example | AT+CTOK +CTOK: 123456 OK AT+CDFU = 123456 |
Errors | +CDFU ERROR: <Error Num> Error Nums: 1: Invalid token |
Get serial number string
+CGSN | |
---|---|
AT+CGSN | |
Example | AT+CGSN +CGSN: "300058060009380" OK |
Notes |
Get the SIM ICCID string
+CCID | |
---|---|
AT+CCID | Returns the Iridium SIM ICCID |
Example | AT+CCID +CCID: "8988169771000172669" OK |
Notes | If no SIM is present the response will be empty +CCID: "" |
Get the signal level
+CSQ | |
---|---|
AT+CSQ | Returns the Iridium Signal Level. |
Example | Return signal in dBm and Signal Bars (0-5).+CSQ: <dBm>,<Signal Bars> AT+CSQ +CSQ: -125,0 OK |
Notes | Response of +CSQ: 0,0 is given when the modem has not provided a “signal_level” - ie when “constellation_visible” is ‘false’ |
Configure unsolicited messages
When unsolicited messages are disabled the Mini/OEM unit will only store 2 IMT MT messages at any time irrespective of their size.
If a new IMT MT message arrives when the buffer already contains 2 messages then the oldest stored message will be replaced with the one that has just arrived.
Configure unsolicited messages
+UNS=<Enable/Disable> | |
---|---|
AT+UNS= | Enable and disable unsolicited messages. When unsolicited messages are enabled, the AT interface will send unsolicited AT messages defined in the document. When disabled, it will not send any AT messages unsolicited.<Enable> : 1 (Default)<Disabled> : 0 |
Example | AT+UNS=1 OK |
Notes | State is not persisted across power cycle.AT+UNS with a payload that evaluates to 0 or 1 responds with OK and state is changed - additional input is ignored.AT+UNS with a payload that evaluates to a number other than 0 or 1 responds with ERROR - additional input is ignored.AT+UNS with a non-numeric value will disable unsolicited messages.AT+UNS without a value will respond with current state:AT+UNS Response: +UNS:1 OK or +UNS:0 OK Correctly interprets values that start 0x and 0X. Treats values in quotes as invalid. |
GNSS AT Commands
Get the current GNSS location - Extended in v0.5
+GNSS | |
---|---|
AT+GNSS | Gets the current location of RockREMOTE. Returns a comma-separated string of the following: Source: 0: None 1: GPS 2: Galileo 3: Glonass 4: GNSS 5: BeiDou 6: NavIC Epoch: A UNIX timestamp of when the fix was achieved. Latitude Longitude Fix: 0: None 1: Standard 2: DGPS Number of Satellites: Number of satellites used for the fix. HDOP: Horizontal Dilution of Precision Altitude: In metres Geoidal Separation: In metres DGPS Ages: In Seconds DGPS ID: DGPS station ID Speed: Speed in knots Heading: Heading/Track made good in degrees True |
Example | AT+GNSS +GNSS: 1,1713445252,51.8644,-2.48603,1,6,0.9,140,47,-1,"",0,0 OK |
AT+GNSS=\<EPOCH>,\<LATITUDE>,\<LONGITUDE>,\<ALTITUDE> | Sets the current location and time from the host to the RockREMOTE. This function is only available when the internal GNSS is disabled. Positive values for latitude are North. Positive values for longitude are East. |
Example | AT+GNSS=1713445252,51.8644,-2.48603,140.5 OK |
Errors | +GNSS ERROR: \<Error Num> Error Numbers: 1: Can't set GNSS with internal GNSS enabled 2: Invalid parameters 3: Invalid position |
Notes | If there is no location fix all zeros and empty strings will be returned.AT+GNSS +GNSS: 0,0,0.000000,0.000000,0,0,0.0,0.0,0.0,0,"",0.0,0.0 OK The response will be the stored value - even if the timestamp was some time in the past, i.e. it will give the ‘last good fix’. v0.3 (Beta) reports DGPS as a fix quality but doesn’t provide age or station ID. |
RAW IMT AT Commands
+IMTT | |
---|---|
AT+IMTT | List all the provisioned RAW IMT Topics known to RockREMOTE devices. |
Example | AT+IMTT +IMTT: 244,"RAW" OK |
Notes | If no IMT topics are provisioned then no topics will be listed as follows:AT+IMTT OK |
Commanding RAW IMT
+IMTC[<n>]=<Topic OR Message ID> | |
---|---|
AT+IMTC1 | 1|2|3=[<Topic OR Message ID>] |
Example | For v0.3 (Beta), clearing a specific message from the MO queue will not be possible. Clear IMT MO Queue for Topic 244: AT+IMTC2=244 OK Cancel MO message with ID 256: AT+IMTC3=256 OK |
Errors | +IMTC[<n>] ERROR: <Error Num> Error Numbers: 1 Failed to cancel MO operation2 Invalid Message ID3 Topic not provisioned4 Illegal [<n>] provided5 Command format not currently supported.Example of an invalid Message ID: AT+IMTC3=13232 +IMTC3 ERROR: 2 OK |
Notes | Current implementation v0.3 (Beta) only allows all messages in a specified queue to be deleted.AT+IMTC1 deletes the MT messages destined to the serial port (CDM MT messages are unaffected) and cancels any associated RING events.AT+IMTC2 deletes all MO messages.Responses: +IMTC1 OK +IMTC2 OK |
Queue Status of the IMT
+IMTQ | |
---|---|
AT+IMTQ | Returns the queue status of IMT MO and MT. This is broken down into MO and MT:+IMTQ: MO,<Count>,<Total Bytes> +IMTQ: MT,<Count>,<Total Bytes> |
Example | AT+IMTQ +IMTQ: MO,2,200 +IMTQ: MT,5,600 OK |
Errors | None |
Notes |
IMT Statistics
+IMTS | |
---|---|
AT+IMTS | Returns the IMT statistics:+IMTS: <Topic Name>,<MO Count>,<MT Count>,<MO DROP Count>,<MT Drop Count> MO Count: The number of MO IMTs messages sent. MT Count: The number of MT IMTs received. MT/MO Drop Count: Dropped messages due to error in reception or transmission, transmission retry, or TTL exceeding. |
Example | AT+IMTS +IMTS: "Reflector_400465",1,2,0,0 OK |
Errors | None |
Notes |
Sending MO IMT in Text Mode with no CRC
+IMTWT=<Topic ID>,<Text> | |
---|---|
AT+IMTWT= | <Topic ID> :The IMT Topic ID. This is optional; if a Topic ID is not specified, the configured default Topic ID will be used. <Text> :ASCII String to send, limited to 5 kB. The text can be but doesn't have to be encapsulated in quotations. |
Example | This example will send “Hello World!” on Topic 244; once accepted, a message ID of 1 was returned.AT+IMTWT=244,"Hello World!" +IMTWT: 1 OK This example will send “Hello World!” on the default topic; once accepted, a message ID of 2 was returned. AT+IMTWT="Hello World!" +IMTWT: 2 OK |
Errors | +IMTWT ERROR: <Error Num> Error Numbers: 1 Topic not provisioned2 Payload is too large3 Buffer is fullExample of an invalid Message ID: AT+IMTWT=55,"A Invalid Topic" +IMTWT ERROR: 1 OK |
Notes | When the command gets a response, it doesn’t mean the IMT message has been sent; it simply means it has been acknowledged by the device. |
Sending MO IMT in Binary Mode with CRC
+IMTWB=<Topic ID>,<Length> | |
---|---|
AT+IMTWB= | <Topic ID> :The IMT Topic ID. This is optional; if a Topic ID is not specified, the configured default Topic ID will be used. <Length> :The length of the binary data to be sent in binary mode minus the CRC, but the CRC should be included in the transmission. Currently, the maximum length for a single transfer is 100kB. Once in binary mode, the connected device must send binary data equal to the length specified plus the CRC within 60 seconds. The CRC is a 16-bit and is appended MSB. The CRC definition is: width=16 poly=0x1021 init=0x0000 refin=false refout=false xorout=0x0000 check=0x31c3 residue=0x0000 |
Example | Example of writing 10 bytes on topic 244; once 10 bytes have been received by the device and accepted, a message ID of 1 is returned.AT+IMTWB=244,10 … +IMTWB: 1 OK … denotes the binary mode of the connected device sending binary data.Example of writing 200 bytes on the default topic; once 200 bytes have been received by the device and accepted, a message ID of 2 is returned. AT+IMTWB=200 … +IMTWB: 2 OK |
Errors | +IMTWB ERROR: <Error Num> Error Numbers: 1 Topic not provisioned (Immediately reported after CR)2 Payload too large (Immediately reported after CR)3 Insufficient space in buffer (Immediately reported after CR)4 Timeout (60s) (Asynchronously during binary transmission)5 CRC failed (After reception of binary data)Example of a timeout of receiving binary data: AT+IMTWB=55,10 +IMTWB ERROR: 4 OK |
Notes | When the command gets a response, it doesn’t mean the IMT message has been sent; it simply means it has been accepted by the device. The sending device must send binary data within 60 seconds. |
Sending MO IMT in Binary Mode without CRC - from V0.6
+IMTWU=<Topic ID>,<Length> | |
---|---|
AT+IMTWU= | <Topic ID> :The IMT Topic ID. This is optional; if a Topic ID is not specified, the configured default Topic ID will be used. <Length> :The length of the binary data to be sent in binary mode. Once in binary mode, the connected device must send binary data equal to the length specified. |
Example | Example of writing 10 bytes on topic 80; once 10 bytes have been received by the device and accepted, a message ID of 1 is returned.AT+IMTWU=80,10 … +IMTWU: 1 OK … denotes the binary mode of the connected device sending binary data.Example of writing 200 bytes on the default topic; once 200 bytes have been received by the device and accepted, a message ID of 2 is returned. AT+IMTWU=200 … +IMTWU: 2 OK |
Errors | +IMTWU ERROR: <Error Num> Error Numbers: 1 Topic not provisioned (Immediately reported after CR)2 Payload too large (Immediately reported after CR)3 Insufficient space in buffer (Immediately reported after CR)4 Timeout (60s) (Asynchronously during binary transmission)Example of a timeout of receiving binary data: AT+IMTWU=55,10 +IMTWU ERROR: 4 OK |
Notes | When the command gets a response, it doesn’t mean the IMT message has been sent; it simply means it has been accepted by the device. The sending device must send binary data within 60 seconds. |
Sending MO IMT of a JSON object with no CRC - from V0.6
+IMTWJ=<Topic ID>,<JSON> | |
---|---|
AT+IMTWJ= | <Topic ID> :The IMT Topic ID. This is optional; if a Topic ID is not specified, the configured default Topic ID will be used. <JSON> :A JSON object formatted as a string with on carriage returns. Other white-space will be accepted. |
Example | This example sends a JSON object that contains a 'key' of type boolean called status with a value of false on topic 80, once accepted a message ID of 1 was returned.AT+IMTWJ=80,{"status":false} +IMTWJ: 1 OK |
Errors | +IMTWJ ERROR: <Error Num> Error Numbers: 1 Topic not provisioned.2 Payload too large.3 Buffer is full.Example of an invalid message ID: AT+IMTWJ=55,"A Invalid Topic" +IMTWJ ERROR: 1 OK |
Notes | When the command gets a response it doesn’t mean the IMT message has been sent it simply means it has been acknowledged by the device. |
Receive MT IMT Message containing JSON object without CRC - from V0.6
+IMTRJ=<Topic ID> | |
---|---|
AT+IMTRJ= | When a IMT MT is available indicated by the +IMTMTRING It can be requested in text mode, non-printable characters will be denoted with a . character. |
Example | Requesting IMT MT on topic 55 after +IMTMTRING +IMTMTRING=55,2,100 AT+IMTRJ=55 ... OK ... denotes JSON encoded message. Request IMT MT on the default topic: AT+IMTRJ ... OK |
Errors | +IMTRJ ERROR: <Error Num> Error Numbers: 1 No IMT.Example: No IMT MT when requesting message AT+IMTRJ=55 +IMTRJ ERROR: 1 OK |
Notes |
Status of MO IMT Message
+IMTMOS=<Message ID> | |
---|---|
AT+IMTMOS= | <Message ID> :The message ID of the IMT MO message which was returned by +IMTWT or +IMTWB . |
Example | AT+IMTMOS=1 +IMTMOS: <Topic ID>,<State>,<Epoch> OK <Topic ID> :This will be the Topic ID which message is for. <State> :1: Queued, waiting to be sent.2: Sending, been sent to the Iridium Modem3: Dropped, failed to send4: Cancelled, it was cancelled using +IMTC3 5: Sent<Epoch> :A UNIX timestamp of when the state was last changed. This timestamp may be inaccurate as it depends if the RockREMOTE device has synced with a reliable time source like GNSS. |
Errors | +IMTMOS ERROR: <Error Num> Error Numbers: 1 Invalid message ID5 Command format not currently supported.Example: Timeout of receiving binary data. AT+IMTMOS=1106 +IMTMOS ERROR: 1 OK |
Notes | For v0.3 (BETA) the +IMTMOS= command is not supported. |
Status of MT IMT
+IMTMTS | |
---|---|
AT+IMTMTS | This command will return the head of the MT queue similar to the +IMTMTRING unsolicited message.+IMTMTS: <Topic ID>,<Message ID>,<Message Length> |
Example | AT+IMTMTS +IMTMTS: <Topic ID>,<Message ID>,<Message Length> <Topic ID> :The IMT Topic ID, this will be the Topic ID of received MT IMT. <Message ID> :A unique Message ID for this MT. This ID should be used to acknowledge the message. <Message Length> :This will be the message length of the MT IMT. This will be from 1 to 100 kbytes. This doesn’t include the CRC. |
Errors | None |
Notes |
MT IMT Ring
+IMTMTRING | |
---|---|
AT+IMTMTRING | This will come in unsolicited to indicate a message has arrived. It can be commanded and is explained below. If the message hasn’t been acknowledged within 5 minutes this unsolicited messages will be repeated. |
Example | An unsolicited ring:+IMTMTRING: <Topic ID>,<Message ID>,<Message Length> <Topic ID> :The IMT Topic ID, this will be the Topic ID of received MT IMT. <Message ID> :A unique Message ID for this MT. This ID should be used to acknowledge the message. <Message Length> :This will be the message length of the MT IMT. This will be from 1 to 100 kbytes. This doesn’t include the CRC. |
Errors | None |
Notes | Refer to +UNS to enable and disable unsolicited messages. |
Receive MT IMT Message in binary mode with CRC
+IMTRB=<Topic ID> | |
---|---|
AT+IMTRB= | When an IMT MT is available indicated by the +IMTMTRING .It can be requested in binary mode. <Topic ID> :The IMT Topic ID, this is optional; if a Topic ID is not specified, the configured default Topic ID will be used. |
Example | Requesting IMT MT on topic 55 after +IMTMTRING :+IMTMTRING=55,1,100 AT+IMTRB=55 … OK … denotes binary reception of the 100 bytes plus 2 bytes for the CRC.Request IMT MT on the default topic: AT+IMTRB … OK |
Errors | +IMTRB ERROR: <Error Num> Error Numbers: 1 No IMT2 Queued message does not match the specified topic.Example: No IMT MT when requesting binary data: AT+IMTRB=55 +IMTRB ERROR: 1 OK |
Notes | To clear this MT IMT so more can be received it must be acknowledged with +IMTA .Current implementation v0.3 (BETA) returns ERROR: 2 if the 1 pending MT message is not for the specified topic. |
Receive MT IMT Message in text mode without CRC
+IMTRT=<Topic ID> | |
---|---|
AT+IMTRT= | When an IMT MT is available indicated by the +IMTMTRING .It can be requested in text mode, non-printable characters will be denoted with a . character.<Message ID> :A unique Message ID for this MT. This ID should be used to acknowledge the message. |
Example | Requesting IMT MT on topic 55 after +IMTMTRING :+IMTMTRING=55,2,100 AT+IMTRT=55 … OK … denotes text encoded message.Request IMT MT on the default topic: AT+IMTRT … OK |
Errors | +IMTRT ERROR: <Error Num> Error Numbers: 1 No IMTExample: No IMT MT when requesting base64 data: AT+IMTRT=55 +IMTRTERROR: 1 OK |
Notes | Will leave off the last two characters as they are the CRC. Unprintable characters are replaced with commas. The source message is irreversibly altered so if IMTRB is requested the binary will be the converted message without the CRC. |
Acknowledge MT IMT Message
+IMTA=<Message ID> | |
---|---|
AT+IMTA= | When an IMT MT is available indicated by the +IMTMTRING .<Message ID> :A unique Message ID for this MT. This ID should be used to acknowledge the message. This is returned in the +IMTMTRING command. |
Example | Acknowledging an IMT MT with message ID 1:AT+IMTA=1 OK |
Errors | +IMTA= ERROR: <Error Num> Error Numbers: 1 Message ID unknown.Example: An invalid or unknown message ID: AT+IMTA=5 +IMTA ERROR: 1 OK |
Notes |