HEOS Drive and Link Support

I am on a Roon free trial as I was interested in exploring hi-res formats on my Primare i35 Prisma. Sound quality is good, and UI is really great, but I have four other zones that are tied to HEOS products that are not supported as endpoints. This is probably a crystal ball question, but is there hope that a HEOS Link HS2 and HEOS Drive unit are likely to be Roon Tested in the future? They are already products with a few years on them, but my Marantz 5012 is supported and that is oldest of the units.

I have tried these apps for the various systems I have,

HEOS app - the original to drive Marantz AVR using Tidal, does not work with Primare and did not have provision for higher than CD quality as I understood.

Tidal app via Cast - To get higher res but limited by MQA to HEOS. Primare cast seemed to lose connection at times and others cannot see or add to the current playlist like with HEOS.

BubbleUPNP - Supported all devices, seemed like it was maxed at 16 bit, not available for other family members on IOS phones.

Amazon HD - recent exploration, good sound, cast seemed to work with HEOS and Primare, but they don’t seem to have a my collection concept that I could see to hold artists and albums.

Roon - Does not support any of my HEOS devices and now requires that I have a device (laptop in my case) that I did not need with the others. I don’t use my digitized music storage now that streaming is alive so Roon might be overkill. However, if there was hope to support my other HEOS units, it would simplify many things.

I am hopeful for all things hi-res with one app, with all my current devices. If I live in a Roon/Tidal world, do my zone devices need to get switched over to BlueSound?

At least for the HEOS Link HS2 you can use:


as it supports DLNA/UPnP.

I doubt it will be ever Roon Tested. I think that you need Airplay support for that in HEOS world.

As opposed to a Roon/Qobuz world?

If you have tried rooUPnP https://rooExtend.com please let me know. Deneon UPnP should work.

I am curious. If it works please let me know. I like to add it to my list of tested devices.

Best DrCWO

So I tried to go the path of least resistance and started with a software solution on GitHub from philippe44. At first I thought I needed to install Logitech Media Server (LMS), but then found it conflicted with Roon when SqueezeBox was enabled, so I thought I would uninstall LMS and see if the squeeze2upnp-win would work. It appears to find my uPNP devices, but it says it is unable to get protocol info. I see 8 new devices show under Settings/Audio/Squeeze but they did not bring the names forward. I tried playing to all 8 but none played and said there was an error:

[11:56:27.033] process_strm:238 [0052C74C] strm command s
[11:56:27.033] process_strm:307 [0052C74C], strm s autostart: 1 transition period: 0 transition type: 0 codec: f
[11:56:27.047] sendSTAT:169 [0052C74C]: STAT:[STMf] msplayed 0
[11:56:27.260] cli_open_socket:175 [0052C74C] unable to connect to server with cli
[11:56:27.260] sq_get_metadata:380 [0052C74C]: cannot get metadata
[11:56:27.260] output_start:81 [0052C74C]: start thread 0
[11:56:27.262] process_start:1208 [0052C74C]: codec:c, ch:0, s:0, r:0
[11:56:27.262] process_start:1214 [0052C74C]: something went wrong starting process 1
[11:56:27.321] output_http_thread:389 [0052C74C]: end thread 0 (0 bytes)
[11:56:27.337] sendSTAT:169 [0052C74C]: STAT:[STMc] msplayed 0
[11:56:27.337] process_strm:342 [0052C74C] no matching codec c
[11:56:27.337] sendSTAT:169 [0052C74C]: STAT:[STMn] msplayed 0

I tried disabling the PC firewall, still same result.

It might be that the Squeeze2upnp-win is not fully supported in Roon, which I think the Roon site suggests.

It will take some time to get a Rasberry Pi for rooPNP but I have to decide if this project warrants.

Some good news to report that after reviewing various posts in the Logitech Squeezebox forum, I was able to make two setting changes that allowed me to use Roon to play thought my HEOS Link and HEOS Drive, as well as Sonos.

During that process I discovered that the names associated with devices seem to not be stored on the Roon Server but must somehow be recorded in the Roon Apps as all the UPnP devices show under Squeezebox as UPnPBridge. Odd, but workable through trial and error.

Hi! What were the setting changes? I’ve been looking for a way to get my two HEOS Drive units working with Roon,

Here is an image of first few lines of config.xml, I think Roon type and maybe mime and codes were the changes.

Here are the settings I use on an HS1 Drive

Setting flc compression level to 0 seems to help .

If its an HS2 Drive then the sample rate can be set to 192,000 and L24 to ‘1’ . HS1 and players were all CD quality only and only support 48,000 and 16 bit.

I presently have developed an extension that allows automatic detection of all Heos players on the network and configuring to play Hi Res or CD quality, allows grouping of Heos players into Heos groups via Roon grouping, or the Heos app, volume control of players (even in group). It will only group Heos players together - not with RAAT or other groups (if you want tightly synchronized sound).

I presently run on this on windows, using node-js and am about to start testing something that will run on a raspberry pi. If you are interested in testing (at your risk :wink: ). I’d be happy to share the code.
I presently control 2 Heos Drives, 2 Heos 3, Heos 7 and a Marantz ND8006 and SR6013 in an whole house setting and it works pretty well for me to date - just trying to iron out a few bugs.

