Roon Extension: Logitech Harmony Source Control (GitHub)

Have you added an activity as External Source Control in Roon Settings > Audio > Device Setup?

Thank you. That was my mistake. Now it works!

1 Like

Hi @Boris_Pruessmann,
Thanks again for a wonderful and incredibly valuable extension! I installed a new router this weekend (Netgear XR500), along with an update to the Windows 10 Pro Roon core server. At some point in the process, the Harmony Hub stopped working. (Actually, all my Roon extensions stopped working. I reinstalled Extension Manager and restarted Denon/Marantz volume extension to get them working again.)

Even after updating & restarting, the Harmony Extension could not find my hub. (The hub is on wireless; everything else is on wired. All have fixed IP addresses in the same range.) I was able to get it working again by manually adding the Hub name and IP address to the config.json file, but I just wanted to share the info and see if there is something I could do to make hub discovery and daily operation more reliable in the future. I’m running version 0.0.6 of the Harmony extension.

Thanks!

Update: I discovered one issue that might have been causing the problem: When my Windows 10 core machine connected to my new router, it set the network profile as “Public” (even though it was a wired connection), so a lot of things were restricted.

For anyone else who installs a new router or access point, here are the instructions for fixing this in Windows:
https://tinkertry.com/how-to-change-windows-10-network-type-from-public-to-private

Now I’m off to go update the network settings on every Windows computer in the house [sigh].

@Boris_Pruessmann
Hello Boris,
Its been a few days that my harmony extension has stopped working.
I can see the extension in the extension manager and can select a hub.
But it no longer appears as a external device selection in the input app.
I have tried everyting, rebooting, uninstalling and re installing the extension but
No go.
If it is of any interest , i can no longer see the extension in the list that shows authorized extenions.
Even though in the extensions page it is there, very odd.
Any thoughts?
Thank you
Luigi,

You probably installed the Firmware update for the Harmony. This disables the local APIs and Logitech already received the shitstorm they deserved.
Since then Logitech has promised to allow users to re-enable the API. But that requires another firmware update which might not be available at the moment.

You can install a beta update via the harmony desktop app to the hub to get around this until they release a full version.

You need to hold ctrl f9 on windows when loading the app to get to the install firmware page then scroll down to bottom there is an option to install developer firmware xmpp or something . Select that and plug in your hub. Works for Mac too instructions below
https://community.logitech.com/s/question/0D55A00008D4bZ4SAJ/harmony-hub-firmware-update-fixes-vulnerabilities 31

Hi, I tried installing using Roon Extension Manager 0.8.1 and am getting this message: Terminated: roon-extension-harmony(1)

Any ideas on how I can fix? Looks like it is pulling version 0.0.8 of the extension. I am running Roon Extension Manager on DietPi.

I also tried to install using the instructions on the git page, but received the following errors:

root@DietPi:~# git clone https://github.com/docbobo/roon-extension-harmony.git
Cloning into ‘roon-extension-harmony’…
remote: Enumerating objects: 83, done.
remote: Total 83 (delta 0), reused 0 (delta 0), pack-reused 83
Unpacking objects: 100% (83/83), done.
root@DietPi:~# cd roon-extension-harmony
root@DietPi:~/roon-extension-harmony# ls
app.js LICENSE package.json README.md
root@DietPi:~/roon-extension-harmony# node app.js
internal/modules/cjs/loader.js:605
throw err;
^

