Using the RS-232 "automation" port on older Russound whole home audio systems, we can control them using a low-power computer such as a Raspberry Pi via a USB to serial adapter in order to retrofit modern day "smart" capabilites. RNET-Pi is a Node.JS server created to act as a proxy between smart devices and these legacy audio systems.
- Front-end Android app -- Use your mobile phone or tablet to control your Russound system. (Google Play)
- IFTTT support -- Allows the ability to automate your system using IFTT or utilize assistants such as Google Home or Alexa.
- Volume limit -- Individually limit zones to a maximum volume.
- Chromecast Audio Integration
- Display currently playing media on wall plate displays.
- Control Chromecast using existing wall plates.
- (Configurable) Automatically activate zones and switch to appropriate source when Chromecast begins playing media.
- (Configurable) Automaticallly turn off zones using a Cast device when media is no longer being played.
- Sonos Connect support.
- Direct integration with Alexa and Google Home opposed to using IFTTT.
- Web interface
In theory, this should work with the CAS44, CAA66, CAM6.6, and CAV6.6, but has only been tested with the CAV6.6. If you run into any issues with other devices, feel free to open an issue. The more support, the better.
- Raspberry Pi or similar device running Linux This software most likely will work on Windows or macOS, but it's only been tested on Linux
- Male USB to male RS-232 adapter (Amazon) Not a specific recommendation, just an example.
- Verify your Raspberry Pi is up to date by running:
sudo apt update && sudo apt upgrade
- Install Node.JS:
sudo apt install nodejs
- Install forever-service in order to have RNET Pi run automatically at boot:
sudo npm install -g forever-service
- Download RNET Pi:
git clone https://gitlab.com/zachcheatham/rnet-pi.git
cd rnet-pi
- Download and install required libraries:
npm install
- Install RNET Pi to a service for autostarting at boot:
sudo forever-service install -s ./src/app.js rnet-pi
- Run the server once to generate a config file
npm start
Wait for startup to complete^C
- Determine the device path of the serial adapter.
The adapter should not be connected at this point!
- Get a current listing of devices:
ls /dev/
- Connect the RS232 adapter to the Russound device's serial port and the Pi's USB port.
- Get another listing of devices:
ls /dev/
- Compare results to determine the newly connected adapter. For example, my adapter is
/dev/tty-usbserial1
- Get a current listing of devices:
- Open the configuration file for editing:
nano config.json
These are low level config options that you shouldn't have to ever edit again. - Replace the
serialDevice
property by replacing the existing value/dev/tty-usbserial1
with the/dev/
path you determined in step two. There's a good chance your adapter will by the same path. - [Advanced Users] Set the address and port you want the server to bind to here. If you don't know why you would change these, you can leave them alone.
- Save and exit the configuration file by pressing
CTRL+O
followed byCTRL+X
- If you want to be sure the server starts up successfully, run
npm start
to run the server in your current console. This will close when you log out. - If you see
Connected to RNet!
in the terminal, everything is probably working normally. You can now exitCTRL+C
so we can start the server as a service. - Start the server as a service:
sudo systemctl start rnet-pi
The RNET RS-232 protocol has no zone naming, method of determining which zones and sources have physical connections, or method to retrieve the names of sources. All of that is up to you. Before you can start using this system, you must connect to this newly created server using the RNET Remote app and add zones and sources.