Roon Extension: Denon/Marantz AV receiver volume control (GitHub)


I am done “polishing” my Denon/Marantz Volume Control extension. It uses the receivers network interface (not RS232) to control volume and mute, and I am using that in conjunction with the Logitech Harmony extension I’ve released a few days ago.

I might be adding a Source Control feature in the future - I had most of that done before starting work on the Logitech Harmony stuff.

Let me know what you think.

Anyone willing to coach a total n00b in using the API?
Let's develop a platform for extension distribution [Repository open]

Liking this one too, Boris - you have a similar set up to me.
I must be following instructions badly again here though, I can’t get the install to complete. Error is:

npm ERR! file /Users/jk/Roon Extensions/roon-extension-denon-master/package.json
npm ERR! Failed to parse json
npm ERR! Unexpected token ‘n’ at 11:6
npm ERR! “node-roon-api”: “github:roonlabs/node-roon-api”, "node-roon-api-setting
npm ERR! ^
npm ERR! File: /Users/jk/Roon Extensions/roon-extension-denon-master/package.json
npm ERR! Failed to parse package.json data.
npm ERR! package.json must be actual JSON, not just JavaScript.
npm ERR!
npm ERR! Tell the package author to fix their package.json file. JSON.parse

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/jk/.npm/_logs/2017-06-13T02_13_36_063Z-debug.log


No, this time was really on me - there was a typo in the package.json that I didn’t catch. Fixed now.


Wow, now this is what I call extensibility! I love this so much. I’ve always used fixed volume and so never had a use for Roon’s volume slider - always had to have the Harmony remote close by to change volume. This just makes my day!
Beer for you, Boris!

Now to finally mess about with making these extensions a startup service with launchd.

(Geoff Coupe) #5

@Boris_Pruessmann - this looks very interesting (I have a Denon 3808), but one question: if I’m running my Roon Core on ROCK, is it possible to install this extension, or is ROCK completely locked down, and the extension can’t be installed on a Roon Control device?


I have zero practical ROCK experience, so please take this with a grain of salt:

You probably cannot install this extension on ROCK itself because of the lock-down. You should be able to install it anywhere on your network though, and it should appear under extensions.

(SRX) #7

works well with my Denon AVC-A1HD
Thank you

but sometimes it loses connection every now and then which is restored by restarting both the mac mini (roon server) and denon amp

(Boudewijn Tielrooij) #8

Hi Boris, good work. This works with my older AVC-A11XVA! Can you make a single package that could run automatically when starting up Roon or Windows?

(Jan Koudijs) #9

Hi @Boudewijn_Tielrooij,

You may have a look at the extension installation guide for Windows that I created. When you follow these steps extensions are automatically started when Windows starts and you can also give other extensions a try.

(Boudewijn Tielrooij) #10

Hi @Jan_Koudijs

Super, its up and running in no time.


(Andy Spinks) #11

Wow! Thanks, @Boris_Pruessmann! Installed easily and seems to be working great so far with my Denon AVR-x4100w. This may be the thing that motivates me to stick with Roon.

(Andy Spinks) #12

Hi @Boris_Pruessmann, I want to again say thanks for developing this. Together with the Harmony source extension, you’ve saved me from having to replace my receiver!

That said, I wanted to ask if there was a way to change the volume value range from dB (-79.5 to 18) to numeric (0-98)? I know almost nothing about programming, but I looked around in the code to see if I could figure out a way to do it myself. However, I thought that even if I did figure it out, my changes would be overwritten the next time I updated. Any chance you would add a menu option for this?


Any specific reason you would need that. At least with my Marantz the volume display is in sync with the receiver itself this way, so -15 in Roon is -15 on the AV.

(Andy Spinks) #14

It would be for convenience only. I have six other roon endpoints (nine if you include AirPlay) and all of them use a 0-100 volume scale. It would just be easier to use (especially for my non-audiophile family members) if all the volume displays worked the same.

But just to be clear: Even if the volume were displayed in Roman numerals, I would still love this extension and be thankful to have it! :grinning:


