RHEOS independent control of AVR Zone 2

I am a very satisfied user of the RHEOS extension by @peter_richardson. I have a Denon AVR X3500H and 3 HEOS controlled speakers - Denon Home 250, Denon HEOS 3 HS2, and Denon HEOS 7. RHEOS handles them very nicely and integrates almost all the functionality of the HEOS app into Roon, which is a big plus for me. Allows me to enjoy Roon on my main audio playback option without replacing a lot of equipment. Kudos to Peter!

When I say “almost all the functionality” what I’m referring to is that the two zones in the AVR are treated by RHEOS as a single player instead of two, as the HEOS app allows. In my home, the Main Zone is usually assigned to playing audio for the home theater and Zone 2 is assigned to the ceiling speakers in the kitchen. I can sync them for music playback and independently control volume via the HEOS or Denon apps on my phone. RHEOS can play to both AVR’s zones as well, but it is not able to see the zones separately or control the volume on each independently.

I can override what source each zone is using and the volume using the Denon app or remote, but this adds undesirable complexity for the rest of the family. In convo with Peter it seems the Denon API does not expose the AVR’s zones as separate entities. I’m hoping either Denon upgrades their API or Peter finds a workaround.

But in the meantime, I’m a pretty happy customer.


Thanks for the positive feedback.

If others are interested in adding zone control I have a couple of ideas and will see if I can get into the next couple of releases.

At present working on fixed groups and volume control for all outputs in the group (zone) at the same time - as the HEOS app presently provides.


I have the same problem with the Denon AVR 8500 and it would be wonderful if the zones could work independent.
Thanks a lot for the tool!

1 Like
1 Like


I am now at a point where I am pretty happy with the Zone 2 control (much improved over the initial 7.1 version) and will be releasing a new version, initially as a test image but hopefully in the near future as the default latest version in extension manager.

I re-read your post and wanted to clarify if you are looking at controlling zone 2 via the roon/rheos interface with a different source than HEOS playing. That’s not been on my design path , but you have me thinking about what’s next. I’m just not sure what the use scenario would be - controlling play/pause and volume of Zone 2 when paying a CD or similar? Could you let me know the specific use case?

My usual situation is to use HEOS almost exclusively on Zone 2, which is connected to wired ceiling speakers. Zone 1 is connected to wired home theater speakers and alternate between Roku, a blu-ray player, and HEOS. All my CDs are ripped to a file server and controlled by Roon. When both zones are set to HEOS I am almost always wanting to group them.

I am eagerly awaiting the new version. I have been busy with other things the last few months, but have been monitoring the discussions here. Really appreciate all you’ve done on RHEOS.

1 Like

I deployed 8.1 test today. I don’t think I’m seeing intended behavior. Attached images show my settings for your review. I can’t control the AVR at all. Also don’t see the zones as separate devices.

I have a Denon X3500H AVR and 3 wireless HEOS speakers named Denon Black, Small White, and Large White. I had grouped the AVR and Denon Black before taking some of these screenshots.

Here’s the log upon restarting RHEOS with the settings as shown:,Linux,DietPi,linux,x64 Version : 0.8.1-1




│ (index) │ name │ pid │ model │ ip │ resolution │ network │


│ 0 │ ‘Tupelo Denon AVR’ │ 363622401 │ ‘Denon AVR-X3500H’ │ ‘’ │ ‘CD’ │ ‘wired’ │

│ 1 │ ‘Denon Black’ │ 469210619 │ ‘Denon Home 250’ │ ‘’ │ ‘CD’ │ ‘wifi’ │

│ 2 │ ‘HEOS Small White’ │ -326588549 │ ‘HEOS 3’ │ ‘’ │ ‘CD’ │ ‘wifi’ │

│ 3 │ 'HEOS Large White ’ │ 1572672421 │ ‘HEOS 7’ │ ‘’ │ ‘CD’ │ ‘wifi’ │













					group?.gid && await update_group_volume(op,group,old_op?.volume?.value !== op.volume.value,old_op?.volume.is_muted !== op.volume.is_muted)


