Skip to main content

Pioneer VSX / Elite Receiver

Pioneer VSX-, SC- and Elite-branded AV receivers controlled over the legacy ASCII Telnet protocol that has shipped on field-installed Pioneer receivers since the early HDMI era. The protocol is the long-lived "?P / PO / PF / MV / FN" command set documented in the publicly distributed Pioneer "IP & RS-232 Control" reference PDFs and is still present on most Pioneer receivers in service today.

If the receiver was sold after the Onkyo / Pioneer Home Entertainment merger it most likely speaks the eISCP protocol on port 60128 instead. Use the existing onkyo_receiver driver for those — it covers Onkyo, Integra, and late-model Pioneer in one entry.

What's controlled

  • Main-zone power on / off / toggle (PO / PF / PZ)
  • Master volume — absolute, up, down — auto-scaled from a 0-100 GEM slider to the Pioneer 000-185 volume code (capped against the device max_volume attribute)
  • Mute on / off / toggle (MO / MF / MZ) — Pioneer's inverted polarity (MUT0 = muted, MUT1 = unmuted) is translated inside the driver so UI state reads correctly
  • Input selection (FN) by friendly label or raw 2-digit code, with the most common residential inputs pre-populated in the picker (HDMI 1-7, BD, TV, GAME, CD, TUNER, USB, Internet Radio, Pandora, Spotify, Bluetooth, etc.)
  • Input cycling (FU / FD)
  • Listening / surround mode selection — small curated subset (STEREO, AUTO_SURROUND, DIRECT, PURE_DIRECT, EXTENDED_STEREO); raw 4-digit codes also accepted
  • Status polling every 25 s for power / volume / mute / input

Prerequisites

  • A Pioneer VSX, SC, or Elite receiver with a wired or Wi-Fi network connection on the same LAN as GEM.
  • Network Standby enabled (Setup → Network Setup → Network Standby → On). Without this, the Telnet socket closes the moment the receiver enters standby, and the first power_off silently severs control.
  • No other Telnet controller on the same unit. Pioneer receivers accept exactly one concurrent Telnet client — close the Pioneer ControlApp / iControlAV mobile app and any other dashboard while integrating, or that controller will steal the socket.

Setup

  1. Assign the receiver a static IP or a DHCP reservation.
  2. On the receiver: Setup → Network Setup → Network Standby → On. Save and reboot the receiver if prompted.
  3. In GEM, add a device with driver pioneer_vsx and set the ip attribute. Port 23 is the default; switch to 8102 only if your model is a custom-install Elite SC-series unit that advertises the alternate port (most residential VSX and Elite VSX-LX models stay on 23).
  4. On connect, the driver issues ?P, ?V, ?M, ?F to seed the cached state and then polls at the status_interval cadence.

Attributes

Device — required

AttributeTypeDescription
ipstringReceiver LAN IP.

Device — optional

AttributeTypeDefaultDescription
portint23Telnet port (23 on most VSX / Elite, 8102 on a handful of custom-install Elite SC units).
status_intervalint25000Status poll interval in milliseconds.
max_volumeint161Highest legal Pioneer volume code. 161 = 0 dB reference on older receivers; raise to 185 to unlock +12 dB headroom on receivers that support it.

The driver also auto-populates power_state, volume, volume_raw, mute_state, input, input_code, and listening_mode as state attributes on the device whenever the receiver reports them.

Zone address format

This driver represents one receiver's main zone. There are no per-zone GEM zones — link the device to an AV zone via av_zone.volume_device_id so the zone's volume slider, mute, and input picker drive the receiver. Zone 2 / Zone 3 control on the wire is a known limitation (see below).

Volume scaling

Pioneer expresses volume as a 3-digit code (000185). The driver maps the GEM 0-100 percent slider to that range via the device's max_volume attribute:

  • max_volume = 161 (default) means a GEM value of 100 puts the receiver at the 0 dB reference. Most VSX/Elite units treat 161 as 0 dB and 185 as +12 dB.
  • max_volume = 185 lets a GEM value of 100 drive the receiver all the way to +12 dB. Pick this only on a unit that documents +12 dB headroom — older models cap at 161 and silently ignore higher codes.

If you need to send a raw Pioneer volume code (bypassing the GEM 0-100 scale) the set_volume_raw command accepts the integer directly and is clamped to 0-185.

Known limitations

  • Main zone only. Zone 2 (APO / APF / ZV / ZS) and Zone 3 (BPO / BPF / YV / ZT) commands are not yet exposed. Multi-zone Pioneer receivers will still answer the full protocol; the GEM command map is intentionally scoped to the main zone in this revision. Add this as a follow-up if a project needs zone 2 / 3 control.
  • Listening-mode set is curated. The Pioneer listening-mode table runs to ~80 entries by model and varies firmware to firmware. The driver exposes the five most-used modes by name; pass a raw 4-digit code if you need anything outside that set (e.g. 0151 for Neo:6 Cinema).
  • No tuner-band / preset control. The TFI / TFD / TPI / TPD / ttPR commands that move the built-in tuner around are not exposed. Pioneer receivers are almost always integrated for streaming sources today; the tuner surface can be added if a project asks for it.
  • One Telnet client at a time. Hardware limitation. The Pioneer ControlApp and other network controllers will lock GEM out.

Troubleshooting

SymptomCheck
No response from receiverVerify Network Standby is enabled on the receiver. Factory-reset units default this off, which closes Telnet in standby and breaks the first power_off.
Commands work intermittently / connection keeps droppingClose the Pioneer ControlApp on phones / tablets and any other Telnet controller. The receiver accepts a single concurrent client.
Mute state shows backwardsConfirm you are on this driver build. Pioneer's wire format inverts polarity — MUT0 = muted, MUT1 = unmuted — and the driver translates it. Older custom drivers and raw protocol tools will report the opposite.
Volume slider hits max far below the receiver's hardware maxRaise max_volume to 185 on units that support +12 dB headroom. The default of 161 keeps the slider mapped to 0 dB reference, which is the safest choice on unknown models.
E04 / E06 in the device logThese are Pioneer "command error" and "parameter error" replies — the driver logs and ignores them. Usually means the input code or listening-mode code does not exist on your specific model. Pick a different input or, for listening modes, consult the Pioneer reference PDF for your model's supported codes.
Custom-install Elite refuses port 23A handful of Elite SC-series custom-install units use port 8102. Change the port attribute on the device and reconnect.

See also

  • onkyo_receiver — eISCP protocol. Use for Onkyo, Integra, and late-model Pioneer receivers sold after the Onkyo / Pioneer Home Entertainment merger. The Pioneer driver in this page targets the legacy ASCII protocol; the two are not interchangeable.
  • denon_receiver, marantz_receiver — same role (residential AV receiver Telnet control) for the Sound United / Denon-Marantz product lines.