Roon Extension : RHEOS 2-way control & 192Hz/24bit Playback and Grouping on Denon/Marantz HEOS devices now in Extension Manager

I think discovery is a problem after all. I did a network reset on the amp, which changed its IP address. It doesn’t get found now, and if I remove that item in the “players” collection it doesn’t get replaced.

Presumably one of the dozens of things I’ve tried allowed discovery to work at least once but I’ve tried a bunch of them and no luck.

I’ve also tried installing Roon and the extension on my Steam Deck, which runs Arch Linux. Roon Server was easy enough but the extension was awkward as you can’t use Docker on the deck. I used Podman instead and the extension ran. Roon couldn’t see it unfortunately, but the output from the extension was the usual “Heos Connection failed” plus complaints about not being enabled in Roon.

I might try installing Fiddler2 on Windows to see if that gives any insight, I’ve used it before.

I’m still thinking the Orbi router might be to blame, but the Heos app and BubbleUPnP still work.

In case it’s useful BubbleUPnP gives a link to the AVR which returns a fair bit of info. The link is http://192.168.2.20:60006/upnp/desc/aios_device/aios_device.xml and the response is:

<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:DMH="http://www.dmglobal.com" xmlns:qq="http://www.tencent.com" xmlns:avega_media_server="urn:schemas-avegasystems-com:media-server:metadata-1-0:DIDL-Lite">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-denon-com:device:AiosDevice:1</deviceType>
<friendlyName>Marantz SR7012</friendlyName>
<manufacturer>Marantz</manufacturer>
<manufacturerURL>http://www.marantz.com</manufacturerURL>
<modelName>Marantz SR7012</modelName>
<modelNumber>Aios 4.025</modelNumber>
<serialNumber>AVH12171102390</serialNumber>
<UDN>uuid:c7a4446c-a19a-10ff-0080-0005cd9caa42</UDN>
<DMH:X_Audyssey>00000002</DMH:X_Audyssey>
<DMH:X_AudysseyPort>1256</DMH:X_AudysseyPort>
<DMH:X_WebAPIPort>8080</DMH:X_WebAPIPort>
<deviceList>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>Marantz SR7012</friendlyName>
<manufacturer>Marantz</manufacturer>
<manufacturerURL>http://www.marantz.com</manufacturerURL>
<modelName>Marantz SR7012</modelName>
<modelNumber>Aios 4.025</modelNumber>
<UDN>uuid:e7a5d0c5-10e4-12df-0080-0005cd9caa42</UDN>
<qq:X_QPlay_SoftwareCapability>QPlay:1</qq:X_QPlay_SoftwareCapability>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/upnp/scpd/renderer_dvc/AVTransport.xml</SCPDURL>
<controlURL>/upnp/control/renderer_dvc/AVTransport</controlURL>
<eventSubURL>/upnp/event/renderer_dvc/AVTransport</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/upnp/scpd/renderer_dvc/ConnectionManager.xml</SCPDURL>
<controlURL>/upnp/control/renderer_dvc/ConnectionManager</controlURL>
<eventSubURL>/upnp/event/renderer_dvc/ConnectionManager</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/upnp/scpd/renderer_dvc/RenderingControl.xml</SCPDURL>
<controlURL>/upnp/control/renderer_dvc/RenderingControl</controlURL>
<eventSubURL>/upnp/event/renderer_dvc/RenderingControl</eventSubURL>
</service>
</serviceList>
</device>
<device>
<deviceType>urn:schemas-denon-com:device:AiosServices:1</deviceType>
<friendlyName>AiosServices</friendlyName>
<manufacturer>Marantz</manufacturer>
<manufacturerURL>http://www.marantz.com</manufacturerURL>
<modelName>Marantz SR7012</modelName>
<modelNumber>Aios 4.025</modelNumber>
<UDN>uuid:1db1f7c8-e0a9-10ff-0080-0005cd9caa42</UDN>
<serviceList>
<service>
<serviceType>urn:schemas-denon-com:service:ErrorHandler:1</serviceType>
<serviceId>urn:denon-com:serviceId:ErrorHandler</serviceId>
<SCPDURL>/upnp/scpd/AiosServicesDvc/ErrorHandler.xml</SCPDURL>
<controlURL>/upnp/control/AiosServicesDvc/ErrorHandler</controlURL>
<eventSubURL>/upnp/event/AiosServicesDvc/ErrorHandler</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-denon-com:service:ZoneControl:2</serviceType>
<serviceId>urn:denon-com:serviceId:ZoneControl</serviceId>
<SCPDURL>/upnp/scpd/AiosServicesDvc/ZoneControl.xml</SCPDURL>
<controlURL>/upnp/control/AiosServicesDvc/ZoneControl</controlURL>
<eventSubURL>/upnp/event/AiosServicesDvc/ZoneControl</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-denon-com:service:GroupControl:1</serviceType>
<serviceId>urn:denon-com:serviceId:GroupControl</serviceId>
<SCPDURL>/upnp/scpd/AiosServicesDvc/GroupControl.xml</SCPDURL>
<controlURL>/upnp/control/AiosServicesDvc/GroupControl</controlURL>
<eventSubURL>/upnp/event/AiosServicesDvc/GroupControl</eventSubURL>
</service>
</serviceList>
</device>
<device>
<deviceType>urn:schemas-denon-com:device:ACT-Denon:1</deviceType>
<friendlyName>Marantz SR7012</friendlyName>
<manufacturer>Marantz</manufacturer>
<manufacturerURL>http://www.marantz.com</manufacturerURL>
<modelName>Marantz SR7012</modelName>
<modelNumber>Aios 4.025</modelNumber>
<serialNumber>AVH12171102390</serialNumber>
<UDN>uuid:a016e509-0cb4-3c12-0b71-996fab401925</UDN>
<DeviceID>AIOS:0001</DeviceID>
<capability_version>2</capability_version>
<firmwareRevision>207995</firmwareRevision>
<firmware_date>Thu 2023-01-12 01:15:21</firmware_date>
<firmware_version>2.71.510</firmware_version>
<lanMac>00:05:CD:9C:AA:40</lanMac>
<locale>en_EU</locale>
<moduleRevision>4</moduleRevision>
<moduleType>Aios 4.025</moduleType>
<productRevision>1</productRevision>
<releaseType>Production</releaseType>
<wlanMac>00:05:CD:9C:AA:42</wlanMac>
<serviceList>
<service>
<serviceType>urn:schemas-denon-com:service:ACT:1</serviceType>
<serviceId>urn:denon-com:serviceId:ACT</serviceId>
<SCPDURL>/ACT/SCPD.xml</SCPDURL>
<controlURL>/ACT/control</controlURL>
<eventSubURL>/ACT/event</eventSubURL>
</service>
</serviceList>
</device>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
<friendlyName>Marantz SR7012</friendlyName>
<manufacturer>Marantz</manufacturer>
<manufacturerURL>http://www.marantz.com</manufacturerURL>
<modelDescription>Shares User defined folders and files to other Universal Plug and Play media devices.</modelDescription>
<modelName>Marantz SR7012</modelName>
<modelNumber>Aios 4.025</modelNumber>
<serialNumber>AVH12171102390</serialNumber>
<UDN>uuid:24d22e65-864a-ae3c-4e96-282a491937a5</UDN>
<avega_media_server:X_VirtualServersSupported>True</avega_media_server:X_VirtualServersSupported>
<avega_media_server:X_VirtualServersSupported>True</avega_media_server:X_VirtualServersSupported>
<avega_media_server:X_VirtualServersSupported>True</avega_media_server:X_VirtualServersSupported>
<avega_media_server:X_VirtualServersSupported>True</avega_media_server:X_VirtualServersSupported>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
<SCPDURL>/upnp/scpd/ams_dvc/ContentDirectory.xml</SCPDURL>
<controlURL>/upnp/control/ams_dvc/ContentDirectory</controlURL>
<eventSubURL>/upnp/event/ams_dvc/ContentDirectory</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/upnp/scpd/ams_dvc/ConnectionManager.xml</SCPDURL>
<controlURL>/upnp/control/ams_dvc/ConnectionManager</controlURL>
<eventSubURL>/upnp/event/ams_dvc/ConnectionManager</eventSubURL>
</service>
</serviceList>
</device>
</deviceList>
</device>
</root>

