Legrand Nuvo multi-room audio support

Nuvo T2-SIR tuner support

Reviving this thread reminds me I pretty much finished a tuner integration for the Nuvo T2-SIR and it could probably support others fairly easily. Supports radio RDS and Sirius Artist/Title display. I reverse engineered the configuration dump so it is able to pull all presets, favorites, and Sirius channels directly from the tuner. I’ll get it put on github eventually, if there is any interest let me know. I know it’s old by today’s standards but still quite useful, at least for me anyway.

I have a T2-SIR sitting in the closet… wouldn’t mind breaking it out and see what you have built for it.

My use case is pretty simple. I have a Sonos (gasp) driving one input, an Alexa driving another input, and a third input from a software media player. I only have a few outputs; garage, patio, etc. No keypads. I just need to be able to turn outputs off/on, set volumes, set inputs. That’s about it.

I used to have everything driven through a Charmed Quark install, but have let that go stale since it went open source. No correlation other than timing.

I’ve updated nuvo-simple to (hopefully) support Concerto. It has the basic controls anyway.

I’ll get nuvo-tuner out this week.

I had never heard of Charmed Quark before, I read up on it a little bit. Looks like a lot of history there.

Tons of history, and Dean poured years of blood, sweat, and tears into the product. Ultimately, he had to pass it out to the community and find other reliable means of living :slight_smile:

It seemed like I could post a question and 7 out of 10 times he’d answer within 2 hrs… didn’t matter what time of the 24hr day it was. I was really sad to see he had to give up on it. I had a nice touchscreen interface setup in my rack, and media cover art swipe mode on my iPad. I could pick a movie and hit play and fire off a whole macro (I had a few choices). One was ‘play now’, another was ‘play with intro’, another was ‘gimme five first’. It would then fire up the media equipment, pick the right source (Roku, Bluray, DVD). It even knew which of my two Sony 400 disc players and slot to play. It would dim lights, set the right zoom/aspect ratio for my projector, play intros, etc.

It was a bit of a learning curve, but the interface designer was pretty solid. 3rd party drivers weren’t too complicated to write for those in the know.

Anyhow, I appreciate your responses here and I’ll take a look at the simple version you referenced. I just got my HA setup back online with a repurposed NUC. Rebuilt my ZWave. Adding a few garage door sensors; already integrated one here on the countertop… just need to move it to the garage and set the wiring.

Are there any recommended devices for running multiple audio out? And software players for that matter too? I used to have a turtle beach card in a full size media pc with 8? stereo outs? But that project’s long gone too.

PS, I might need a primer on how to install something outside of a UI supported install. Is there a generic HA ‘howto’ for things like this?

Okay, figured out the integration part. That was surprisingly simple after a few Google searches. Now I need to get my serial connections back online. That’ll take me a little bit; I don’t think I have a straight USB to RS232 cable; I was previously using a digiport 8 port that lost a power supply I haven’t replaced.

CQC looked like a nice product for sure. It seems to still be somewhat active even though the main site is down now. Dean certainly seemed dedicated and obviously took care of it like a child. It is certainly sad to see it discontinued. I still see some people are using CQC and then having it talk to HA for things it doesn’t have the drivers for and so forth.

However, it’s not all bad with HA. As long as someone out there has something they want to make work with it and has a little programming knowledge, it’s not too hard to do. There’s only a few of us though that have these Nuvo products I guess. I remember when installing mine years ago when building my home is that it would be something I could probably use practically forever since it has it’s own protocol and serial port. I don’t like any hardware on the cloud because the support never seems to last for too long.

The lovelace is pretty good for making usable interfaces. You can run HA on your iPad and it will work really well. Building what you describe does sound complex though for sure. It would take some custom programming to do some of that. Even if nothing exists, you can easily add shell scripts to run other programs, or there are simple things built in to send data to a serial port for instance. I have an Optoma projector and have been wanting to write an integration for that, but never have got around to it. Getting all of the media into a catalog might be tricky. I’m not sure what could show a picture of a movie and say “This is on DVD player 2, disc 300.” I’d say you could get some help with the community here though.

