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

@peter_richardson

With two receivers and zones off is the grouping with the HEOS app or with ROON? Does the actual HEOS app work normally (if not again its pointing to a network issue with HEOS, not ROON). Can you group/ungroup and change volume with the HEOS app?

In the testing, I am doing all grouping and ungrouping in Roon, and monitoring the HEOS app to see if the actions are showing correctly in the HEOS app and then walking around to double check. The HEOS app is working correctly for grouping, ungrouping and volume control. In fact, when listening (and not testing), I am using the HEOS app to get around the Roon issues. With recent software and firmware updates, the HEOS system has become remarkably stable even on larger systems like mine.

I note that several players are wifi based and am wondering if that may be part of the issue as I keep everything other than a couple of HEOS 5s hard wired).

Yes, like you, I’m using wifi on HEOS speakers (two 250s and two 350s), as is the theater receiver. I also have two soundbars using wifi. The theater receiver and soundbars, however, are rarely used with Roon music listening. The HEOS app has usually shown EXCELLENT connection levels for all wifi speakers that are used with Roon, but I am avoiding wifi devices for this testing. The Roon server is running on a high end Windows 11 desktop and this desktop and the two receivers used for testing are running with hardwired ethernet.

Ill take a look at adding some logging to the next release to capture what’s going on with volume control on the receivers and if they are responding and try to see if we can improve the reliability here.

Awesome…thanks!

Here is a screenshot of HEOS grouping that works great and I use it all the time.

1 Like

Kent,

Just uploaded 0.8.4-10.

I think this addresses the issue you identified. (Non-grouping of AVRs with other players when zone turned on in HEOS app)

Please let me know how grouping AVRs now works for you.

Thanks for your patience. One line of code - but so important!

Peter

1 Like

The grouping is correct now. If I group in Roon, it also groups in HEOS.

It looks like the volume is not working within the group (using two receivers) using Roon. I did notice however that when changing the volume in HEOS, the changes are reflected in ROON.

Kent

@Evan_Kohn1 - heads up Evan, when you update your image (Peter has released 2 updates since you got it running) - when you apply the update you will have to go into roon and:

  • Remove the old version (in the extensions VIEW area, click the remove button)
  • enable the new version
  • re-setup your SETTING on the new version BUT ONLY after its done configuring… its got a lot of goodness to get thru configuring…
  • all the settings will be back to CD Quality etc etc…
    (speaker and AVR names are not affected on the Audio side at all)

Now, someone way smarter than me may be able to figure out in synology nas docker how to map that config file in the volume so we can access is and save it between runs but I cannot [spent way too many hours trying different things] - it has to be a limitation of my docker knowledge but given it takes just a few min to re-setup its no biggie – IF i had saved groups like Kent and Peter i might try harder…

@patrick_mccarthy Thanks for the heads up, but accidently way ahead.
I just got a new AV Processor and had to make the change.

And I would have said the config is so simple its not a big deal, but you reminded me to change to Hi-Res.

My son was passing by, and I asked about the config file. I think if I interpreted him correctly, this one is on @peter_richardson. depending what he’s using, we may be able to set a variable in the yaml that causes the config to be saved to the local machine vs the container.

Hi Peter,
I was able to read the post before delete. Hope my last note wasn’t taken badly.
What we would need to know, in order to make configuration changes persistant is how you maintain a config file. If you use a specific environmental varialbe to call out its location, in the yaml we can set that variable and anytime the container is update the config could be pointed to one on the local machine (hopefully).

config.json should be in the directory you start from and load into the container. Instructions I use when working from the command line are above,

This is what I use.

$ sudo docker run --name roon-extension-rheos --network host -v $(pwd)/.reg/etc/config.json:/home/node/config.json rheos/roon-extension-rheos:test

If you can work on what is needed for your set up Id appreciate it - I have no access.

So I did a little further exploration of what happens with groupd AVRs and think I have fixed the volume issue you describe.

Version 0.8.5-0 is uploaded.

This version also changes the way volume is controlled in fixed groups - now the β€œmaster control” adjusts the volume for the entire group - even when an addition is made to the fixed group. I need to work on the bidirectional part of this as HEOS has introduced the master volume control (probably because Google seem to have won a patent case against SONOS).

Ill be doing further work on fixed groups as I really like the way this works for me.