Sean

Wanted to confirm we got you working with some attention to the new windows version.

Will let you know when we update the Linux gitHub and eventually the docker images.

Hi @peter_richardson,
I don’t know how I could have missed that extension until know. It’s great.

A few observations & questions:

  1. Your extension works great with HEOS groups unless I set in HEOS stereo group. In such case:
  • group is not being detected
  • only first device in group is accessible
  • playback works only on one device

Don’t you plan to support stereo groups also?

  1. Standby button
    image image
    seems to have a pause effect only. Would it be possible to trigger a real standby action with it?

  2. I might be wrong but have an impression that grouping interferes somehow with DSP processing. Or maybe that’s a result of group handling in HEOS.
    Example: Group two devices and enable simple procedural EQ to mute left channel from one of them and right channel from the second one. As a result I can hear both channels in both devices.

Is that what you also experience?

Thanks for the feedback.

Glad it’s working pretty well.

I don’t use Heos Stereo pairs and don’t think there’s a way to access - I’ll play around and see!

There’s no real difference for Heos players between paused and stop I can discern . I may try to set to a hard power on off - mainly for amps and receivers I think.

Will require an additional control so I’m not sure it will be friendly.

Again the idea is appreciated and I will see if there’s a possibility.

At present working on fixed grouping and early tests seem positive.