As far as multiple audio outs, HA does, in my opinion, a pretty bad job of supporting anything locally like that. There’s very little support for sound cards, or at least one with multiple outputs. I am using a USB “sound card” on my server for some things, but it’s just one output. I have the announcements setup on it (also using the Nuvo paging service for that), Pandora integration, and Music Assistant. It might be possible to get multiple outputs to work, however I just never really tried. It seems most don’t use any sound card locally at all, everything is just a streaming device. What I ended up doing was using a couple of Chromecast Audio devices as well. HA can stream to those easily, and just about any music app on any cell phone (most people’s preferred way these days) will work with it too.

Since you seem like me and have a lot of your own music, take a look at Music Assistant. It can help you out there.

It sounds like you are well on your way to getting HA setup and working somewhat, so that is great. To answer your next post, you will need a USB to RS232 adapter unless your NUC has a serial port on it. I hope to add nuvo-simple into the main HACS without the custom repo soon, but for now here is the page for it and how to add it into HA.

I did add the main Concerto features like power, volume, source, bass, treble, and balance but it’s still limited.

[GitHub - brmccrary/nuvo_simple]

Thanks Brian,

I got Github connected last night. Amazon hooked me up with an overnight 4 port USB hub and usb to serial cable. I have that installed and proxmox shared to my HASS VM. Now I need to try and figure out how to get it configured. I haven’t seen anything on that yet.

I did a quick drop in of your yaml file edit, but think I’m missing something still. I don’t see any integrations other than the default ones that come with the GitHub connection. And I get what look like syntax errors in the naming scheme in the config yaml file.

<edit #3> I now seem to have the yaml configured correctly, or at least I’m not getting any errors. I see the variables on the overview page, but I’m not finding the device to configure cards etc.

Thanks for all the help so far.

RE: my previous setup. Dean had his own media repositories, and he could also hook into some of the more common catalogers. So my repository pulled down cover art and all the production goodies from IMDB. Those catalogers usually have an app too, and a camera hook so you can just bar code scan your media. So the catalogue knew the aspect ratio and all the other important stuff. I had stored multiple zoom/tilt settings in my JVC projector, so my script simply matched against the aspect ratio and knew which setting to go to. Most everything else was straight macro commands. The repository also knew what player and disc slot each of the DVD’s was in; another concatenate command to play that player:disc. Those Sony 777 series had a nice rs232 command set that would straight bypass all the intro stuff if you told it to; straight to play.

Next step in the process… how do I configure a media player (flavor doesn’t matter at this point) to output to an audio out jack? I bought a pair of usb to rca cables that when installed, ‘look’ like a usb speaker. It would be awesome if I could spin up multiple instances of a player to play from local media or stream. I’d feed these to this Concerto that I now have online. It works right now, but it takes me a few steps to get it powered up and the source set and streaming. I probably ought to set up a few automations.

@RushT Your last setup was really cool! There is a lot of capability to run shell commands, output stuff to a serial port and so forth built in to HA at least. But I’ve never seen anything that would do all of that.

I’m a little late to help you but I’m glad you got it up and running and that the integration seems to work with the Concerto.

Well, I personally am using the VLC integration. I just looked at how it was setup, and it would support multiple sound cards quite easily. With that, you will get a VLC media player that will play just about anything through the sound card on the local server.