If you are familiar with setting up a Roon extension and are able to work with me to get this going you might find it helpful. I’ve not yet started to move to extension manager but will do so if alpha testing works out.

Oh that’s fantastic, and I’d love to help test.

My media room / main system runs a Naim streamer (RAAT), and I have two HEOS Drive units and a Coastal Audio amp for zones in the rest of the house and outdoors.

My thoughts on what’s valuable:

  1. big win just in the ability to use Roon to play music over HEOS (instead of using the HEOS app)
  2. even better if I can use Roon to control HEOS zones and volumes
  3. ideally I can adjust HEOS or Naim timing so it doesn’t sound too out of sync from an adjacent room

please keep me posted - I’m @mkosma on github fwiw

I made a first commit to my GitHub repos for this. I’ve called it “RHEOS”

Take a look. This is very much 'use at your own risk" - alpha testing. I’ve tested running as an extension using Windows 10 and Raspian on a Pi4. Should work with other variants but I haven’t set up for 64 bit or non AR based Linux yet.

Please feel free to make a pull request. No logging is active in this version - will be working on this in a couple of weeks.

Enjoy (hopefully)

1 Like

Would be interested to test it but no luck with installation:

npm install rheos
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/rheos - Not found
npm ERR! 404
npm ERR! 404 'rheos@’ is not in this registry.*
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url

Thanks for being brave enough to try!

Sounds like my installlation instructions aren’t clear or detailed enough.

Did you clone a copy of the code from GitHub to a local repo?

This should result in a directory called RHEOS in which you will find the directories and file that are in the git.

Have you installed the latest stable Nodejs?

Are you installing on a windows or raspian device?

I’ll take a look when I am back home and try a clean install on a windows box following my instructions and see what I missed. Should be by tomorrow.

Keep a watch and thanks again for your help in exploring this.

I tried with below:
Windows 10 64-bit
Node.js 16.15.1 and 18.4.0 (both 32-bit)
Code cloned with GitHub Desktop (few attempts with command prompt failed)

In comparision Heos-api does install fine:
npm install heos-api
added 1 package, and audited 2 packages in 3s
found 0 vulnerabilities

But node app.mjs command cannot find it:

  • ErrorCaptureStackTrace(err);*
  • ^*
    Error [ERR_MODULE_NOT_FOUND]: Cannot find package ‘heos-api’

More detailed installtion instructions would be helpful.

I think I see what the problem is. You need to clone the repository to a local directory - I suggest calling it RHEOS, before using npm install from that directory, once you have cloned it. The simplest way for me is :-
From the command line try : “gh repo clone LINVALE/RHEOS ./RHEOS”

(If successful you will see a ‘package,json’ and ‘package-lock.json’ as well as ‘app.mjs’ in the directory)

Then switch to that directory and type “npm install”, This should create a folder ‘node_modules’ with the required dependencies.

If successful, you should then be able to run the app with “node app.mjs” from the command line.

Let me know how that goes and I’ll work on clarifying the readme and/or simplifying the process (eventually with extension manager).

Thanks for your patience.

Third time lucky :slight_smile: thank you Peter.
I gave it a bit of testing and all good except volume control which doesn’t work for me.
It looks promising as it supports Hi-Res streaming, the main advantage over AirPlay.


Interesting about volume control - that’s relatively straightforward so we should look at what happens as you explore.

Please check in the settings → audio that the name you have given to the player exactly matches that you have in the heos app. I haven’t found away to automate and any discrepancy will result in volume and grouping not working.

I’ll be setting up a next version in a couple of weeks with logging and addressing any bugs we find.

Appreciate you testing this.


That did the trick, thanks again Peter.

Few small cosmetic things I found so far on my AVR display:

  • track name is showing as Streaming from LMS
  • artist and album title are displayed as number of dash characters (----------)
  • elapsed track time is not matching Roon (counted from 0:00 when playback is stopped or combined when few tracks are played in a row)

But all above might be the limitation of the Squeezbox.

Thanks so much for the feedback and testing. Glad it’s working ( would you mind sharing a few details of your set up so we can see how this works in various settings and understand

Regarding the display on the AVR I haven’t found a way to display any useful information - the HEOS CLI doesn’t allow any control of this. I’ll certainly continue to explore ideas.

The track duration and progress is something I’d appreciate you keeping a watch on - I’ve noticed that after playing for a couple of hours this results in a loss of connection (quick and temp fix switch off and on allow squeezebox playback). I want to understand what is going on here and see if any of the default settings in squeeze2upnp are causing the issue. It will be a couple of weeks before I can make changes as I am on the road through early July.

I really appreciate the feedback and ideas to improve.

My setup is quite simple:

  • Core on Win7 PC (will migrate to Win11 soon)
  • Endpoint: Denon AVR-X4500H AV receiver connected over ethernet

More feedback:
Found small issue when playing tracks with various sample rates.
It takes approx. 20 seconds before next will start if previous one is different.