TypeError: Cannot read properties of undefined (reading ‘value’)

at file:///home/node/app.mjs:823:92

at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Node.js v19.9.0

1 Like

Thanks Mark.

I’ll investigate what happens when the AVR is grouped with a speaker on start up.

Might be worth starting with everything un grouped to get a better picture. Could you try with both the Denon zones turned on (use the HEOS app to sets and see if Main Zone and Zone 2 then appears) You can also try to attach the source control to the main avr and switch on from there. They should then become become visible in the audio settings. I probably need to make this clearer in the instructions.

With my zones cached by ROON I don’t have good visibility on the behavior on initially creating the virtual zones.

Thanks so much for testing.

On a second go-round of testing I played with initial setup more or less as you suggested and I got much more consistent and logical (to me, anyway) behavior.

There are some possible issues with turning on zones and switching the input source to HEOS that seems to work some times and not others. For example, if Zone 2 is actively playing HEOS and I turn on the Main Zone using the AVR remote, it often gets turned off again - presumably by RHEOS or Roon. It takes a few attempts or actually turning off both zones to seemingly reset things and allow me to turn on both zones and have them both use HEOS.

Also, the example you gave of muting both zones by muting the parent AVR in the volume control doesn’t work for me. In fact the illustration you provided did not show a volume slider at all for the parent - mine shows volume sliders for the parent and both zones and my parent’s mute button, while seemingly active, doesn’t actually control anything.

I am not clear on all the intended behaviors - I assume it’s intentional to have the zones appear dynamically when turned on at the AVR in the parent AVR device’s “group” and to disappear altogether from the Roon player if they are powered off or set to an input source other than HEOS. The Roon player is therefore not able to power on a zone or change its input source to HEOS. Probably the cleanest implementation, but not sure if that’s intended.

I haven’t played with fixed groups yet and really need to spend more testing time in a systematic way, but thought you might appreciate some feedback.

Thanks again Mark. Sounds like we are getting there - appreciate your persistence.

To remove the volume slider and enable the behavior for muting you need to relect the volume control as rheos xxx from the volume control drop down selection in the device setup :slight_smile:


I am still playing with the options for masking the virtual devices - will upload another version tonight to the test image.

I’m struggling with handling having one zone play from HEOS and another from a different source - which is what I think you have asked for. I need to get the logic to handle this but at present I don’t think it does what you are asking for - but will get there!



Thanks, Peter. I’ve been out of the loop for a several weeks. You have made great progress. Look forward to your continuing work on RHEOS

installed 8-1.3. Had to reset config and restart a couple of times to get a clean slate, but it works pretty well for all that. Switching MainZone from HEOS to MediaPlayer took it out of the Denon parent and left it as an independent device that could be accessed in Roon but not actually played.

Getting the MainZone back into the Denon AVR group was not easy. Switching MainZone to HEOS didn’t do it. In fact something kept powering off the MainZone every time I tried it. If I quickly powered on the MainZone and switched the source to something other than HEOS it would stay on. Only restarting the RHEOS container put things right eventually.

Volume controls worked well. Definitely getting there!

Switched MainZone source to MediaPlayer

Powered off Zone2

As always - thanks for the feedback. Work still needed - my goal is simplification. Let’s see if I can get there!!!

Version 0.8.2-0 now available as test.

Worked on stability and simplification of key code. Seems to be a further improvement - particularly in Zone control, two way volume and muting.

I am waiting to see if the occasional “network failure” will be fixed by a firmware refresh of my Marantz 6013. I noticed that the Marantz remote app also failed when this occurred and it seems there is a known bug.

Please report any failures or if the app appears to lock up. I see this occasionally when switching between controllers and moving around the house to different access points with my iphones - but hard to pin down.

Thanks for testing.


Posted testing results to other thread. Zone grouping is very stable. Volume control not:

When I ungrouped HEOS wireless speakers the volume control of two AVR zones was flawless. When I added one HEOS wireless speaker the volume control was not chaotic as before, but the mute button didn’t work at all on the HEOS speaker. The AVR mute and AVR zone mutes worked perfectly.


Will take another look at volume.