Skip to main content

Rotel Receiver / Integrated Amp

Control any Rotel unit that speaks Rotel's ASCII IP protocol on TCP port 9590. That covers:

  • Integrated amps — RA-11, RA-12, RA-1520, RA-1570, RA-1572, RA-1592
  • Preamps — RC-1550, RC-1570, RC-1580, RC-1590
  • Surround processors / AVRs — RSP-1570, RSP-1572, RSP-1582, RSX-1550, RSX-1560, RSX-1562, RSX-1580, RSX-1582, RAP-1580
  • Amplifiers with feedback — RB-1590 (limited command surface)

The driver handles power, volume (absolute + up / down), mute, source selection, bass / treble tone, dimmer, and consumes the receiver's spontaneous feedback events so cached state stays in sync with front-panel changes.

Prerequisites

  • Network Standby enabled on the receiver (also labeled "Standby Mode → Normal" on some models). Without it the Ethernet port powers off with the unit, and the socket refuses connections until you power on manually.
  • Static IP or DHCP reservation on the receiver. The IP is available under Menu → Setup → Network on most models.
  • Model supports Rotel IP protocol. All units listed above ship with it on TCP 9590. Older 105x-series RSX processors sometimes ship on a different port; verify from the model's manual.

Setup steps

  1. On the receiver: enable Network Standby (menu path varies — usually Setup → Power → Standby → Normal or Setup → Network → Standby → On).
  2. Note the receiver's IP address.
  3. In GEM: Admin → Devices → Add Device.
  4. Choose driver rotel_receiver.
  5. Fill in:
    • Receiver IP — the LAN IP you noted.
    • TCP Port — leave at 9590 unless the model manual says otherwise.
    • Native Volume Max — 96 for integrated amps and preamps (RA / RC-15xx), 100 for surround processors (RSP / RSX). The driver also auto-detects on the first volume= response, so a wrong initial guess self-corrects.
  6. Save. Within a few seconds the device should show connected and populate model_name, power_state, input, volume, and mute_state.

Attribute reference

Required

AttributeTypeDescription
ipstringLAN IP of the receiver.

Optional (connection & tuning)

AttributeTypeDefaultDescription
portint9590TCP port.
volume_maxint96Wire-format volume ceiling. 96 for integrated amps / preamps (RA / RC-15xx), 100 for surround processors (RSP / RSX). Auto-detected from the first volume= response.
status_intervalint30000Milliseconds between status polls. The receiver also pushes spontaneous updates via ip_update_on, so polling is a safety net.

Diagnostic (populated by the driver)

AttributeTypeDescription
model_namestringAuto-populated from the get_model query on connect.
power_statestringon / off — reflects the receiver's own report.
inputstringCurrently-selected input, lower-case (e.g. cd, hdmi, bluetooth).
volumeintGEM's 0-100 volume, scaled from the wire-format value.
mute_statestringon / off.
bassint-10 .. +10.
trebleint-10 .. +10.

Zone address

Not used. Each device row is a single Rotel main zone. If you want an AV zone to inherit this receiver's volume + mute, set volume_device_id on the AV zone to the device id — the driver fans mute / volume changes automatically.

Commands

Power: power_on, power_off, power_toggle, get_power.

Audio: volume (0-100 slider — scaled to the receiver's native 0-96 or 0-100 range), volume_up, volume_down, mute_on, mute_off, mute_toggle, get_volume, get_mute.

Source: set_input (with input arg — cd, tuner, phono, aux1, aux2, coax1, coax2, opt1, opt2, usb, pc_usb, iradio, network, bluetooth, dvd, blu-ray, video1video6, multi, xlr), plus get_input.

Tone: bass / treble (level -10..+10), bass_up, bass_down, treble_up, treble_down.

Display: dimmer (0-5).

Diagnostics: get_model.

Known limitations

  • Input list is a superset. Not every model supports every input — a two-channel RA-12 has no video1. Sending an unsupported input results in a silent no-op from the receiver.
  • Legacy models with ! response terminator. The pre-2010 RSX-105x / RSX-106x family terminates responses with ! instead of $. The driver splits on both characters so either variant parses cleanly.
  • Spontaneous updates require arming. After connect the driver sends both ip_update_on! (modern firmware) and rs232_update_on! (legacy). If neither is understood, GEM still gets state from the 30 s status poll — just with lag.
  • RB-1590 amplifier has a much smaller command surface (essentially power + protection status). It works with this driver but most audio commands will no-op.
  • Volume max latch. The driver only ever grows volume_max (from 96 to 100) when it sees a wire value above the current max. If a preamp is mis-classified as 100-max on first sync, drop volume_max to 96 manually — the driver will not shrink it on its own.

Troubleshooting

Cannot connect / connection refused. Network Standby is off. Enable it under Setup → Power → Standby → Normal (or the model's equivalent). Without it, the Ethernet interface powers down when the receiver is off.

Commands work but no state updates come in. Older firmware doesn't recognize ip_update_on! — spontaneous feedback stays off. The driver's poll every 30 s keeps state fresh, just with lag. Consider updating firmware from Rotel's support site if lag matters.

Volume slider snaps to 100 % after every command. volume_max latched to the wrong value. Manually set it to 96 for RA / RC integrated amps and preamps, or 100 for RSP / RSX surround processors.

Input names come back with unexpected casing. The receiver's response case varies by firmware. The driver stores everything lower-cased. If downstream widgets show inconsistent case, ensure they're reading from device.input rather than the raw response.

Multiple concurrent connections locked out. Some Rotel firmware caps the number of concurrent IP control clients at 1. Close any other Rotel app / control system before diagnosing.