Let me know how it all works on your systems.

Thanks

Peter

@peter_richardson

Ok, now we are cooking with this version. I tested this out and everything is working correctly, except AUTO-power on with multiple receivers in a group. For a group, I can use the power icons to turn on and off the receivers in the group.

  • Using Appgineer extension in Roon, uninstalled RHEOS and reinstalled with v0.8.5.0
  • Zone control and Fixed Groups both ON.
  • Played each receiver independently. Each will automatically power on, if initially off. Power and volume works.
  • Powered off both and grouped these two receivers.
  • Power icons work correctly and group stays intact. Need to turn on the receivers manually using icon in roon when grouped.
  • Volume works correctly on each receiver in group.
  • Master volume works correctly. VERY COOL feature!
  • Tested using Roon on windows laptop and also on Android Pixel 7 pro phone. All changes visually show on laptop and phone simultaneously.

Funny, when I power on a receiver via Roon and I’m displaying the group in the HEOS app, HEOS pops up an β€œunable to play” dialogue. This is harmless and doesn’t impact any functionality.

Log dump…

2024-01-13T14:50:15.445441000Z STARTING ROON CONNECTIONS
2024-01-13T14:50:15.490205000Z 1/13/2024, 2:50:15 PM STARTING ROON
2024-01-13T14:50:15.537113000Z INITIATING SERVICES
2024-01-13T14:50:15.538831000Z 192.168.1.174,Linux,DietPi,linux,arm64 Version : 0.8.5-0
2024-01-13T14:50:15.548286000Z STARTING HEOS CONNECTIONS
2024-01-13T14:50:15.550145000Z STARTING HEOS
2024-01-13T14:50:15.653808000Z 1/13/2024, 2:50:15 PM ROON PAIRED com.RHEOS.latest
2024-01-13T14:50:15.670488000Z SUBSCRIBING Pixel 7 Pro 17015fc71138f48048bde7fda68412a7c688
2024-01-13T14:50:15.685739000Z β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
2024-01-13T14:50:15.686019000Z β”‚ (index) β”‚          name          β”‚    pid     β”‚       model        β”‚       ip        β”‚ resolution β”‚ network β”‚
2024-01-13T14:50:15.686169000Z β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
2024-01-13T14:50:15.686304000Z β”‚    0    β”‚      'Patio HEOS'      β”‚ 1238197077 β”‚ 'Denon AVR-X3600H' β”‚ '192.168.1.237' β”‚    'HR'    β”‚ 'wired' β”‚
2024-01-13T14:50:15.686431000Z β”‚    1    β”‚     'Garage HEOS'      β”‚ 517302361  β”‚  'Denon DRA-800H'  β”‚ '192.168.1.239' β”‚    'HR'    β”‚ 'wired' β”‚
2024-01-13T14:50:15.686549000Z β”‚    2    β”‚     'Living room'      β”‚ 945182341  β”‚  'Denon Home 350'  β”‚ '192.168.1.232' β”‚    'HR'    β”‚ 'wifi'  β”‚
2024-01-13T14:50:15.686669000Z β”‚    3    β”‚ 'Family room soundbar' β”‚ 486241238  β”‚ 'Denon DHT-S716H'  β”‚ '192.168.1.128' β”‚    'HR'    β”‚ 'wifi'  β”‚
2024-01-13T14:50:15.686858000Z β”‚    4    β”‚    'Master Bedroom'    β”‚ 1172627996 β”‚  'Denon Home 350'  β”‚ '192.168.1.225' β”‚    'HR'    β”‚ 'wifi'  β”‚
2024-01-13T14:50:15.687006000Z β”‚    5    β”‚     'Workout Room'     β”‚ -643584911 β”‚ 'Denon DHT-S516H'  β”‚ '192.168.1.238' β”‚    'HR'    β”‚ 'wifi'  β”‚
2024-01-13T14:50:15.687130000Z β”‚    6    β”‚  'Home Theater HEOS'   β”‚ 1176195927 β”‚ 'Denon AVR-X3700H' β”‚ '192.168.1.233' β”‚    'HR'    β”‚ 'wifi'  β”‚
2024-01-13T14:50:15.687256000Z β”‚    7    β”‚     'kitchen left'     β”‚ -76870616  β”‚  'Denon Home 250'  β”‚ '192.168.1.235' β”‚    'HR'    β”‚ 'wifi'  β”‚
2024-01-13T14:50:15.687381000Z β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
2024-01-13T14:50:15.695928000Z DISCOVERING DEVICES
2024-01-13T14:50:15.700124000Z READING PROFILES
2024-01-13T14:50:15.729849000Z 1/13/2024, 2:50:15 PM DIFFERENT PLAYERS
2024-01-13T14:50:15.730200000Z 1/13/2024, 2:50:15 PM UPDATING CONFIG
2024-01-13T14:50:15.731906000Z 1/13/2024, 2:50:15 PM CREATING ROOT XML
2024-01-13T14:50:16.021813000Z 1/13/2024, 2:50:16 PM CREATING CONFIG FROM IP 192.168.1.174
2024-01-13T14:50:38.009009000Z DISCOVERING DEVICES
2024-01-13T14:50:38.012405000Z BUILDING DEVICES
2024-01-13T14:50:38.012996000Z BUILDING DEVICES
2024-01-13T14:50:38.091433000Z CREATING Workout Room
2024-01-13T14:50:38.135541000Z CREATING Family room soundbar
2024-01-13T14:50:38.160709000Z CREATING Home Theater HEOS
2024-01-13T14:50:38.178633000Z CREATING kitchen left
2024-01-13T14:50:38.198977000Z CREATING Garage HEOS
2024-01-13T14:50:38.217927000Z CREATING Living room
2024-01-13T14:50:38.236849000Z CREATING Patio HEOS
2024-01-13T14:50:38.256626000Z CREATING Master Bedroom
2024-01-13T14:50:38.273670000Z ROON SERVER IP ADDRESS 192.168.1.192
2024-01-13T14:50:38.275314000Z CREATING ZONE CONTROLS
2024-01-13T14:50:38.275629000Z TESTING IF AVR Patio HEOS
2024-01-13T14:50:38.280763000Z TESTING IF AVR Family room soundbar
2024-01-13T14:50:38.282207000Z TESTING IF AVR Garage HEOS
2024-01-13T14:50:38.283683000Z TESTING IF AVR Workout Room
2024-01-13T14:50:38.284960000Z TESTING IF AVR Home Theater HEOS
2024-01-13T14:50:38.288226000Z ADDING LISTENERS
2024-01-13T14:50:38.289327000Z SETTING LISTENERS
2024-01-13T14:50:38.290894000Z UPDATING HEOS GROUPS
2024-01-13T14:50:38.305519000Z CREATING FIXED GROUPS
2024-01-13T14:50:38.315013000Z SETTINGS [
2024-01-13T14:50:38.315315000Z   [ 'host_ip', '192.168.1.92' ],
2024-01-13T14:50:38.315492000Z   [ 'streambuf_size', 524288 ],
2024-01-13T14:50:38.315636000Z   [ 'output_size', 8388608 ],
2024-01-13T14:50:38.315791000Z   [ 'stream_length', -3 ],
2024-01-13T14:50:38.315938000Z   [ 'seek_after_pause', 1 ],
2024-01-13T14:50:38.316081000Z   [ 'volume_on_play', -1 ],
2024-01-13T14:50:38.316232000Z   [ 'volume_feedback', 0 ],
2024-01-13T14:50:38.316375000Z   [ 'accept_nexturi', 0 ],
2024-01-13T14:50:38.316564000Z   [ 'flac_header', 0 ],
2024-01-13T14:50:38.316729000Z   [ 'keep_alive', 0 ],
2024-01-13T14:50:38.316873000Z   [ 'next_delay', 15 ],
2024-01-13T14:50:38.317007000Z   [ 'send_coverart', false ],
2024-01-13T14:50:38.317153000Z   [ 'send_metadata', true ],
2024-01-13T14:50:38.317289000Z   [ 'flow', 0 ],
2024-01-13T14:50:38.317420000Z   [ 'max_safe_vol', 70 ],
2024-01-13T14:50:38.317553000Z   [ 'avr_control', 0 ],
2024-01-13T14:50:38.317693000Z   [ 'fixed_control', 0 ],
2024-01-13T14:50:38.317824000Z   [ 'log_limit', 1 ],
2024-01-13T14:50:38.317963000Z   [ 'clear_settings', 0 ]
2024-01-13T14:50:38.318094000Z ]
2024-01-13T14:50:38.320239000Z FAMILY ROOM SOUNDBAR ZONE 2 NOT DETECTED
2024-01-13T14:50:38.325011000Z WORKOUT ROOM ZONE 2 NOT DETECTED
2024-01-13T14:50:40.300119000Z PATIO HEOS HAS POWER SWITCH
2024-01-13T14:50:40.304106000Z GARAGE HEOS HAS POWER SWITCH
2024-01-13T14:50:40.610139000Z HOME THEATER HEOS HAS POWER SWITCH
2024-01-13T14:50:42.316079000Z PATIO HEOS ZONE 2 NOT DETECTED
2024-01-13T14:50:42.318027000Z GARAGE HEOS ZONE 2 NOT DETECTED
2024-01-13T14:50:42.631852000Z HOME THEATER HEOS ZONE 2 NOT DETECTED
2024-01-13T14:53:00.877817000Z 1/13/2024, 2:53:00 PM Kitchen HEOS  β–Ά  Polka Dots and Moonbeams - Frank Sinatra / Tommy Dorsey Orchestra / Tommy Dorsey / Tommy Dorsey & His Orchestra / Jimmy Van Heusen / Johnny Burke / Axel Stordahl
2024-01-13T14:53:30.342868000Z 1/13/2024, 2:53:30 PM Garage HEOS + 1  β–Ά  It's the Most Wonderful Time of the Year (Album Version) - Andy Williams
2024-01-13T14:56:20.932087000Z 1/13/2024, 2:56:20 PM Kitchen HEOS  β–Ά  Buona Sera (Remastered) - Louis Prima / Sam Butera & the Witnesses / Carl Sigman / Peter de Rose
2024-01-13T14:56:21.433718000Z 1/13/2024, 2:56:21 PM Garage HEOS + 1  β–Ά  A Holly Jolly Christmas - Burl Ives / Owen Bradley
2024-01-13T14:59:30.656893000Z 1/13/2024, 2:59:30 PM Kitchen HEOS  β–Ά  It Don't Mean a Thing (If It Ain't Got That Swing) [1990 Remaster] - Louis Armstrong / Duke Ellington / Irving Mills
2024-01-13T15:03:32.129327000Z 1/13/2024, 3:03:32 PM Kitchen HEOS  β–Ά  Lil' Darlin' - Count Basie / Count Basie and His Orchestra / The Count Basie Orchestra / Count Basie & His Orchestra / Joe Williams / Lambert, Hendricks & Ross / Neal Hefti
2024-01-13T15:04:57.459904000Z 1/13/2024, 3:04:57 PM Garage HEOS + 1  β–Ά  Baby, It's Cold Outside - Dean Martin
2024-01-13T15:05:15.466899000Z 1/13/2024, 3:05:15 PM Garage HEOS  β–Ά  Baby, It's Cold Outside - Dean Martin
2024-01-13T15:08:19.487432000Z 1/13/2024, 3:08:19 PM Kitchen HEOS  β–Ά  Quiet Nights Of Quiet Stars (Corcovado) - The Oscar Peterson Trio / Oscar Peterson / Gene Lees / AntΓ΄nio Carlos Jobim
2024-01-13T15:11:16.862396000Z 1/13/2024, 3:11:16 PM Kitchen HEOS  β–Ά  Mona Lisa (Remastered 2003) - Nat King Cole / Les Baxter & His Orchestra / Les Baxter / Ray Evans / Jay Livingston / Nelson Riddle
2024-01-13T15:14:35.553655000Z 1/13/2024, 3:14:35 PM Kitchen HEOS  β–Ά  Your Mother's Son-In-Law (with Benny Goodman & His Orchestra) - Benny Goodman and His Orchestra / Billie Holiday / Alberta Nichols / Mann Holiner / Dean Kincaide
2024-01-13T15:17:22.844590000Z 1/13/2024, 3:17:22 PM Kitchen HEOS  β–Ά  Big Spender - Peggy Lee / Cy Coleman / Dorothy Fields'
1 Like