Best

Peter

What is the function of "send metadata and send cover art?

Unfortunately, none. Most of the “advanced” features are there for testing. I have found no way to send metadata or cover art as yet given the HEOS api.

@Piotr_Pekala - I just added two new Denon 150’s and put them into stereo pairing. Here is what I get:

  • only the ‘first name’ shows up in RHEOS exactly as you have said (I have not tried to rename the stereo group, but I think you can after you make them a pair)
  • the speakers DID play stereo sound - to prove it I searched for left/right music - I got an album that has tracks that do left/right Hz for testing your ears - worked great and proved stereo (and showed my age at the higher frequencies)

I do have to restart my RHEOS docker image from time to time, especially after changing anything on the heos speakers or receivers. And I did stop the RHEOS image (app), make the pair, then start the app again…

Patrick

You are right! Thanks for sharing that.

I checked that last time with test FLAC files and heard only left channel. But that was most probably due to the DSP filter (muting right channel) that was automatically aplied - basing on previous configuration - as the pair was recognized as left speaker.

Anyway proper recognition of stereo pairs would be a nice addition to current functionality…

You guys can help me with what’s needed here.

Glad it kind of works but I don’t use stereo pairs.

How do you create them with Heos?

Best

Peter

Here is the heos how to link

https://support.denon.com/app/answers/detail/a_id/2085/~/how-to-use-two-heos-speakers-in-a-stereo-pair

Basically you combine them as per normal then use the pencil edit icon to go to a new screen and set it to stereo pair etc

Thanks - I’ll take a look how this shows up in the Heos API and whether there’s a way to interact …

Peter

Hello Peter and Piotr,

I did the following:

  • went in and made a custom name for my stereo pair
    (original names are: Denon-150-C and Denon-150-D, pair name is: Denon-150-C+D-Stereo)
  • restarted my RHEOS docker image to force it to search for devices again…
  • RHEOS only shows the name of the First Device in the Stereo-Pair [Denon-150-C]
  • however, using the actual HEOS app, I can change the balance left/right and it is respecting the stereo sound…
  • so it works, just the “name” is not available

I suspect the following: heos is combining them and roon is simply sending the signal to the ‘root name of the pair’ and the heos software is separating the signal left/right to each speaker - much the same way roon sends the signal to the AVR and the AVR splits the signal…

Patrick

PS - I checked the Settings/Audio to make sure rheos didnt find the new stereo-pair name and check the extension setttings to confirm it is not showing up there either…(it is not)

PSS - I used “Stereo Test: Speaker Setup, Calibration Tones, Soundcheck” from “Bunker Analog” on QoBuz to confirm I am getting actual stereo and not dual mono.