Hi Andy,

I had a closer look at this and made this configurable. Have a look at the the following git branch
To check it out just do a

git clone -b volume-changes.

There is more in this branch as well (source selection, standby settings etc). While the source selection and standby changes are tested fairly well the volume display change is just a quick first test.

Roon Extension Manager v0.8.1
(Andy Spinks) #16

Thanks, Michael! I ran the git clone command (without the dot at the end) to download the extension:
git clone -b volume-changes

Roon didn’t recognize it at first, so I followed the remainder of the instructions on your github page:

cd roon-extension-denon
npm install
node .

This got it registered with Roon, and it showed up as a second instance of “Denon/Marantz AVR” (same author and version number shown) so I began by stopping the other instance. (It was installed using Roon Extension Manager, so that’s what I used to stop it.) Unfortunately, when I tried to enter the receiver IP address in the new extension, it gave an error: “Cannot read property ‘value’ of undefined.”

The cmd window was still open, and here are the last few lines generated there:

<- REQUEST 822 com.roonlabs.settings:1/subscribe_settings {"subscription_key":"45"}
    -> CONTINUE 822 Subscribed {"settings":{"values":{"hostname":"","setsource":"","volume_type":"relative"},"layout":[{"type":"string","title":"Host name or IP Address","subtitle":"The IP address or hostname of the Denon/Marantz receiver.","maxlength":256,"setting":"hostname"},{"type":"dropdown","title":"Volume Type","subtitle":"Select if you want to have a relative (dB) or absolute (volume) display","values":[{"title":"absolute","value":"absolute"},{"title":"relative","value":"relative"}],"setting":"volume_type"}],"has_error":false}}
    <- REQUEST 831 com.roonlabs.settings:1/save_settings {"settings":{"values":{"hostname":"","setsource":"","volume_type":"relative"}},"is_dry_run":true}
    -> COMPLETE 831 NotValid {"settings":{"values":{"hostname":"","setsource":"","volume_type":"relative","err":"Cannot read property 'value' of undefined"},"layout":[{"type":"string","title":"Host name or IP Address","subtitle":"The IP address or hostname of the Denon/Marantz receiver.","maxlength":256,"setting":"hostname"},{"type":"dropdown","title":"Volume Type","subtitle":"Select if you want to have a relative (dB) or absolute (volume) display","values":[{"title":"absolute","value":"absolute"},{"title":"relative","value":"relative"}],"setting":"volume_type"},{"type":"status","title":"Cannot read property 'value' of undefined"}],"has_error":true}}

I have triple-checked to make sure the IP address is correct and even turned the receiver on. I also tried just entering the IP address and not changing the volume setting. Should I have uninstalled or stopped the other instance before installing this one?


Ok, first of all the other instance of the extension should be stopped before trying this one. But the error you get comes up during the configuration phase, so they should not interfere yet. So you enter the IP-address and then hit tab and you get this error, right? Can you see what a call to returns in a browser, it should be an xml file.

(Andy Spinks) #18

Here’s the XML file:

<?xml version="1.0" encoding="UTF-8"?>



<value>Denon AVR-X4100W</value>









<value>LivingRoom </value>















<value param="" table="On" index="ON"/>

<value param="" table="Off" index="OFF"/>

<value param="" table="Xfinity X1 " index="SAT/CBL"/>

<value param="" table="Oppo Blu-ray" index="BD"/>

<value param="" table="Front AUX1 " index="AUX1"/>

<value param="" table="AUX2 " index="AUX2"/>

<value param="" table="AppleTV " index="MPLAY"/>









<value param="" table="On" index="ON"/>

<value param="" table="Off" index="OFF"/>

<value param="" table="Auto" index="AUTO"/>





















<value>Direct </value>






















Yes well ****, that’s the reason it is not working. The xml output is totally different from my Receiver (Marantz). Looking at the input I guess you renamed one of your inputs to “Roon”, right?


Can you please give me the output of

as well. I just want to make sure that it is the same I found via google.