:fireworks: :sparkler: :tada: :partying_face:

At last. Phew - that was challenging. Let me know how it goes as you use it.

Again thanks for the testing and feedback - Id never have found the issue without your helpful poiter.

1 Like

Yes, very good news and this version definitely meets my needs for general usability. Also, I am always happy to test, especially when you are willing to volunteer your time to build this awesome little tool for Roon.

I’ve been running a group of three HEOS speakers grouped playing music with a separate group running another playlist on a two receivers group. So far is it all working as expected and I’m planning to just let it go all day.

Kent

1 Like

@peter_richardson / @Evan_Kohn1

Peter, I agree its on us to figure this out and report back to you - I thought your comment was pretty funny as intended BTW :slight_smile:

The issue is you have to have the config file in the image you create and push to docker so you put a blank one in the directory, makes sense.

  • however, if we map a config file per your instructions, your image assumes we HAVE that file already on the host, and we do not.
  • I can get a copy of the file by β€˜bashing’ into the image and β€˜cat’ the file contents, stop rheos, put it in my host directory, map it similar to your instructions and start rheos and it seems to find the file BUT any changes in the settings for rheos UI do not persist to the file even though its marks read-write
  • I have tried giving everyone full rights to the host folder for rheos, and this allowed your image to see my file but still not write back to it.
  • I suspect i have to map gid/pid between host and image - a learning curve I will embark upon.

