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_receiverdriver 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_volumeattribute) - 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_offsilently 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
- Assign the receiver a static IP or a DHCP reservation.
- On the receiver:
Setup → Network Setup → Network Standby → On. Save and reboot the receiver if prompted. - In GEM, add a device with driver
pioneer_vsxand set theipattribute. 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). - On connect, the driver issues
?P,?V,?M,?Fto seed the cached state and then polls at thestatus_intervalcadence.
Attributes
Device — required
| Attribute | Type | Description |
|---|---|---|
ip | string | Receiver LAN IP. |
Device — optional
| Attribute | Type | Default | Description |
|---|---|---|---|
port | int | 23 | Telnet port (23 on most VSX / Elite, 8102 on a handful of custom-install Elite SC units). |
status_interval | int | 25000 | Status poll interval in milliseconds. |
max_volume | int | 161 | Highest 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 (000 … 185). 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 of100puts the receiver at the 0 dB reference. Most VSX/Elite units treat 161 as 0 dB and 185 as +12 dB.max_volume = 185lets a GEM value of100drive 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.
0151forNeo:6 Cinema). - No tuner-band / preset control. The TFI / TFD / TPI / TPD /
ttPRcommands 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
| Symptom | Check |
|---|---|
| No response from receiver | Verify 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 dropping | Close the Pioneer ControlApp on phones / tablets and any other Telnet controller. The receiver accepts a single concurrent client. |
| Mute state shows backwards | Confirm 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 max | Raise 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 log | These 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 23 | A 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.