Now for the bad news, I run HA core, which most people don’t, and it seems to be the only one with access to this integration. If you’re running the OS, take a look at this [How to add VLC into my Hassio? - #6 by Goldensoap] This might help you get a VLC server(s) setup and use the telnet integration, which I imagine would do pretty much the same thing. To use multiple sound cards, you would just tell each server which audio port to use. Check that out and Music Assistant, which can play to the VLC player, and you have a pretty good setup. It supports some streaming services too.

You can setup some automations and input select helpers and so forth and you can create a push button controller or whatever you’d like. I have some buttons and the current source button will be highlighted, and the appropriate media player (if there is one) attached to whatever input the Nuvo is on will be displayed.

If I can help with anything I should be faster to respond for the next few days.

@smilinjoe Hey, would you do me a favor and see if you can add the integration (GitHub - brmccrary/nuvo_tuner: Home Assistant integration for Nuvo tuners)? It passes every test out there, but I can’t add it from the HACS menu. It may just be my system though, as it might be messed up from developing it. If it works, then it should be good to go. If not, just let me know. Thanks!

I’ll take a look at VLC, appreciate the tip. Another thread I responded to suggested slimproto and squeezebox lite would get me what I needed.

Hello @bmccrary I’m trying out nuvo_simple but it’s saying my Concerto is not supported. Debug logs show:

2024-12-28 20:53:31.056 INFO (Thread-3 (_listen)) [nuvo_simple] Attempting connection - “/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_EOBIb132J02-if00-port0” at 57600 baud

2024-12-28 20:53:31.058 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:31.058 ERROR (Thread-2 (_send_request)) [nuvo_simple] Unexpected port error when sending command.

2024-12-28 20:53:32.058 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:32.083 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:33.058 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:33.065 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:34.063 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:34.078 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:35.077 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:35.097 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:36.072 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:36.084 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:37.079 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:37.095 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:38.113 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:38.140 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:39.122 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:39.250 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:40.114 DEBUG (Thread-2 (_send_request)) [nuvo_simple] Sending “VER”

2024-12-28 20:53:40.243 DEBUG (Thread-3 (_listen)) [nuvo_simple] Received: b’\n#VER"NV-I8G FWv2.10 HWv0"’

2024-12-28 20:53:41.070 WARNING (MainThread) [homeassistant.setup] Setup of nuvo_simple is taking over 10 seconds.

2024-12-28 20:53:41.119 ERROR (SyncWorker_3) [nuvo_simple] This does not appear to be a supported Nuvo device.

2024-12-28 20:53:41.119 ERROR (SyncWorker_3) [custom_components.nuvo_simple] This does not appear to be a supported Nuvo device.

2024-12-28 20:53:41.126 ERROR (MainThread) [homeassistant.setup] Setup failed for custom integration ‘nuvo_simple’: Integration failed to initialize.

Is my certain Concerto not supported by nuvo_simple?
I’m connected directly to the Amp, should I be using the MPS4?

Hello @tofu713

Is my certain Concerto not supported by nuvo_simple?
I’m connected directly to the Amp, should I be using the MPS4?

I believe your Concerto would be supported by the nuvo serial integration https://github.com/sprocket-9/hacs-nuvo-serial

That integration supports the NV-I8G which your Nuvo seems to be identifying as. I did look up that model number though and it’s certainly confusing, as I do see the front of it just saying “Concerto” instead of “Grand Concerto” and it looks like maybe Nuvo has made several variants of the NV-I8G.

If that integration will not work as well, let us know and hopefully @sprocket-9 or I can add it to whichever integration it most closely resembles the others.

Hello @bmccrary and @sprocket-9
Although my Nuvo is detected as NV-I8G in nuvo_simple on the front of the amp the model printed is NV-18GM.
(Discontinued - Concerto Whole Home Audio System)

I used the same serial port (usb-to-rs232) that I has in nuvo_simple since it seemed to at least get feedback/communication.
(/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_EOBIb132J02-if00-port0)
However when trying in nuvo-serial I get an error “Failed to Connect” in the web GUI.

In debug messages I see the following when trying to establish connection:

2025-01-05 10:20:16.446 ERROR (MainThread) [homeassistant] Error doing job: Task was destroyed but it is pending! (<Task pending name='StreamingReader' coro=<AsyncConnection._streaming_reader() done, defined at /usr/local/lib/python3.13/site-packages/nuvo_serial/connection.py:614> wait_for=<Future pending cb=[Task.task_wakeup()]> cb=[AsyncConnection._streaming_task_done_cb()]>)
2025-01-05 10:20:20.851 ERROR (MainThread) [custom_components.nuvo_serial.config_flow] 
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/asyncio/tasks.py", line 507, in wait_for
    return await fut
           ^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/connection.py", line 676, in _message_response_reader
    message = await self._read_message_from_buffer()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/connection.py", line 719, in _read_message_from_buffer
    message = await self._reader.readuntil(self._eol)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/asyncio/streams.py", line 677, in readuntil
    await self._wait_for_data('readuntil')
  File "/usr/local/lib/python3.13/asyncio/streams.py", line 539, in _wait_for_data
    await self._waiter
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/connection.py", line 504, in send_message
    response = await asyncio.wait_for(
               ^^^^^^^^^^^^^^^^^^^^^^^
        self._message_response_reader(message_types), self._timeout
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/asyncio/tasks.py", line 506, in wait_for
    async with timeouts.timeout(timeout):
               ~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/local/lib/python3.13/asyncio/timeouts.py", line 116, in __aexit__
    raise TimeoutError from exc_val
TimeoutError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/config/custom_components/nuvo_serial/config_flow.py", line 120, in async_step_init
    self._nuvo = await get_nuvo_async(
                 ^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/__init__.py", line 35, in get_nuvo_async
    await nuvo.connect()
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 710, in connect
    await self._state_tracker.get_initial_states()
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 184, in get_initial_states
    await self._get_party_status()
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/connection.py", line 101, in wrapper
    return await coro(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/grand_concerto_essentia_g.py", line 245, in _get_party_status
    return await self._nuvo._connection.send_message(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        _format_set_party_host(0, False), SYSTEM_PARTY
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/nuvo_serial/connection.py", line 514, in send_message
    raise MessageResponseError(err_msg) from exc
nuvo_serial.exceptions.MessageResponseError: RESPONSEREADER: Timeout waiting for response to message: *Z0PARTY0

Hello… I have a Grand Concerto, and I am using something I have scoured through this long post to find out if anyone else is using… the HI 93A00-1 Serial Server. I am not using USB to RS232 (I couldn’t find anyone else using this combination, if you are out there, can you help me please???). I can not figure out how to write, or what the configuration is for the PORT information. My serial servers are set up as client and server (192.168.4.122 and 128), so I thought the proper way to represent the port was either http://192.168.4.122 (Or is it 128?): 50808 (50808 is the port number I have configured in the HAI serial servers… but NOTHING WILL WORK. I can’t connect to the NUVO. Yet, I can control the nuvo via the MQTT, and not this integration. What do I do? Do i just use the MQTT connection, or is there an advantage to get this to work with this integration? Thank you… I hope this isn’t too confusing… sorry if it is, I am a newb to all of this, especially HA. I REALLY appreciate all of you and all of your expertise and input! Thank you so much…

My best guess after taking a look at the manual would be to use TCP server mode, and use socket://192.168.4.122:50808 or whatever your server IP is.

Hey, the error message you included comes after successful connection and device mode check, so it does look like you have a Grand Concerto and hacs-nuvo-serial is the correct integration to use.

There’s often a few niggly issues when someone starts to use the integration for the first time due to some oddities in the stored config in the nuvo device. It’s best to use the Windows nuvo configuration software (available from that legrand link you included) to connect to your nuvo and load the included default configuration into the device for a clean slate then try the integration again.

If that doesn’t work I’ll need a full debug log to see what’s going on . Go the Settings → Devices and Services → Nuvo integration → Enable Debug logging and send the log.

The documentation can be found here GitHub - sprocket-9/hacs-nuvo-serial: Custom component to control a Nuvo Grand Concerto/Essentia G multi-zone amplifier via serial connection with socket://host:port the correct format to use.

As Brian says I’d go with TCP server mode using the IP address assigned to your Serial Server.

I’d also set this value to 0:

If you want to keep the connection between the 93A00-1 and your remote device always on, then set the value of Close Connection When Remote Idle to 0; otherwise, when the remote device is idle for the time specified, the 93A00-1 will terminate this connection.

Not sure what you mean by control over MQTT? If you have something else set up which talks to the nuvo, don’t be running both that and the integration at the same time as it will likely cause issues.

Hey @sprocket-9 that worked! I only actually used the Windows nuvo config software to download the current config and then just re-uploaded the exact same config and the integration worked.
Now on to the fun part of building my automations. :slight_smile:
Thanks!