before I requested you build a docker image, I was manually installing the app in the folder, hence, mapping rheos host to image and that worked but i am not going back to that method :slight_smile:

You formally support Apgineer and manual install and the docker image is for testing and light support - makes total sense so I won’t ask for much in the way of changes of the design.

Maybe ask… could your app startup with an empty config file, upon finding the file not config’d, initiate the config file (may copy in contents from a config.json.template file) then start up its normal operation…this would allow us to map an empty file in the host --we would be required to (first time) create a text file called config.json with nothing in it (or some default text) so that when we map and start up, you see the file – (and i will work on the security issues with the host/image)

I’ll see.

I’m going to be travelling on business again this next week so wont be coding. What Ill do is have a deep dive into Docker configuration and see what I can learn for when I get back.

Please try out the new AV zone controls (I realize you no longer need them but I think its turned out quite well and reasonably user friendly). I suspect the anticipated official ROON ready configurations may not enable zone control. We shall see,

If you give it a blessing we may well be at Version 1.00 - unless I tinker more with fixed groups and what they can do…

1 Like

@peter_richardson found another bug. I can’t seem to save the default Heos connection anymore.

One other thing I have found not sure what it is. Roons signal path often drops at a track boundary where for lots of tracks it doesn’t. Is this a buffer thing? This triggers the display for heos on the amp to trigger as it’s set it off normally and it only comes on when you use the remote or change source.

