Onkyo / Integra / Pioneer Receiver
Onkyo, Integra, and late-model Pioneer AV receivers are controlled over eISCP — Onkyo's
network control protocol, in which each short ISCP text command (for example !1PWR01) is
wrapped in a 16-byte binary header and sent over TCP, by default on port 60128. This driver
talks to the receiver's main zone.
A receiver added with this driver does two things the moment it connects: it reads the receiver's live state (power, volume, input, and mute) every few seconds, and it lets you set the master volume. Power on/off, mute on/off, and input selection are not shipped as ready-made commands — the protocol codes for them are standard and well known, and you add them as a few command rows in a couple of minutes. That section is below, with the exact codes to paste in.
All three families that use eISCP share the same wire protocol, so this one driver covers them.
The display name in the device list is Onkyo / Integra / Pioneer Receiver. Some Pioneer Elite
models advertise eISCP but reject input (SLI) codes that work on the Onkyo siblings — if input
switching misbehaves on a Pioneer, confirm the codes against that model's service manual.
What's controlled
Out of the box, with no extra setup:
- Live status polling every 5 seconds — power state, master volume, selected input, and mute state are read back from the receiver and reflected in GEM.
- Master volume — set an absolute level; GEM converts it to the hex value eISCP expects.
After you add the command rows described under Adding power, mute, and input commands below:
- Power on / off (standby)
- Mute on / off (and a mute toggle)
- Input selection by eISCP input code
This driver covers the main zone only. Zone 2 / Zone 3 control is not exposed.
Prerequisites
- The receiver must be on the same LAN as GEM (wired Ethernet or Wi-Fi) and reachable.
- Network Standby must be enabled on the receiver. Without it, the unit closes its eISCP socket the instant it powers off, so GEM loses control after the first power-down. Enable it at Setup → Hardware → Power Management → Network Standby.
- Only one eISCP client at a time. The receiver accepts a single network-control session; the Onkyo Controller mobile app (or any other controller) will steal the connection from GEM. Close those apps once GEM is the controller.
Setup
- Give the receiver a static IP or a DHCP reservation so its address never moves.
- On the receiver, enable Network Standby (Setup → Hardware → Power Management → Network Standby).
- In GEM, open Devices, add a device, and choose the Onkyo / Integra / Pioneer Receiver driver.
- Set Receiver IP. eISCP Port defaults to
60128— leave it unless the unit was re-mapped. - Save. On connect, GEM begins polling power, volume, input, and mute every 5 seconds and reflects them on the device.
The Status Poll Interval (ms) field (default 5000) is on the device's advanced settings if
you need to slow the polling down.
This driver does not create a control zone of its own — it is a single, main-zone device. To get a room-level volume slider, link it to an AV zone, as below.
Adding power, mute, and input commands
The driver ships the volume setter and the four status queries. The power, mute, and input
setters are not pre-loaded, but eISCP makes them trivial to add. Open
Commands, select the command set GEM created for this receiver (it is named
after the driver), and add each row below — type the Name exactly as shown, paste the
Template, and for set_input add an argument named input.
| Name | Template | Args | What it does |
|---|---|---|---|
power_on | !1PWR01 | — | Power the main zone on. |
power_off | !1PWR00 | — | Put the main zone in standby. |
mute_on | !1AMT01 | — | Mute audio. |
mute_off | !1AMT00 | — | Unmute. |
mute_toggle | !1AMTTG | — | Native eISCP mute toggle (optional — see note). |
set_input | !1SLI[input] | input | Select an input by code (see the Input codes table below). |
You type the ISCP body only (the !1... text). GEM wraps it in the eISCP binary header and
appends the carriage return automatically — the same way the built-in volume command works.
A room mute button works without the mute_toggle row: when an AV zone's mute is toggled and
the receiver has mute_on and mute_off, GEM flips mute using the last-known mute state it
polled. Adding the native !1AMTTG row is optional and lets the receiver do the flip itself.
Linking to an AV zone
The receiver feeds volume and mute to an AV zone rather than appearing as its own controllable zone:
- Open AV Zones and edit (or create) the zone for the room the receiver serves.
- Set the Volume Device field to this Onkyo receiver.
- Save. From then on the zone's volume control drives the receiver, and whenever the receiver reports a new volume or mute state on its 5-second poll, GEM mirrors it onto that zone's slider and mute indicator.
Volume is sent as a raw receiver step: a slider value of 50 becomes eISCP step 50 (hex 32).
The receiver's own maximum applies — if a model caps at step 80, sliding past it just clamps at
the receiver. If volume readings look doubled or oddly high, the unit is likely in the half-step
0–200 volume mode; switch it at Setup → Audio Adjust → Volume Setup.
Powering on and switching inputs from a source change
Picking an input is a device command, not an AV source change — choosing a room's source on a touchpanel does not, by itself, retune the receiver. To make a source selection power the receiver on and switch it to the right input, wire those commands into the source's on-macro:
- Add the
power_onandset_inputcommand rows above if you have not already. - Open AV Sources and edit the source for that room.
- In the source's on-macro, add steps that send
power_onto the receiver andset_inputwith theinputcode for the physical connection that source is wired to (for example, a cable box on HDMI labeled CBL/SAT → input code01).
From then on, selecting that source powers the receiver and switches its input in one action.
Input codes
The set_input command's input argument is an eISCP SLI code — a two-character code that
identifies a physical input. The common, stable codes are below. Codes vary by model and
generation, so confirm against your receiver's eISCP/service documentation; a rejected code
leaves the input unchanged.
| Code | Typical input |
|---|---|
00 | STB / DVR (VIDEO1) |
01 | CBL / SAT (VIDEO2) |
02 | GAME (VIDEO3) |
03 | AUX (VIDEO4) |
05 | PC (VIDEO6) |
10 | BD / DVD |
11 | Streaming Box |
12 | TV |
22 | PHONO |
23 | CD |
24 | FM |
25 | AM |
26 | TUNER |
2B | NETWORK |
2E | Bluetooth |
To discover the exact code your receiver uses for an input, select that input on the unit's own
remote and watch the device log: the receiver emits an !1SLI<code> reply, and that <code> is
what you pass to set_input.
Attributes
Device — required
| Attribute | Type | Description |
|---|---|---|
ip | string | Receiver LAN IP. |
Device — optional
| Attribute | Type | Default | Description |
|---|---|---|---|
port | int | 60128 | eISCP port. |
status_interval | int | 5000 | Status poll interval, in milliseconds. |
As the receiver reports its state, the driver auto-populates these read-only state attributes on the device — they reflect what the unit is doing, they are not values you set by hand:
| Attribute | Type | Meaning |
|---|---|---|
power_state | string | on / off, from !1PWR. |
volume | int | Current master volume step, from !1MVL. |
input | string | Current input code, from !1SLI. |
mute_state | string | on / off, from !1AMT. |
Commands
These ship with the driver:
| Command | Sends | Notes |
|---|---|---|
volume | !1MVL + level | Set master volume. Pass the level as the volume (or level) argument; GEM converts it to the hex pair the receiver expects. |
get_power | !1PWRQSTN | Query power state. |
get_volume | !1MVLQSTN | Query master volume. |
get_input | !1SLIQSTN | Query selected input. |
get_mute | !1AMTQSTN | Query mute state. |
The four get_* queries are what the 5-second status poll runs; you do not normally call them by
hand. The power, mute, and input setters are the rows you add under Adding power, mute, and
input commands above.
Troubleshooting
| Symptom | Check |
|---|---|
| No response when the receiver is off | Enable Network Standby (Setup → Hardware → Power Management → Network Standby). Without it the eISCP socket closes in standby and GEM cannot wake the unit. |
| Connection drops at random | Disconnect the Onkyo Controller mobile app (and any other controller). The receiver allows only one eISCP client at a time. |
| Volume changes report odd or doubled values | The receiver is likely in the 0–200 half-step volume mode — switch it at Setup → Audio Adjust → Volume Setup. |
| Power / mute / input buttons do nothing | Those setters are not shipped — add the power_on, power_off, mute_on, mute_off, and set_input rows from the table above. |
| An input pick is rejected | Input codes differ by model. Select the input on the receiver, watch the !1SLI<code> reply in the device log, and use that code. |
| Nothing connects at all | A generic TCP terminal cannot drive this protocol — eISCP needs the 16-byte binary header GEM adds, so test only through GEM. Confirm IP, that port 60128 is reachable, and that the receiver is on the same LAN. |
See also
- AV Zones — set this receiver as a zone's Volume Device.
- AV Sources — where a source's on-macro powers the receiver and switches its input.
- Commands — adding the power, mute, and input command rows.
- Denon Receiver and Marantz Receiver — other network AV receivers that ship a full command set out of the box.