Main ❯ Underwater acoustic modems ❯ RedGTR: Communication protocol specification
![]() |
|
|---|---|
| www.unavlab.com support@unavlab.com |
RedGTR - underwater acoustic code communication modem Communication protocol specification |
RedGTR underwater acoustic modems support data interfacing using the RS-232 physical layer standard for an asynchronous interface (UART) with a data line voltage of 3.3 V. The connection uses a four-wire cable with Tx (transmitter), Rx (receiver), Vcc (power) and GND (ground) wires. Without additional repeaters and interface converters, the maximum data bus length for which correct interface operation is guaranteed is no more than 2 meters.
Default connection port settings1:
Baudrate: 9600 bit/s
Data bits: 8
Stop bits: 1
Parity: No
Hardware flow control: No
CAUTION! The modems are powered by a 12 V DC source, while the data line voltage is 3.3 V.
The NMEA0183 standard describes the format of text (ASCII) sentences at the dialog layer.
Sentence example: $PTNT0,0*hh<CR><LF>
Main elements of an NMEA0183 sentence:
The D2H prefix in a sentence name means that it is transmitted from the device (Device) to the control system (Host). The H2D prefix in a sentence name means that it is transmitted from the control system (Host) to the device (Device).
With this sentence, the device indicates that a command has been accepted or that an error has occurred (depending on the value of the errorCode parameter, see section 3.2).
Sentence format: $PTNT0,x*hh <CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| 0 | Sentence identifier |
| errorCode | Error code (see section 3.2) |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Request the value of a local parameter. With this sentence, the control system can request the value of a local parameter (see section 3.3).
Sentence format: $PTNT4,xx,00*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| 4 | Sentence identifier |
| Requested data ID | Data identifier (see section 3.3) |
| Reserved | Reserved, must always be ‘00’ |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Set the value of a local parameter. With this sentence, the control system can request that a local parameter value be set (see section 3.3).
Sentence format: $PTNT7,xx,00*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| 7 | Sentence identifier |
| Requested data ID | Data identifier (see section 3.3) |
| Reserved | Reserved, must always be ‘00’ |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Local parameter value. With this sentence, the modem returns the value of a local parameter requested by the control system (using the IC_H2D_LOC_DATA_GET sentence).
Sentence format: $PTNT5,x,x.x*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| 5 | Sentence identifier |
| Requested data ID | Data identifier (see section 3.3) |
| Requested data value | Value |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Device information. With this sentence, the device reports its data: device type, firmware version and serial number.
Sentence format: $PTNT!,c--c,x,x,c--c,x,c--c*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| ! | Sentence identifier |
| System moniker | System name string |
| System version | System version |
| Device type | Device type (see section 3.1) |
| Communication subsystem moniker | Communication subsystem name string with the release name in square brackets ‘[]’ |
| Communication subsystem version | Communication subsystem version |
| Serial number | 96-bit serial number (a string in hexadecimal format) |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Request to perform a service action.
Sentence format: $PTNT6,xx,00*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| 6 | Sentence identifier |
| Action ID | Service action identifier (see section 3.4) |
| Reserved | Reserved ‘00’ |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Transmit a code message to a remote subscriber.
Sentence format: $PTNT8,x,ч*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| 8 | Sentence identifier |
| Subscriber ID | Subscriber address from 0 to 25 (25 - broadcast message) |
| Message ID | Message identifier, (see section 3.5) |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Ping a remote subscriber.
Sentence format: $PTNTA,x,x*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| A | Sentence identifier |
| Subscriber ID | Subscriber address from 0 to 24 |
| Timeout | Maximum response waiting time in ms (integer) |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
Ping a remote subscriber (extended version).
Sentence format: $PTNTE,x,x*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| E | Sentence identifier |
| Subscriber ID | Subscriber address from 0 to 24 |
| Message ID | Identifier of the requested parameter of the remote subscriber (see section 3.5) |
| Timeout | Maximum response waiting time in ms (integer) |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
A message has been received.
Sentence format: $PTNT9,x,x.x,x.x*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| 9 | Sentence identifier |
| Message ID | Identifier of the received message (see section 3.5) |
| SNR | Signal-to-interference ratio on reception, dB |
| Dpl | Doppler shift, Hz |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
The remote subscriber response timeout has been exceeded.
Sentence format: $PTNTB,x*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| B | Sentence identifier |
| Subscriber ID | Identifier of the queried subscriber |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
A response to the REM_PING request has been received from a remote subscriber.
Sentence format: $PTNTC,x,x.x,x.x,x.x,x.x,x.x,x.x*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| C | Sentence identifier |
| Subscriber ID | Identifier of the queried subscriber |
| MSR | Signal-to-interference ratio on reception, dB |
| Dpl | Doppler shift, Hz |
| pTime | Signal propagation time to the queried subscriber, s |
| Dist | Distance to the queried subscriber, m (only for the version with a built-in depth sensor) |
| Dpt | Local depth, m (only for the version with a built-in depth sensor) |
| Tmp | Local temperature, °C (only for the version with a built-in depth sensor) |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
A response to the REM_PINGEX request has been received from a remote subscriber.
Sentence format: $PTNTD,x,x,x.x,x.x,x.x,x.x,x.x,x.x,x.x*hh<CR><LF>
| Field/Parameter | Description |
|---|---|
| $ | Sentence start ‘$’ |
| PTNT | TNT command system |
| D | Sentence identifier |
| Subscriber ID | Identifier of the queried subscriber |
| Requested data ID | Identifier of the requested value (see section 3.5) |
| Requested data | Requested value |
| MSR | Signal-to-interference ratio on reception, dB |
| Dpl | Doppler shift, Hz |
| pTime | Signal propagation time to the queried subscriber, s |
| Dist | Distance to the queried subscriber, m (only for the version with a built-in depth sensor) |
| Dpt | Local depth, m (only for the version with a built-in depth sensor) |
| Tmp | Local temperature, °C (only for the version with a built-in depth sensor) |
| * | NMEA checksum separator |
| hh | NMEA checksum |
| <CR><LF> | End of sentence |
| Value | Device type | Description |
|---|---|---|
| ‘0’ | DEVICE_REDBASE | RedWave relay sonobuoy |
| ‘1’ | DEVICE_REDNODE | RedWave navigation receiver |
| ‘2’ | DEVICE_REDNAV | RedWave diver’s navigator |
| ‘3’ | DEVICE_REDGTR | RedWave code modem |
| ‘10’ | DEVICE_REDLINE | RedLine underwater acoustic modem |
| ‘11’ | DEVICE_NATRIX | Natrix underwater acoustic modem |
| Value | Name | Description |
|---|---|---|
| ‘0’ | NO_ERROR | Request accepted |
| ‘1’ | INVALID_SYNTAX | Syntax error |
| ‘2’ | UNSUPPORTED | Command not supported |
| ‘3’ | TRANSMITTER_BUSY | Transmitter busy |
| ‘4’ | ARGUMENT_OUT_OF_RANGE | Argument/parameter outside the range of permissible values |
| ‘5’ | INVALID_OPERATION | The operation cannot be performed at this time |
| ‘6’ | UNKNOWN_FIELD_ID | Unknown/unsupported field |
| ‘7’ | VALUE_UNAVAILIBLE | The requested value is not available |
| ‘8’ | RECEIVER_BUSY | Receiver busy |
| Value | Name | Description |
|---|---|---|
| ‘0’ | DEVICE_INFO | Device information |
| ‘1’ | MAX_REM_TOUT | Maximum remote response timeout, ms |
| ‘2’ | MAX_SUBS | Maximum possible number of subscriber addresses |
| ‘3’ | PTS_PRESSURE | Pressure value from the built-in sensor (if present), mbar |
| ‘4’ | PTS_TEMP | Water temperature value from the built-in sensor (if present), °C |
| ‘5’ | PTS_DEPTH | Depth (distance from the water surface) from the built-in sensor (if present) |
| ‘6’ | CORE_TEMP | Processor core temperature, °C |
| ‘7’ | BAT_VOLTAGE | Supply voltage, V |
| ‘8’ | PRESSURE_RATING | Maximum permissible external pressure, bar |
| ‘9’ | SURFACE_PRESSURE | Pressure at the water surface, mbar |
| ‘10’ | WATER_DENSITY | Water density, kg/m3 |
| ‘11’ | SALINITY | Water salinity, PSU |
| ‘12’ | SOUND_SPEED | Speed of sound in water, m/s |
| ‘13’ | GRAVITY_ACC | Gravitational acceleration, m/s2 |
| ‘14’ | Reserved | |
| ‘15’ | Reserved | |
| ‘16’ | Reserved | |
| ‘17’ | Reserved | |
| ‘18’ | Reserved | |
| ‘19’ | Reserved | |
| ‘20’ | SUB_ID | Subscriber address |
| Value | Name | Description |
|---|---|---|
| ‘0’ | LOC_INVOKE_FLASH_WRITE | Save configuration fields to internal flash memory |
| ‘1’ | LOC_INVOKE_DPT_ZERO_ADJUST | Use the current pressure reading as the pressure at the water surface |
| ‘2’ | LOC_INVOKE_RESTART | ‘Warm’ reboot of the device |
| Name | Code | Description |
|---|---|---|
| CDS_CMD_PING | 0 | Ping request |
| CDS_CMD_PONG | 1 | Response to a ping |
| CDS_CMD_DPT | 2 | Depth |
| CDS_CMD_TMP | 3 | Temperature |
| CDS_CMD_BAT | 4 | Battery voltage |
| CDS_CMD_USR_0 | 5 | User command |
| CDS_CMD_USR_1 | 6 | User command |
| CDS_CMD_USR_2 | 7 | User command |
| CDS_CMD_USR_3 | 8 | User command |
| CDS_CMD_USR_4 | 9 | User command |
| CDS_CMD_USR_5 | 10 | User command |
| CDS_CMD_USR_6 | 11 | User command |
| CDS_CMD_USR_7 | 12 | User command |
| CDS_CMD_USR_8 | 13 | User command |
| CDS_CMD_USR_9 | 14 | User command |
| CDS_CMD_USR_10 | 15 | User command |
| CDS_CMD_USR_11 | 16 | User command |
| CDS_CMD_USR_12 | 17 | User command |
| CDS_CMD_USR_13 | 18 | User command |
| CDS_CMD_USR_14 | 19 | User command |
| CDS_CMD_USR_15 | 20 | User command |
| CDS_CMD_USR_16 | 21 | User command |
| CDS_CMD_USR_17 | 22 | User command |
| CDS_CMD_USR_18 | 23 | User command |
| CDS_CMD_USR_19 | 24 | User command |
| CDS_CMD_USR_20 | 25 | User command |
| CDS_CMD_USR_21 | 26 | User command |
| CDS_CMD_USR_22 | 27 | User command |
| CDS_CMD_USR_23 | 28 | User command |
| CDS_CMD_USR_24 | 29 | User command |
| CDS_CMD_USR_25 | 30 | User command |
| CDS_CMD_USR_26 | 31 | User command |
| CDS_CMD_USR_27 | 32 | User command |
| CDS_CMD_USR_28 | 33 | User command |
| CDS_CMD_USR_29 | 34 | User command |
| CDS_CMD_USR_30 | 35 | User command |
| CDS_CMD_USR_31 | 36 | User command |
| CDS_CMD_USR_32 | 37 | User command |
| CDS_CMD_USR_33 | 38 | User command |
| CDS_CMD_USR_34 | 39 | User command |