Thanks.

Did a little testing and Patrick is correct. When grouped as a stereo pair the first speaker in the pair is receiving the output from Roon and controlling the second.

I can’t access balance from the HEOS cli but volume control works as normal.

The second speaker will still show as a zone in ROON at present - I will see if I should suppress it as it is no longer useful when used in a pair - but needed if you ever want to play them independently again without restarting. I can’t imagine you would want this often - but let me know if you do and I’ll see what can be done.

I’ll be updating later this week so your feedback will be appreciated - and maybe even incorporated :wink:

Maybe I wasn’t very clear in the last post but the goal was to confirm that I see the same behavior. :slight_smile:

Regarding visibility of the second speaker - I don’t think it’s needed unless you ungroup the stereo pair.

After a few days of using it I can report that your extension (running on RPI) is really stable. No need to restart it so far.

I can say that it’s more stable than rooUPnP that I was using for a year. That may be specific to stereo pair use case when HEOS takes care of pairing.
With rooUPNP I had to group in Roon speakers, mute channels with DSP and have two parallel streams from Roon via RPI to the speakers.

Very cool idea :+1:
But for sure, RHEOS dedicated to HEOS will be the better choice for that :grin:

Best DrCWO

Indeed - the fundamental difference here is that RHEOS uses the HEOS system for grouping and connects a ROON endpoint to a specific HEOS player which manages all the grouping and synchronization. Hence all HEOS players can be synchronized as needed but not with RAAT or others.

HEOS handles this well.

I am testing the handling of Synchronized Stereo Speakers and Fixed Groups and should have an update on GitHub later this week and hopefully update the docker images soon after.

Hey Peter, I’m fairly new to this. Does RHEOS allow for 192/24 hires streaming from Qobuz down to the Marantz AVR or AVP? I have a brand new AV10 and as we know Qobuz isn’t supported currently. If I use the Roon app I can only stream it cd quality over airplay to the AV10. I have a QNAP NAS that I can access via HEOS and stream 192/24 local music on the NAS directly to the AV10. This NAS is also running Roon Core. Is your solution for linux on a NAS or Windows GUI app? Can you provide some sort of guide or implementation instructions? I haven’t been able to find searching… Thank you.

@peter_richardson , @Piotr_Pekala

I have set up my system this way with a stereo pair:

  • with speakers NOT in stereo, I let RHEOS find them, I configured them for hi res, 500ms delay etc
  • go into heos app and made them a pair, then set to stereo pair, setup their EQ
  • I did NOT edit the stereo name on the pair

Now, back in ROON, it just shows as the two speakers grouped together (speaker a + speaker b). so roon believes they are grouped, I can see both speaker native names but they play left and right properly…

I like this setup because I can, at any time, split the speakers in HEOS APP and move them around the house (my stereo pair are in the office but I move them for parties)

Patrick

There may be a difference in implementation between various speakers.

I followed your path starting both from 2 single speakers and non-stereo group. But every time after enabling stereo option in HEOS app, second speaker from group disappears from RHEOS. Only first one is visible under it’s normal name (group name is not visible anywhere).

So Roon thinks it has just one single speaker and streams to it. But as a result both speaker play properly in stereo pair.

@TODD_LEWIS - yes, as long as you set HEOS APP for the device to be high quality sound, and then inside the SETTINGS of RHEOS to Hi-Resolution, then it will stream the hi res to the AVR and the speakers.

I have noticed some instability in the process - HOWEVER, it is a very HIGH probability I am the culprit of the instability on my network since I am playing with Synology NAS, docker containers via portainer stacks with macvlans, and a vlan subnet for all my entertainment endpoints and lastly, an aggressive pfsense firewall…

here is what I do see:

  • Sometimes even if the rheos extension shows hi-res in the settings, its not (I get the green icon in roon app vs the purple is the first telltail)- a simple docker image restart fixes it
  • rheos docker will sometimes abend - Peter says it when some endpoints conflict or it cannot find an endpoint - all my endpoints are dhcp however, they are set to a fixed IP via the dhcp server - part of me thinks its the recent addition of my Denon 550 Soundbar