Hardware variants
Name | Sensors | Wind | Band | Modulation | Update rate |
RS92-AGP | PTU | GPS | 400MHz | GMSK/direct 4800Bd | 2x/sec |
RS92-SGP | PTU | GPS | 400MHz | GMSK/Manchester/8N1 2400Bd | 1x/sec |
RS92-D | PTU | None | 1680MHz | GMSK/Manchester/8N1 2400Bd | 1x/sec |
RS92-KL | PTU | Loran | 400MHz | FM/Tone frequencies | 1x/sec |
Different battery types
Appended to the type listed above, fe. RS92-SGPD
D | Dry 6xAA cells |
W | Water activated |
A | 3xCR123 cells |
J | Special version for Japan, 6xAA |
Programming connector
On the bottom side, card edge "slot" connector behind plastic flap with serial number sticker:
(Looking from the bottom, antenna on the left, flap opens up)
1 | Direct battery + voltage |
2 | Ground |
3 | CPU UART TX |
4 | CPU UART RX |
5 | not connected |
6 | CPU PIN 46 (unknown use) |
7 | EEPROM SPI CS |
8 | CPU PIN 46 (unknown use) |
9 | EEPROM SPI CLK |
10 | EEPROM MOSI |
11 | CPU RESET (pull down to reset CPU) |
12 | EEPROM MISO |
UART protocol
All communication over UART is using 8N1 serial framing and always starts at 2400Bd.
Baudrate can be changed using commands to 115200Bd (makes reading EEPROM and values much faster).
Frame format
Request:
|
| Reply:
|
[CMD]
| [DATALEN]
| (data bytes)
| [CHKSUM]
|
| [ACK/ERROR]
|
- [CMD] is command byte
- [DATALEN] is number of data bytes that follow
- [CHKSUM] is XOR of all preceding data bytes (doesn't include CMD or DATALEN)
- [ACK/ERROR] is result code:
0x06 | Success |
0xA0 | Invalid Command |
0xA1 | Invalid Checksum |
0xA2 | Invalid Coeff. Block |
0xA3 | Invalid Addr |
0xA4 | Invalid Baudrate |
0xA5 | Invalid Frequency |
0xA6 | Invalid Time |
0xA8 | Error Writing Data |
0xA9 | Error Writing Status |
0xAF | Unspecified Error |
- Radiosonde will always ACK all commands and same is expected from the host.
- All multi-byte values are using little-endian (Intel) representation
Commands
Radiosonde can be in two modes:
SOUNDING MODE | This is normal mode when in flight, transmitter is activated and radiosonde is operating normally |
PROGRAMMING MODE | In this mode, transmitter is stopped and parameters can be changed |
Common commands
These commands work in both operating modes
0x61 - Get sonde serial number
Host request:
|
| Sonde result:
|
0x61
| 0x00
| 0x00
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
Sonde reply:
|
| Host ACK:
|
0x61
| [len]
| 0xVV 0xVV
| ASCII SN...
| [chk]
|
| 0x06
|
Cmd
| DataLen
| Hardware version
| Serial number
| ChkSum
|
| ACK
|
0x62 - Switch to programming mode
Host request:
|
| Sonde result:
|
0x62
| 0x00
| 0x00
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
0x6E - Switch to sounding mode
Host request:
|
| Sonde result:
|
0x6E
| 0x00
| 0x00
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
Sounding mode commands
These commands are only available in normal operation (sounding) mode
0x67 - Set transmitter power level
Host request:
|
| Sonde result:
|
0x67
| 0x01
| 0xLL
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Power level
| ChkSum
|
| Result
|
0x00 | Power amplifier off |
0x01 | Low |
0x02 | High |
0x03 | Forced high |
- This command only changes current transmitter setting, doesn't affect any EEPROM bytes
0x68 - Send telemetry data over UART
Host request:
|
| Sonde result:
|
0x68
| 0x01
| 0xST
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| State
| ChkSum
|
| Result
|
0x00 | Disabled, UART at 2400Bd |
0x01 | Enabled, UART at 115200Bd |
- When enabled, only valid command is 0x68 to disable it
- Baudrate change happens after ACK is send from radiosonde
Programming mode commands
These commands are only available in programming mode
0x64 - Get radiosonde status code
Host request:
|
| Sonde result:
|
0x64
| 0x00
| 0x00
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
Sonde reply:
|
| Host ACK:
|
0x64
| 0x02
| 0xST 0xST
| [chk]
|
| 0x06
|
Cmd
| DataLen
| Status
| ChkSum
|
| ACK
|
bit0 | Bad EEPROM values |
bit1 | Low battery voltage |
bit3 | Bad PTU values |
0x6A - Set UART baudrate
Host request:
|
| Sonde result:
|
0x6A
| 0x01
| 0xRR
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Baudrate
| ChkSum
|
| Result
|
- Change happens after radiosonde ACKs this command
0x80 - Disable EEPROM write protection
Host request:
|
| Sonde result:
|
0x80
| 0x00
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
- Note: this command may not be needed, other commands that write to EEPROM seems to disable/enable protection automatically
0x81 - Enable EEPROM write protection
Host request:
|
| Sonde result:
|
0x81
| 0x00
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
0x82 - Recalculate and write EEPROM checksum
Host request:
|
| Sonde result:
|
0x82
| 0x00
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
- Only needed if you write to EEPROM manually, standard functions correct the checksum automatically
0x63 - Set humidity sensor heating mode
Host request:
|
| Sonde result:
|
0x63
| 0x01
| 0xMM
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Mode
| ChkSum
|
| Result
|
- Warning: When enabled, sensors get very hot (over 100°C) and if used for longer period, they will be damaged
0x6B - Set KillTimer value
Host request:
|
| Sonde result:
|
0x6B
| 0x02
| 0xTT 0xTT
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Time
| ChkSum
|
| Result
|
- Sets KillTimer value in seconds, writes to EEPROM. When zero, KillTimer is disabled.
0x66 - Set frequency
Host request:
|
| Sonde result:
|
0x66
| 0x02
| 0xFR 0xFR
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Frequency
| ChkSum
|
| Result
|
- Sets transmitter frequency in EEPROM. Value is in 10KHz steps from 400MHz for 400MHz radiosondes. Allowed range is 400-406MHz.
0x69 - Read bytes from EEPROM
Host request:
|
| Sonde result:
|
0x69
| 0x03
| 0xAD 0xDR
| 0xNN
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Address
| Length
| ChkSum
|
| Result
|
Sonde reply:
|
| Host ACK:
|
0x69
| [len]
| 0xXX...
| [chk]
|
| 0x06
|
Cmd
| DataLen
| Read bytes
| ChkSum
|
| ACK
|
- Can read up to 255 bytes at once from any valid address
0x83 - Write single EEPROM byte
Host request:
|
| Sonde result:
|
0x83
| 0x03
| 0xAD 0xDR
| 0xBY
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Address
| Byte
| ChkSum
|
| Result
|
0x65 - Get calibration data block
Host request:
|
| Sonde result:
|
0x65
| 0x02
| 0xBL
| 0xNN
| [chk]
|
| [ACK/ERROR]
|
Cmd
| DataLen
| Block nr.
| Length
| ChkSum
|
| Result
|
Sonde reply:
|
| Host ACK:
|
0x65
| [len]
| 0xXX...
| [chk]
|
| 0x06
|
Cmd
| DataLen
| Read bytes
| ChkSum
|
| ACK
|
- This command simply reads calibration block from EEPROM
0x90 - Get PTU measurements
Host request:
|
| Sonde result:
|
0x90
| 0x00
| 0x00
|
| [ACK/ERROR]
|
Cmd
| DataLen
| ChkSum
|
| Result
|
Sonde reply:
|
| Host ACK:
|
0x90
| 0x0C
| 0xTE 0xTE
| 0xTI 0xTI
| 0xH1 0xH1
| 0xH2 0xH2
| 0xPP 0xPP 0xPP 0xPP
| [chk]
|
| 0x06
|
Cmd
| DataLen
| Ext.Temp.
| Int.Temp.
| Humidity 1
| Humidity 2
| Pressure
| ChkSum
|
| ACK
|
- To get actual value: (x/100.0)-100.0
- This command reads fully calibrated values from PTU sensors, result is in °C for temperature, rel. % for humidity and hPa for pressure.