just confirmed, everything else saves (the items I change) with the exception of default heos connection

1 Like

It may depend on if you have flow mode on or off. If on, then sq2upnp sends a whole stream of data to allow true gapless. If off then each track is sent individually.

Im beginning to play around with this since you were interested in having a display on the amp. The interaction between send metadata, artwork an dflow mode is interesting. Ideally id like to display the track info but that looks challenging. Working on compiling my own squeeze2upnp versions that will allow me to explore .

Meanwhile keep the observations coming. Is volume behaving better?

Ok - i will look at that. I coded it very early and havent revisited - as I don’t use it. At present it defaults to the fastest responding, hard wired player…

It’s not dropped off since I did a full clean install. I don’t use flow as I want native sample rate. It’s continuous for the most part but every now and then it’s not when I see the behaviour mentioned. Also I think this what is causing it to not be gapless from time to time. It’s gapless for the most part until this happens. Roon is a continuous flow in the way it works signal path never drops unless you stop playing. I have changed the buffer in the extension to be large will see if this helps.

1 Like

Running all day, mixing up the groups and music, all working flawlessly.

1 Like

It’s definitely buffer related. As I mentioned a few weeks back when I look at Roons logs when it has this issue Roon isn’t buffering all the track which is should be, wether this is a Roon issue or the extension I can’t tell. I don’t get this on any other zones they always buffer to 100% this is via chromecast, RAAT or Sonos.

It’s not done it since changing the buffer size but it often goes periods without it happening so will keep an eye on it. As I know have my display off it’s easier to tell when it happens as it will trigger the display to turn on as it thinks it’s a new stream starting.