Yamaha RX-Vxxxx Extension

I’ve created a small extension for controlling Yamaha RX-Vxxxx receivers. I have tested this on a Mac Mini a) connected via HDMI to the receiver for multichannel output and b) connected via spdif/optical-out to the receiver.

This extension controls the Yamaha receiver/amp via ethernet or wireless. It is meant to replace your remote and Yamaha iOS-app for all the times where you just want to change the volume or quickly mute the receiver while you’re browsing in roon. So, instead of “Volume control not available” you can remotely control your Yamaha device.

Currently I have the volume and mute controls working, as well as standby on/off. Wake from standby doesn’t work (for now?) with the Mac Mini’s HDMI because the zone disappears as soon as the Yamaha goes to sleep.

Here’s a short demo of how this should work: https://vimeo.com/202936013

Download the extension packaged as a standalone app:

Mac OS X 10.9 – 10.12 (open the app with a ctrl-click -> open)

Windows & Linux Versions coming at some point

The source-code you can find here: https://github.com/statesofpop/roon-yamaha

For now you should probably read roon’s api-docs (https://github.com/RoonLabs/node-roon-api). I hope to add further instructions later.

Questions, suggestions, improvements welcome. This is just a first try, really.


I have a Yamaha CX-Axxxx preamp. How is this extension installed within Roon?


I would also be interested for instructions. Using a Yamaha RX-A 3010 as a prepro.

Like I said, this is still very much experimental… but if you’d like to help make this more usable I’ll be happy. At this time, you will need the command line.

The first step is copied from roon’s GitHub page:

On Windows, install Node.js from https://nodejs.org/.
On Mac OS, you can use homebrew to install Node.js.
On Linux, you can use your distribution’s package manager, but make sure it installs a recent Node.js. Otherwise just install from the above link.
Make sure you are running node 5.x or higher.

Next, download the code from my GitHub repository (https://github.com/statesofpop/roon-yamaha) using the green button -> download as zip. Unpack this, use the Terminal/Commandline to go into the folder where you just unpacked

$ cd /path/to/directory
$ npm install
$ node .

The above commands install the dependencies and start the script.

If you are unfamiliar with the command line and on a Mac, I can answer a few questions and give slightly more detailed instructions if the above was a bit terse. Otherwise I will first fix some more bugs and then look into providing a more user-friendly package for this.

1 Like

Once the script is running, switch to roon (any platform), open the settings -> extensions (second item from bottom). There should now appear an extension “Yamaha Control”. If the status says something like “Found Yamaha device at 192.xxx.xx.x” everything is fine so far.

Now click the settings button right next to it. You can enter a friendly name for your receiver/amp here. Also, please select the input your roon-computer is connected to. The IP-Adress field you can leave empty, because your receiver was detected automatically (and there are still bugs lurking behind that field).

You’ve configured the extension, let’s use it. Go to the Audio section in the settings. Choose the output, that’s connected to your receiver and go into “Device setup”.
For “Volume Control Mode” choose “Use Device Controls” (this is the extension), scroll down a bit and choose the “Yamaha Control” in the “External Volume Control” setting. Later on, you will also (hopefully) be able to choose the “Yamaha Control” extension in the “External Source Controls”, which should allow you to wake the receiver from standby.

Now, save all the changes and when you next click to change the volume, your receiver should update its volume according to what you set in roon. The mute switch should work as well.

I could swear that I’ve seen a short introduction to installing extensions including screenshots on the roon website today but I can’t find it right now.

I need to say it again: If you’ve come this far, things might still behave weirdly. The roon API is in beta, my extension is a pre-alpha.

1 Like

In case I haven’t scared everybody off… :slight_smile:

Changing the volume should now be much more reliable and volume/mute changes made directly on the yamaha should be reflected in roon (with a slight delay).

@rrwwss52 @WiWavelength

Could you please tell me which platforms you are on? I’ve found a way to package the extension, but I will need to build a version for each platform (win, mac, linux) and at this stage I’d prefer to keep the overhead low.

I have a Mac app almost ready, so if you happen to use one I’ll have a download link for you soon.

You won’t need the command line or additional tools for this upcoming version.

I have an iMac, but it is not located in the same room as the Yamaha, so it may not be feasible for me…

As long as it’s on the same network as roon and your yamaha it should work. Oh, and your iMac has to be running to use the extension, of course. Which might not be ideal. But for a first test, this should do.

Is the volume control via the CEC over hdmi or via the IP connection to the amp?

It’s via the IP connection – so yes, the receiver has to be connected via ethernet or wireless.

I don’t know about other PC’s HDMI outputs but the Mac does not support CEC. And even if CEC was possible, it’s a pain to debug at the best of times and I wouldn’t go anywhere near it.

I am going to have to bow out on this one. Ganging my Yamaha preamp volume control to my Roon volume control will not suit my signal path, as I currently use HQPlayer. For upsampling headroom, my Roon volume is fixed at -3 dB. Then, for IP volume control of the Yamaha, the Yamaha iOS app is just a click or two away from Roon.


Well, the idea behind this extension is to spare you the need to switch to the Yamaha iOS app. It does exactly what the Yamaha app does! Except it integrates the Yamaha IP volume control into roon. It does not change the signal path.

Thanks for bringing this up, btw.

I also use HQPlayer>microRendu>Schiit Gumby>Yamaha AVR.

Is the extension controllable (switchable/defeatable) once loaded?

I have the Yamaha app as well, but normally just use the handheld remote…

Yes, I understand that the extension does not change the signal path, just integrates Yamaha’s existing IP control into Roon for certain functions, such as volume.

The issue is that – per my understanding – Roon sets itself to fixed 0 dB volume when external volume control is enabled, as it would be with the Yamaha. And that would present a digital headroom/clipping problem for HQPlayer. Maybe Roon can be configured to output -3 dB maximum even with external volume control integrated into Roon. That, I do not know.


Oh, I see what you mean. The roon DSP Headroom setting continued to work when I tried to replicate your setup. But I guess you would need to check for yourself.

I have updated the first post of this thread with a link to a short demo video and the macOS download.

1 Like

You can add a -3dB static adjustment in Roon using Roon’s “Headroom Management” or the “Procedural EQ” feature.

That looks really nice! Well done.
I tried to do something similar with my Rotel preamp (over RS232). I took the available devialet-expert extension as a starting point and adjusted the commands regarding the Rotel RS232 document.

I’ll also try to slim it down and solve some errors, when time is available.

I am still thinking of a nice extension, that can be used as a generic extension, where you can set the connection type (Ethernet/RS232), as well as the commands for the main functionality (switch input, volume settings, etc…)

Thanks :slight_smile:

Yes, a generic version incl. both ethernet and rs232 support would be a Good Thing. My Yamaha doesn’t have an rs232 port, so I wouldn’t be able to test that. There is enough room for improvements in my implementation as it is…

1 Like