Legrand Nuvo multi-room audio support

I found a good usb–>rs232 cable that allows me to configure the NV-I8GM with my laptop with the official legrand application.

Unfortunately it doesn’t seem to establish a connection or integration between the Raspberry pi4 and the Nuvo.

I followed the steps on the github page, even added your files init.py and replaced mediaplayer.py (I assume they both go in de /custom_components/nuvo/ folder?), but keep getting an error log when rebooting hass.io. :

Setup failed for nuvo: No setup function defined.

Am I doing the right steps? And what should I add to configuration.yaml?

So if anyone is still interested, I have my changes in Git. Both repos can be found here: https://github.com/SmilinJoe The pynuvo repo should be a drop in replacement for that component. The nuvo media_player repo gets added as a custom component. I can help out (now that things are less weird), just let me know.

I don’t know if @ejonesnospam want’s to work on incorporating these changes/adds into his code. I am willing to help, but I am not python proficient. Ultimately I think the media player component could be standardized if the math was moved to the pynuvo component. Example if the volume read 0 to 1 instead of -70 to 0, one media_player would work for both platforms.

Like I said, let me know how I can help.

1 Like

HI there

Really appreciate your hard work in this. I tried installing this custom component. I would love to have my nuvo essentia connected to HA.
i’m runnning hass.io 0.114.4.
Copied the two hass.media_player.nuvo files from the repo into /custom_config/nuvo/ and updated my Yaml but i get the following error.

‘Logger: homeassistant.setup
Source: setup.py:118
Setup failed for nuvo: No setup function defined.’

Am I doing something wrong? I’m relatively new to HA system.

There are 2 repos. The hass.media_player.nuvo files are the integration. That talks to the pynuvo module to do the rest. There is already a pynuvo installed by default (at least I think it’s installed by default), but it’s written for a different version of the Nuvo. You need to replace pynuvo/__init__.py that’s installed with the one from my repo.

smilinjoe, thanks for you work on this. For us newbies, where does that new pynuvo file go? I can’t find any pynuvo files/folders in the homeassistant directory structure.

That is what I am trying to figure out. I developed this on a Pi using the python virtual env setup. This would put the files at /srv/homeassistant/lib/python3.8/site-packages/pynuvo. I followed Brian’s instructions in post 11(Legrand Nuvo multi-room audio support). I am not sure how the hassos handles this now.

EDIT: Looks like we are running into the same issue as these guys: Components require additional python code/library . Since hassio is in a container, you can’t access the libraries to modify them. There is discussion there about loading a library with the integration (so my version of pynuvo would live in the custom_component directory). I don’t have a good way to test that right now, but you guys can hack away at it.

Hey guys newbie here,

I have a Nuvo p3100. Can i connect it with HA?
For now i am running HA on a mac using virtualboxVM with a VDI.
Do I need the cable , since i don’t have an rs232 port in my nuvo.

The p series Nuvo’s are a different product all together from what I understand. If there is no serial port, this integration will not work. If it’s network connected, you can explore that route. All we are doing here is emulating a person typing commands into a terminal. If your device has a similar command set that can be accessed via SSH, then you should explore that.

Thanks for the reply. @smilinjoe .
How to work on the network method.
If i enter the ip of my nuvo(each zone has one), i get


And if i go into diagnostics


how to proceed. Thanks in advance

Well I got it working. I used another method thats kind of a workaround. I took advantage of a plugin thats already written for nuvo serial port control in homebridge (HB). I will outline the steps I took and maybe it will help.


  1. Nuvo amp with a serial port / rs232
  2. RS232 to usb cable
  3. Home assistant (Hass.io)
  4. A Homebridge instance (no apple devices needed)


  1. Setup Homebridge instance. This can be done on its own dedicated hardware or on the device that runs HA. I used a seperate pi I already had running HB, but I see a guide on setting up homebridge in HA using portainer which I have not personally tried.

Pi running HB : Install Homebridge on Raspbian · homebridge/homebridge Wiki · GitHub
(There is other hardware HB can run on, google your preferred install)
Portainer method : Tutorial: add Homebridge to Hass.io using Portainer
(no additional hardware is needed for this method)

Once you have homebridge running and can see the homebridge UI, then you are ready to move on. Scroll down to the number code on the HB front page under the qr code. You will need this later. Front page of HB looks like this:

  1. Connect your nuvo amp with the cable to the device running homebridge.

  2. In homebridge UI, click the menu at the top right and click plugins. In the “search for plugins to install” search bar type nuvo. Install the homebridge nuvo plugin. Once installed , click settings on the plugin and fill out the usb path to the nuvo amp and the number of zones.

Restart homebridge if prompted (from the top right menu, the power button looking thing)

