MBMap Registry
  1. Devices
  2. Waveshare
  3. Modbus RTU Relay

Waveshare Modbus RTU Relay Modbus register map

Also covers Modbus RTU Relay (8-ch)

8-channel relay module with Modbus RTU over RS485

  • Official
  • 21 registers
  • Modbus RTU
  • Revision 1 · 2026-10-18
  • Identity: firmware

Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.

Communication

Protocol
Modbus RTU
Unit ID
1
Serial
9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
Byte / word order
ABCD · bytes big-endian, words high first
Addresses
0-based

Connection values are defaults: the device may be configured differently.

Map

Registers
3 holding registers, 18 coils
Groups
4
Revision
1 · 2026-10-18
Added
()
File
maps/waveshare/modbus-rtu-relay.mbmap.json · 5 KB · history
SHA-256
d114c085396660ff1ac866e77c3d89f72e620cb777071521597c72ce700e313f
Manufacturer
waveshare.com

Device identity

What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.

Registers
RoleRegisterAddressTypeValues
Firmware Software version holding 32768 uint16

Sources and notes

Source: Waveshare wiki: Modbus RTU Relay, development protocol V3

  • Factory settings: slave address 1, 9600 baud, 8 data bits, no parity, 1 stop bit.
  • Relays 1 to 8 are coils 0 to 7 (function codes 01, 05 and 0F). Address 0x00FF switches every relay at once and 0x01FF toggles every relay; both are write-only.
  • The documentation lists the parity values in the UART parameter in two different orders (0x01 odd and 0x02 even in the command, the reverse in the reply); check on the device.
  • Flash commands (0x0200 to 0x0207 flash on, 0x0400 to 0x0407 flash off) are function 05 writes whose value field is the delay in units of 100 ms (0x0007 = 700 ms); they are not listed as registers.
  • Broadcast address 0 is accepted for writes.
AreaAddressNameTypeAccessUnitScaleDescription
CO 0 bool RW 1 = on, 0 = off
CO 1 bool RW 1 = on, 0 = off
CO 2 bool RW 1 = on, 0 = off
CO 3 bool RW 1 = on, 0 = off
CO 4 bool RW 1 = on, 0 = off
CO 5 bool RW 1 = on, 0 = off
CO 6 bool RW 1 = on, 0 = off
CO 7 bool RW 1 = on, 0 = off
CO 255 bool W Write-only (0x00FF): 1 turns every relay on, 0 turns every relay off
CO 256 bool W Write 1 to toggle the relay
CO 257 bool W Write 1 to toggle the relay
CO 258 bool W Write 1 to toggle the relay
CO 259 bool W Write 1 to toggle the relay
CO 260 bool W Write 1 to toggle the relay
CO 261 bool W Write 1 to toggle the relay
CO 262 bool W Write 1 to toggle the relay
CO 263 bool W Write 1 to toggle the relay
CO 511 bool W Write 1 to toggle every relay
HR 8192 uint16 RW High byte: parity (0 none, 1 even, 2 odd, see notes). Low byte: baud rate (0 4800, 1 9600, 2 19200, 3 38400, 4 57600, 5 115200, 6 128000, 7 256000)
HR 16384 uint16 RW Modbus slave address, 1 to 255
HR 32768 uint16 R ×0.01 100 = V1.00

Help improve this map