Control Russound CA-66 on HassOS with RNET using Ser2net and Portainer

Since most don’t have access to Portainer now, I have created an addon and I think it works. However my skills are limited and I have not figured out how to share it from github for it to intergrate directly into the Home Assistant Add-on store. Nonetheless, Here are the files. You can simply create a local add-on folder, paste the files in it and check for updates in the add-on store…

Here is how in more details:

  • Create a new directory called russound in your local add-on folder : This is where you will store your custom add-on files. You can use the Samba add-on to access the add-on folder from your computer. The path of the add-on folder should be /addons or /usr/share/hassio/addons

  • Copy the files from this repository to the folder you just created. More specifically, you need the Dockerfile, config.yaml, run.sh, and ser2net.conf

The add-on should now be available in the add-on store as a local add-on.

  • In the Add-on store, you should now see this add-on.

  • Select Check for updates.

  • Install and start

  • Check the logs to make sure it runs correctly.

  • Edit the Home Assistant configuration file: In your Home Assistant Config folder, open the configuration.yaml file and add the following lines:

media_player:
  - platform: russound_rnet
    host: 127.0.0.1
    port: 3333
    name: Russound
    zones:
      1:
        name: Bathroom
      2:
        name: Living Room
      3:
        name: Kitchen
      4:
        name: Outdoor
    sources:
      - name: Cable
      - name: TV
      - name: Android
      - name: Bluetooth

.
.
.
.
Below is the old information in case you are still looking for other options…

I recently migrated my to HassOS and had to reconnect my Russound CA-66 with Home Assistant. I had a guide for the old Home Assistant without docker (Hassbian) here

First off, a (non chinese knock-off) USB to RS-232 prolific or FTDI is needed. I found one on amazon for about 15$

  1. Make sure Portainer is installed with the community add-ons

  2. In the Home Assistant Config folder, create a new folder called ser2net and create a new file called ser2net.conf. it should look like this : /config/ser2net/ser2net.conf

  3. Edit and save this file with this content:

BANNER:banner:\r\nser2net port \p device \d [\s] (Debian GNU/Linux)\r\n\r\n
3333:telnet:0:/dev/ttyUSB0:19200 8DATABITS NONE 1STOPBIT banner
  1. In Portainer, create a new container with the image : jsurf/rpi-ser2net:latest

  2. Configure the container with the following:

  • Publish all exposed network ports to random host ports (Or else, if you want to specify it, the image uses port 3333)
  • Command: '/bin/sh' '-c' '/usr/sbin/ser2net -d -u'
  • Entrypoint: /usr/bin/entry.sh
  • Bind Volumes: /etc/ser2net.conf with host: /mnt/data/supervisor/homeassistant/ser2net/ser2net.conf
  • Add device for host and container: /dev/ttyUSB0 (Or whatever maps to that usb-to-serial device)
  • Deploy and start the container (I have it set to automatic start on reboot)
  1. Edit the config file for Home Assistant to add the Russound RNET controller (Edit the sources as needed):
media_player:
  - platform: russound_rnet
    host: 127.0.0.1
    port: 3333 
    name: Russound
    zones:
      1:
        name: Bathroom
      2:
        name: Living Room
      3:
        name: Kitchen
      4:
        name: Outdoor
    sources:
      - name: Cable
      - name: TV
      - name: Android
      - name: Bluetooth
  1. Restart Home Assistant and it should work. I combined my sources with the mini-media-player in Lovelace, which makes it a bit cleaner in my opinion.

Untitled

This is the configuration for the card in case someone is wondering:

entities:
  - entity: media_player.spotify
    group: true
    hide:
      power: true
    info: short
    source: icon
    type: 'custom:mini-media-player'
  - entity: media_player.kitchen
    group: true
    hide:
      controls: true
    icon: 'mdi:speaker'
    type: 'custom:mini-media-player'
  - entity: media_player.living_room
    group: true
    hide:
      controls: true
    icon: 'mdi:speaker'
    type: 'custom:mini-media-player'
  - entity: media_player.outdoor
    group: true
    hide:
      controls: true
    icon: 'mdi:speaker'
    type: 'custom:mini-media-player'
  - entity: media_player.bathroom
    group: true
    hide:
      controls: true
    icon: 'mdi:speaker'
    type: 'custom:mini-media-player'
