Skip to main content

Russound RNET (Legacy)

Driver: russound_rnet

Multi-zone audio control for the legacy Russound binary RNET protocol — used by the CAV6.6, CAA66, ZONE4, ZP4 systems and pre-RIO-firmware MCA-66 / MCA-88 amplifiers. Reaches the amplifier over TCP through a serial-to-IP gateway.

For modern Russound MCA amplifiers running RIO firmware, use russound_rio instead. RIO is text-based, supports event subscriptions, and is the recommended path on any MCA from the last decade. RNET is the right driver only when the amp pre-dates RIO firmware or when the install is on the older CAV / CAA / ZONE-series hardware.

Prerequisites

  • A Russound CAV6.6, CAA66, MCA-66 (pre-RIO), MCA-88 (pre-RIO), ZONE4 or compatible RNET head unit with its RS-232 port wired through.
  • A serial-to-IP gateway in front of the amp's RS-232 port. Common choices:
    • Brainboxes ES-279, ES-413, ES-842
    • Global Cache GC-100 (use the serial port, not IR)
    • USR-IOT W630, W610
    • MOXA NPort 5110 / 5130
  • Gateway configured for 19200 baud, 8 data, no parity, 1 stop, no flow control, raw TCP / transparent mode (NOT telnet mode — telnet adds escape sequences that corrupt the binary frames).
  • A straight-through DB9 serial cable to the Russound CAM RS232 port. Confirm pinout against the specific model's installation guide — some models need a null-modem.

Setup steps

  1. Configure the serial-to-IP gateway with the settings above. Confirm it is in raw / transparent mode.
  2. Note the gateway IP and TCP port. Common defaults:
    • Brainboxes / USR-IOT — 5000
    • Global Cache GC-100 — 4999
    • MOXA NPort — 4001
  3. In GEM, add a new device:
    • Driver: russound_rnet
    • IP: gateway IP
    • Port: gateway TCP port
    • Controller ID: 1 (use 2-6 only if you have chained CAMs)
  4. Create one GEM zone per amplifier output, with address controller.zone:
    • CAV6.6 / CAA66 / MCA-66 → addresses 1.1 through 1.6
    • MCA-88 → addresses 1.1 through 1.8
    • Chained second CAM zone 1 → 2.1, etc.
  5. From the Script Console, run get_zone_status on a zone — you should see state, volume, and source populate within a couple of seconds.

Attribute reference

Device attributes

NameRequiredDefaultDescription
ipyesIP of the serial-to-IP gateway in front of the amp.
portno5000TCP port the gateway exposes. 4999 for GC-100, 4001 for MOXA, varies for others.
controller_idno1Chain position (1-6). Use 1 unless you have chained CAMs sharing one gateway.
status_intervalno60000Periodic resync in milliseconds. Recovers from any missed broadcast frames.
command_throttleno200Minimum spacing between outbound frames. Raise to 300-500 on older CAV firmware.

Zone

Address format: controller.zone, both 1-based. Examples:

  • 1.1 — controller 1, zone 1 (most common)
  • 1.6 — last zone of a CAV6.6
  • 1.8 — last zone of an MCA-88
  • 2.3 — zone 3 of a chained second amplifier

Zone state is surfaced as:

  • stateon / off
  • volume0-100 (RNET wire scale is 0-50; the driver doubles for slider parity with other GEM drivers)
  • mute_stateon / off
  • source1-8 (absolute source index, matches the input wiring on the amp)

Commands

CommandArgsNotes
onaddressPower the zone on.
offaddressPower the zone off.
set_volumeaddress, levelVolume 0-100, scaled to RNET 0-50 internally.
volume_upaddressStep volume up by one RNET unit.
volume_downaddressStep volume down by one RNET unit.
mute_onaddressDefinitive mute on (separate from setting volume to 0).
mute_offaddressDefinitive mute off.
mute_toggleaddressFlips based on the last broadcast mute_state; defaults to on if state unknown.
set_sourceaddress, sourceSource index 1-8. The label/name is configured on the amplifier itself.
set_bassaddress, levelTone control, -10..+10.
set_trebleaddress, levelTone control, -10..+10.
all_onAll zones on (broadcast event).
all_offAll zones off (broadcast event).
get_zone_statusaddressRequest power / volume / source for one zone. Results arrive as broadcast frames within ~200 ms.
get_zonesRequest status for every zone 1-8 on this controller. Useful at first install.

Known limitations

  • RNET is broadcast-style — the controller sends a status frame to every paired keypad after a state change. GEM tags itself as keypad 0x70 to receive those broadcasts, but missed frames are normal under heavy traffic. The status polling loop catches up at the configured interval.
  • Source names / labels are not exposed by RNET. The driver works in absolute source indices (1-8); friendly labels are configured on the amp itself.
  • Keypad LCD text and bass / treble / balance / loudness reads are parsed at frame level but not currently surfaced as GEM attributes. They can be added if there is integrator demand.
  • Only one TCP client can hold the gateway socket at a time. Close any third-party tools (RNETTool, manufacturer setup utility) before connecting GEM.
  • Chained controllers share the same gateway socket but use different controller_id values. Add one GEM device row per chained controller, all pointing at the same ip / port.

Troubleshooting

  • Connect succeeds but no events arrive — verify the gateway is in transparent raw TCP mode, not telnet. Inspect the gateway diagnostics page; the RX byte count should climb within a second of sending any command.
  • set_volume lands at half the requested level — a caller is passing the RNET 0-50 range; the driver auto-scales from GEM 0-100, so pass the raw 0-100 value.
  • Commands ignored intermittently — raise command_throttle to 300-500 ms on older CAV firmware. RNET head units drop frames under flood.
  • Second amp not reachable — set controller_id on a separate GEM device row pointing at the same gateway IP and port. The chained CAMs share the RS-232 bus.
  • No response, no errors — confirm the gateway baud rate (19200) and 8N1 framing. A mis-set baud rate produces silent failure on RNET because the frame start byte 0xF0 won't decode.