YSI (Xylem) · Water quality sensor
ODO RTU optical dissolved oxygen and temperature sensor Modbus register map
Default configuration
- Protocol
- RS485
- Port
- 502
- Unit ID
- 1
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- High word first
- Baud rate
- 9600
- Parity
- Even
- Data bits
- 8
- Stop bits
- 1
This device has an RS-485 interface. Reach it through a Modbus RTU-to-TCP gateway, configured with the factory serial settings above.
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 0 | 2 | ODO saturation 32-bit IEEE-754 float, big-endian. | Float32 | % | 1 | R |
| 2 | 2 | ODO concentration Dissolved oxygen in mg/L. | Float32 | mg/L | 1 | R |
| 4 | 2 | ODO, local barometer compensated Saturation compensated with the local barometric pressure. | Float32 | % | 1 | R |
| 6 | 2 | Temperature Water temperature. | Float32 | °C | 1 | R |
| 8 | 2 | Reference temperature Reference temperature used for the conductivity compensation. | Float32 | °C | 1 | R |
| 10 | 2 | Time since boot Uptime counter in milliseconds. | UInt32 | ms | 1 | R |
| 12 | 2 | Conductivity Only available on the ODO/CT submodel; an ODO/T device returns NaN (0xFFFFFFFF). | Float32 | µS/cm | 1 | R |
| 14 | 2 | Specific conductivity Only available on the ODO/CT submodel. | Float32 | µS/cm | 1 | R |
| 16 | 2 | Salinity Only available on the ODO/CT submodel. | Float32 | ppt | 1 | R |
| 18 | 2 | Conductivity, natural water (nLF) Non-linear function compensation to EN 27888. Only available on the ODO/CT submodel. | Float32 | µS/cm | 1 | R |
| 20 | 2 | Total dissolved solids Only available on the ODO/CT submodel. | Float32 | mg/L | 1 | R |
Read this device live with Modbus Connect, free for Windows, macOS and Linux
Related guides
Notes
Source: YSI 'ODO RTU User Manual - Optical dissolved oxygen & temperature sensor', item 627379-01, revision B, vendor-hosted PDF at the URL above (opened 7 Nov 2026): section 5.1 Modbus serial configuration, 5.2 device information, 5.3 data, 5.4 calibration, 5.7 Appendix A register mapping tables. Factory serial settings from section 5.1: 9600 baud, slave address 0x01, even parity, one stop bit, big-endian byte order; the address register (0x0000) and the combined baud/parity register (0x0001) are included so the bus can be reconfigured. Addressing: the appendix numbers the 16 values of the measurement block consecutively (0x0000 ODO saturation, 0x0001 ODO mg/L, ... 0x000A TDS) even though every one of them is a two-register 32-bit value; section 5.3 states that a read must start at an even (or zero) register address and cover an even number of registers, and the worked read (function code 0x04, start 0x0000, 32 registers, 64 bytes returned) answers with exactly those 16 values in table order, so value N starts at wire register 2*N. The seed stores those wire addresses (0, 2, 4, ... 20) and declares zero_based. All measured values are 32-bit IEEE-754 floats, big-endian, and must be read in whole 2-register pairs starting at an even address; unavailable values (for example conductivity on an ODO/T) return NaN (0xFFFFFFFF). Conductivity, specific conductivity, salinity, conductivity nLF and TDS exist only on the ODO/CT submodel, which is what the seed's notes and row descriptions say. Left out on purpose: the ODO cap coefficient block (0x0100-0x0110) and the calibration-write blocks (0x0220 zero, 0x0230 percent, 0x0240 mg/L), which are write-only calibration plumbing whose time/value pairs the document itself describes as user-maintained; the register list keeps the readable calibration timestamp and QC score (0x0210-0x0212).