Once restarted, click the top right menu and click accessories. You should see accessories created for each zone and each source (eg 6 zones with 6 sources = 36 accessories created). They will appear as lights. This is normal
If you click on one of these accesories you should be able to control on/off and volume. Depending on which accessory you clicked it will change the input (source). I verified this by standing by one of my keypads and clicking on the tiles to make sure they were turning on/off, switching sources, and adjusting volume.

IMPORTANT : At this point you want to go back to the plugin screen, on the nuvo plugin click the wrench and click bridge settings. Turn on the switch to initiate the nuvo-platform child bridge and restart homebridge again.

Your bridge settings will not say “bridge paired” until later. For now it will show a qr code. Just make sure the switch is on.

Once you have full control of your keypads through HB AND have the child bridge setup, time to go on.

  1. Now open HA. Go to integrations. The connected homebridge instance will be added with the Homekit Controller integration. Your auto discovery may pick up the child bridge on its own and you can click the configure button.
    If it doesnt come up by itself click add integration and find Homekit Controller and add it.
    This will search your network and should pick up the homebridge-nuvo bridge setup in previous step. Click on it to begin the configuration.
    During configuration you will be asked for a homekit code. This is found on the FRONT PAGE of homebridge under the qr code looking thing. A number in the form of xxx-xx-xxx. Enter this code to finish the setup.

Clicking on the newly installed integration you should see all 36 (or however many you have) entities created for each source and zone. They will still look like lights

You can optionally disable the sources you don’t use from the entity list and then go into customizations to change the icons to speakers for the ones you do.

  1. Add to lovelace and enjoy. Use the brightness slider to adjust volume.

SIde Notes:
Yes, the homebridge plugin adds the zones/sources as lights. So it appears in HA as a light as well. Customization basically fixes this. It may still say brightness when your adjusting volume but i dont care cuz its working :slight_smile: Feel free to customize.

When turning on a zone the default volume is always somewhere around 50%. This is a safety feature of the HB plugin to not blast you with music when turning a zone on and protect your speakers. Very nice feature.

The homebridge-nuvo plugin works very well and credit goes here : GitHub - Willmac16/homebridge-nuvo: A Homebridge Plugin for Nuvo Whole House Audio Systems
He is very responsive and fixed an issue I raised when testing this method out.

I know this is a long read and also a departure of what this thread is working towards (native integration). But it is a working alternative I’ve been very happy with. Hope it helps someone.

1 Like

Any luck on an integration for the p series?

I’ve created an integration for the Nuvo Grand Concerto and Essentia G models. It’s installable through HACS with the long term plan to get it merged into HA core. Details in the README GitHub - sprocket-9/hacs-nuvo-serial: Custom component to control a Nuvo Grand Concerto/Essentia G multi-zone amplifier via serial connection

For lower level config outside of HASS, the python library nuvo-serial · PyPI partly implements the serial control protocol for these amps.

Would be helpful to get some testers to kick the tyres and see how it runs for others :slight_smile:

1 Like

I have a Concerto not a Grand Concerto that I would be willing to test on. I have tried the HACS method but when configuring the add on it fails to connect after a long pause. The Essentia fails immediately so I am not sure if it is doing any type of model validation.

The older Concerto amp has a different protocol, so will not work with this integration, sorry

sprocket-9, I tried installing your new integration using a Grand Concerto. I was not able to get it to connect. When I added the integration and entered my serial port (/dev/ttyS0) I only got a spinning circle. I briefly looked through the code but couldn’t find where the baud rate is setup. I have some functionality working through Node Red, which I disabled when trying to add this, but am very interested in getting your integration up and running.

Is it still available in HACS, I don’t see it in the integrations?

As lleo has said, the Concerto model will not work due to protocol incompatibility.

There is model validation happening at connect time. For Essentia G it’s looking for a model number of “NV-E6G” in the response to the *VER command - does this match your Essentia’s model number?

Make sure your Node Red stuff is fully disabled and not trying to use the serial port, the integration needs exclusive use of the serial port and oddities will occur if something else is trying to read from it at the same time.

It won’t be a baud rate problem, this is set in the underlying library to 57600 for both models.

It could be serial port permissions:

ps -ef | grep -i homeassistant # find user owning the home assistant process, in my case it’s homeassistant
ls -l /dev/ttySO # find group name, in my case it’s dialout
groups homeassistant # check dialout group is in the list
sudo usermod -G dialout -a homeassistant # add homeassistant to dialout group

Reboot and see if it works now.

It is still available. If it’s not appearing for you, HACS might not be showing it as available if you’re running an older version of Home Assistant. The integration needs 2021.3.2 or newer.

Thanks for the response. It was a fresh install so it should be the latest version. It was a Virtualbox VM install. I saw lots of other integrations but I’ll check the setup again… new to this so could have quite easily missed something.
Looking forward to testing this :+1: