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
- Configure the serial-to-IP gateway with the settings above. Confirm it is in raw / transparent mode.
- Note the gateway IP and TCP port. Common defaults:
- Brainboxes / USR-IOT —
5000 - Global Cache GC-100 —
4999 - MOXA NPort —
4001
- Brainboxes / USR-IOT —
- In GEM, add a new device:
- Driver:
russound_rnet - IP: gateway IP
- Port: gateway TCP port
- Controller ID:
1(use2-6only if you have chained CAMs)
- Driver:
- Create one GEM zone per amplifier output, with address
controller.zone:- CAV6.6 / CAA66 / MCA-66 → addresses
1.1through1.6 - MCA-88 → addresses
1.1through1.8 - Chained second CAM zone 1 →
2.1, etc.
- CAV6.6 / CAA66 / MCA-66 → addresses
- From the Script Console, run
get_zone_statuson a zone — you should seestate,volume, andsourcepopulate within a couple of seconds.
Attribute reference
Device attributes
| Name | Required | Default | Description |
|---|---|---|---|
ip | yes | — | IP of the serial-to-IP gateway in front of the amp. |
port | no | 5000 | TCP port the gateway exposes. 4999 for GC-100, 4001 for MOXA, varies for others. |
controller_id | no | 1 | Chain position (1-6). Use 1 unless you have chained CAMs sharing one gateway. |
status_interval | no | 60000 | Periodic resync in milliseconds. Recovers from any missed broadcast frames. |
command_throttle | no | 200 | Minimum 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.61.8— last zone of an MCA-882.3— zone 3 of a chained second amplifier
Zone state is surfaced as:
state—on/offvolume—0-100(RNET wire scale is 0-50; the driver doubles for slider parity with other GEM drivers)mute_state—on/offsource—1-8(absolute source index, matches the input wiring on the amp)
Commands
| Command | Args | Notes |
|---|---|---|
on | address | Power the zone on. |
off | address | Power the zone off. |
set_volume | address, level | Volume 0-100, scaled to RNET 0-50 internally. |
volume_up | address | Step volume up by one RNET unit. |
volume_down | address | Step volume down by one RNET unit. |
mute_on | address | Definitive mute on (separate from setting volume to 0). |
mute_off | address | Definitive mute off. |
mute_toggle | address | Flips based on the last broadcast mute_state; defaults to on if state unknown. |
set_source | address, source | Source index 1-8. The label/name is configured on the amplifier itself. |
set_bass | address, level | Tone control, -10..+10. |
set_treble | address, level | Tone control, -10..+10. |
all_on | — | All zones on (broadcast event). |
all_off | — | All zones off (broadcast event). |
get_zone_status | address | Request power / volume / source for one zone. Results arrive as broadcast frames within ~200 ms. |
get_zones | — | Request 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
0x70to 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_idvalues. Add one GEM device row per chained controller, all pointing at the sameip/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_volumelands 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_throttleto300-500ms on older CAV firmware. RNET head units drop frames under flood. - Second amp not reachable — set
controller_idon 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
0xF0won't decode.