show_header_toggle: false
title: Sound
type: entities

3 Likes

Just want to say thanks so much for this walk-through… as the OP for the Russound RNET integration with SmartThings, I just made the switch to HA and love the platform! :+1:

Glad it could help you :slight_smile:

I want to switch from Smarthings to Home Asssistant to control my Russound CAM 6.6. Trying to follow your instructions but sadly I am a total noob with Docker and creating images. I am stuck here

In Portainer, create a new container with the image : [jsurf/rpi-ser2net:latest] https://github.com/JSurf/docker-rpi-ser2net).

I have installed Portainer to create the container but I am dumbfounded to create the image from the github repository to add to the container. Can you please shed some light on how to do this. I would be so grateful for all your help. Thank you.

here are some screenshots of my settings for this container in portainer. This should help you set it up.

Thank you for the screenshots. I managed to create the container as per instructions but once it starts it stops. I check the logs and get the following:

/bin/sh: 1: /usr/sbin/ser2net: not found

I created the ser2net.conf file and saved in the correct new folder ser2net in the home assistant config folder. Does the content of the file require to be in a special format?

Edited the configuration.yaml file (edit config file Home Assistant).

I realize it is something stupid which I am not able to figure out. Please help. Thanks again.

Not sure exactly what is the problem. If you created and edited the ser2net.conf file in windows notepad software, that could be it. I think the encoding from notepad might cause problems. You can try to create and save the file in notepad++ (free software) instead. That was a problem for me once with another docker container.

I tried Notepad++ and I get the same result.

/bin/sh: 1: /usr/sbin/ser2net: not found

I am definitely missing something. I check the /usr/sbin folder in hassio and there is no ser2net folder. I created the new folder in config/ser2net with the new file. Do I need to install ser2net prior? I am so confused with this. My apologies for being such a noob. This should be easy and I cannot figure this out. Very frustrating. Your help is most welcome. Peter

Like you said, it is probably something little. I troubleshooted a bit when I installed it as I am also learning Docker.

The file should be in the config/ser2net folder before starting the container. Basically the container looks for this file as an override for the configuration file when it starts up.

Not sure if you have it by default, but I have this setting in the environment…

Name: PATH
Value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Other than that, we can always make it work by setting it up manually in the container, but it’s not ideal…

Checked PATH and is exactly as you have indicated. I am totally bummed. From what I understand part of the the docker file will read the newly created ser2net.conf file. Correct? Perhaps this is a very dumb question but don’t you need to install the ser2net program prior or is this taken care of in the docker file?

What I have done so far in my endeavor to migrate Russound to Home Assistant is installed HassOS on a RPi 4 with a static ip address. I have added samba, terminal &SSH and portainer. Is there any other commands I need to enter on the HassOS command line prior to following your instructions? I know my serial/usb cable works when I was using it with Smarthings integration before it went to hell. I am trying to find what am I missing for this to work?

If you think to do this manually is the way to go can you please help me do this. I would be so grateful.

Yeah, I thought that the PATH was a default setting. It’s too bad it does not work for you, but the problem seems to be with the binding between the container and the configuration file.

If you want do it manually, basically follow my first post except for the volume binding; leave this one blank.

You can also manually bind a port under the manual network port publishing, select publish a new network port and map host 3333 to container 3333

I have it set up to restart every time it is down using the settings in the restart policy tab.

Deploy and start the container.

Select the the container you just built, choose on the console tab and click the Connect button.

You should see a terminal.
From here, you will have to run:
apt-get update
apt-get install nano -y
nano /etc/ser2net.conf
From here, you should see some text in the text editor. Delete this text (or comment out the text that is not commented. If I remember correctly, if there are blank lines, they should be commented too). Then paste this (at the end of the file If you commented the text).

BANNER:banner:\r\nser2net port \p device \d [\s] (Debian GNU/Linux)\r\n\r\n
3333:telnet:0:/dev/ttyUSB0:19200 8DATABITS NONE 1STOPBIT banner

Save the file (Ctrl+S) and exit (Ctrl+X)

Basically the Volume binding that you had problems with, was replacing this file with the one located in the Home Assistant config/ser2net folder and replacing it in the container every time it runs. The binding is supposed to make it is easier for you to edit, plus if you run a backup, reinstall Portainer or the container, you should be up and running faster.