Error: Cannot find module ‘debug’
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:603:15)
at Function.Module._load (internal/modules/cjs/loader.js:529:25)
at Module.require (internal/modules/cjs/loader.js:657:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object. (/root/roon-extension-harmony/app.js:3:28)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions…js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
root@DietPi:~/roon-extension-harmony# npm install
npm WARN deprecated node-xmpp-stanza@1.1.0: use @xmpp/xml package https://www.npmjs.com/package/@xmpp/xml
npm WARN deprecated node-xmpp-jid@2.3.0: use @xmpp/jid package https://www.npmjs.com/package/@xmpp/jid
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN roon-extension-harmony@0.0.8 No repository field.

added 146 packages from 231 contributors in 6.597s
root@DietPi:~/roon-extension-harmony# node .
events.js:174
throw er; // Unhandled ‘error’ event
^

Error: bind EADDRINUSE 0.0.0.0:5224
at state.handle.lookup (dgram.js:300:18)
at internalTickCallback (internal/process/next_tick.js:72:19)
at process._tickCallback (internal/process/next_tick.js:47:5)
at Function.Module.runMain (internal/modules/cjs/loader.js:777:11)
at executeUserCode (internal/bootstrap/node.js:342:17)
at startExecution (internal/bootstrap/node.js:276:5)
at startup (internal/bootstrap/node.js:227:5)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
Emitted ‘error’ event at:
at state.handle.lookup (dgram.js:301:14)
at internalTickCallback (internal/process/next_tick.js:72:19)
[… lines matching original stack trace …]
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

Thank you.

It seems you are missing the npm install step that’s described in the README.md. :wink:

Hi, sorry to be a noob, but I think I did the npm install step…but it is giving me a “deprecated” message. Please see above. Any ideas? Or do I need to do npm install in another spot as well?

As I said, you have to run npm install before you can do a node . - I don’t see that above. That’s why all the dependencies are missing…

I am so sorry if I am not getting it…please see the last line of the quote. That is where I did the npm install

Apologies. I think your log was containing multiple attempts to start the extension, which I didn’t catch right away. If you look at the last attempt - the one after running npm install you’ll notice the following error message:

`Error: bind EADDRINUSE 0.0.0.0:5224`

This indicates that the extension is trying to listen on a network port that is already in use by another process.

Do you mind trying to run the extension like this:

 `DEBUG=* node .`

This should provide some additional debug information.

Hi - Sorry if this is annoying. The extension works perfectly for me except it tends to crash after a few hours. (I’m running it on an Intel NUC with Windows 10.) I thought it might be related to the computer I’m using for Roon control going to sleep, but I haven’t been able to reproduce the problem that way. Here is the error message.

<- REQUEST 272 com.roonlabs.sourcecontrol:1/convenience_switch {“control_key”:“38805077”}
c:\Users\jaweb\Music\roon-extension-harmony-master\roon-extension-harmony\node_modules\node-roon-api\transport-websocket.js:47
this.moo.close();
^

TypeError: this.moo.close is not a function
at Transport.close (c:\Users\jaweb\Music\roon-extension-harmony-master\roon-extension-harmony\node_modules\node-roon-api\transport-websocket.js:47:18)
at WebSocket.Transport.ws.onclose (c:\Users\jaweb\Music\roon-extension-harmony-master\roon-extension-harmony\node_modules\node-roon-api\transport-websocket.js:18:14)
at WebSocket.onClose (c:\Users\jaweb\Music\roon-extension-harmony-master\roon-extension-harmony\node_modules\ws\lib\WebSocket.js:446:14)
at WebSocket.emit (events.js:182:13)
at WebSocket.cleanupWebsocketResources (c:\Users\jaweb\Music\roon-extension-harmony-master\roon-extension-harmony\node_modules\ws\lib\WebSocket.js:950:8)
at Socket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)

Can you advise me about what the issue might be?
I see the same error has been observed with other extensions.
https://community.roonlabs.com/t/roon-extension-alarm-clock-v0-7-4/21556/202?u=john_webb

From reading around a bit, I get the impression updates to Roon can make extensions start to crash because Roon doesn’t communicate with the extension the same way anymore. It sounds like an update to the extension is often the solution. Can anyone add to the discussion?

I always found this interesting, but could never use it (as you can’t install extensions on ROCK).
I decided to install it on Win10, just as a temporary test. Together with your Marantz/Denon extention.

Wow! I am really impressed. This gives a very luxury, ‘expensive’ experience. You only need the tablet; a remote control is no longer needed.
I’m now seriously considering to migrate my ROCK system, to something else linux-based :).

I did face two issues with installing on Win10, which took a while to figure out.
Documenting them here, so hopefully other users can take advantage of it :wink: :

  1. The extension could not find my Harmony Hub; the drop down list remained empty.
    Temporarily disabling the Windows Defender firewall, resolved that.
  2. Afterwards, the extension could not find my Harmony Activities. (And logically, no external source controls appeared in my output devices).
    Turns out, that you have to enable XMPP in your (fully updated) Harmony. (This is a setting that Logitech highly discourages…).
    As far as I can see, this can only be set in an Android or iPad app, not on Windows.
    First, ‘synchronize’ on the remote control unit. Then, in the app, go to menu -> harmony setup -> Add/edit devices & activities -> Remote & Hub. There, Enable XMPP.
    (And accept all the warnings).

Hope that this helps somebody out.

Thank you very very much @Boris_Pruessmann for both extensions !

It is a really nice extension! It’s the only way I can figure out to play/pause my music outside of tablet/Roon app Control. I wish I could play/pause with my voice using Alexa, but I can’t figure out a way to do that (skipping tracks is fine with Alexa).

I recently added a second Roon ROCK but I am using it as an endpoint. Can the extension be used to control this device somehow?

Boris,

I am having the same issues that Marco had as after install I am unable to select my Harmony hub. I have tried the steps above with no avail. Any other ideas?

Brian

Same issue …