exit the terminal: exit

Restart the container and check the logs.

You will need to restart Homeassistant for it to work.

I just did it this way with a new container and it works with my machine. Good luck :slight_smile:

Manually bind the port and setup to restart every time the container stops. Deployed the container. Went to the console click connect and get failure to connect wait for container to restart. Press connect again and I get the same message. I cannot access the terminal. Any thoughts?

Again, I am very grateful for your time to help me out.

That’s odd, is there anything in the log? before you edit the file in the terminal, it should be able to start up and give you a couple errors in the log. Also, did you make sure that in the Home Assistant supervisor, you have disabled the protection mode for Portainer as required? If you don’t have anything else installed in Portainer, you could try rebuilding it or uninstall and reinstall it.

Sorry for the delayed response busy at work. I finally got it working by installing Home Assistant Supervised instead of HassOS. Thank you for your guidance.

I just installed HACS and the mini media player. Just want to confirm the script bove for the mini player is put in the configuration.yaml file. Correct?

It takes about 30 minutes after restarting home assistant to show the power status of each Russound zone. Is this normal? These are the logs:

Could not update status for zone 2

7:18:43 PM – (ERROR) russound_rnet - message first occurred at 6:36:13 PM and shows up 1414 times

Did not receive expected Russound power state for controller 1 and zone 2.

7:18:43 PM – (WARNING) /usr/local/lib/python3.8/site-packages/russound/russound.py - message first occurred at 6:36:13 PM and shows up 1414 times

Updating russound_rnet media_player took longer than the scheduled update interval 0:00:10

6:36:36 PM – (WARNING) Media player

Glad you could get it up and running! For the errors in the log, I used to have Hassbian which would have been the equivalent of Debian with the Home Assistant Core. With that setup, I used to have those two errors occur for a couple of my zones, but it never affected the speed of startup or the control of the Russound system by Home Assistant. Other things did however insanely slow down my startup, like the AsusWRT platform that I had to remove, but that’s another story… I simply ignored the Russound error, as everything was working smoothly. I just assumed that it was an intermittent communication error. Now that I am running HassOS, the error never seems to appear.

To install the mini player, you can follow the guide here. Basically place a JavaScript file in the config/www and a reference in the configuration file.

Then in the lovelace dashboard, simply create a new custom card and that’s where you would paste and edit the configuration that I had shared.

Aside from those pesky errors everything is running. I am really happy thanks for all your help.

1 Like

Hey all, I just acquired 2 Russound CAV6.6 amps from a family friend and stumbled across this thread with the hopes of integrating them with my existing HA setup so that I can power a few rooms in the house using a Sonos Connect as the input device. I’m not running a Docker container with ser2net as described here, but instead am running ser2net on a secondary Raspberry Pi which is then connected to one of the CAV6.6’s via a USB → Rs232 cable. Looking at my HA logs, I see lots of “Could not update status for Zone 1” and “Did not receive expected Russound power state for controller 1 and zone 1” errors.

Details on my setup:
I’m starting ser2net (on the secondary pi) like this: /usr/local/sbin/ser2net -d -u. I’m using the same string posted above in the /etc/ser2net.conf file. If I attempt to telnet into the pi (from another machine) using it’s IP and port, I successfully connect and get the banner message. I took this to mean I probably have ser2net setup and configured correctly??

On the HA side, I’ve got this in my configuration.yml file:

media_player:
  - platform: russound_rnet
    host: 192.168.1.208
    port: 3333
    name: Russound
    zones:
      1:
        name: Bar
    sources:
      - name: Sonos

I’ve even tried connecting the 2nd CAV6.6 to the Pi just to make sure there wasn’t something weird going on with the first amp but I get the same behavior.

If anyone has ideas or troubleshooting steps I’d love to hear it. It seems like I’m close, but maybe missing a step somewhere. Thanks!

Your setup might be working just fine. I used to have those errors with certain zones using Hassbian (Now known as Home Assistant Core in Debian) and it worked perfectly fine except for those random errors in the log. Try to control the volume or power with Home Assistant.

Good point, although looking at HA I realize I don’t have any controls available for that entity. Hmm… Do I need to create a custom Lovelace card like you did in order to control things?