Lots has been going on over the past few weeks… final PCB designs have been sent out for production. A new product web site is reaching completion leaving final assembly and testing left before I can start shipping the Myro:Bridge (that is going to be the final name). As promised, I have a video of the newest firmware which offers Russound RNET to Apple iTunes control. This is like the Russound RNET to Sonos except that you can pair, control and get metadata two and from Russound Keypads via iTunes. Enjoy!
(This product is now available for purchase)
While it was possible to use an Arduino duemilanove (Atmel 328 chipset) for this project (See Part 1), I was really limited due to the 2K of RAM. It was fun trying to optimize code to get things to run in that amount of memory, however, it caused me to not be able to expand on functionality and features. I have upgraded the project to an Arduino MEGA (Atmel 1280 chipset). This platform gives me up to 8K of RAM — which should be more than enough memory (famous last words).
A lot of people have asked me to explain what exactly I’m doing with the Arduino. It’s pretty simple. First, I’m using a RS232 shield (not shown) to capture RS232 commands from the Russound Controller. When a key is pressed on the Russound keypads I read the RS232 data and either ignore or react to the events. Currently, I’m looking for +, -, Next, Previous, Play/Pause, Menu events. I plan on using the Menu button to offer deeper content browsing menus (need to sniff the RS232 or wait for Russound to publish protocol). The + & – buttons will allow to scroll playlists and the rest of the transport buttons are self explanatory.
// Example RNET Next Track Event: F0 0 7D 7 0 0 7F 5 2 1 0 2 1 0 E 0 0 1 7 0 1 2A F7 |
Since the Sonos is a uPnP based system there is no IR or way to traditionally control it. Everything needs to be done via HTTP calls. I’m using an Ethernet Shield to translate the RS232 events to uPnP messages. The biggest challenge has been parsing the huge amounts of VERY VERBOSE SOAP-based notification messages. I parse the data real time, looking for strings that I want to store (things like playstate and metadata).
To make matters worse, Sonos is URL encoding XML data inside of an XML structure. So writing a simple XML parser is not possible. You have to look for things like &lt; for a less-than bracket (<). There were times I wanted to scrap the whole project because of this due to the limited RAM and string utilities — it really makes things a lot harder to deal with.
// Example of nested URL encoded XML: <Event xmlns="urn:schemas-upnp-org:metadata-1- 0/AVT/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-10/"> <InstanceID val="0"><TransportState val="PLAYING"/ ... |
When I get a notification message, I package it up into the RNET protocol and send it back into the Russound controller, which gets displayed on the keypads and automation systems that use that data (like Myro:Home which is connected to a HAI OmniPro II). Since uPnP uses a subscription model, I also need to keep subscription expiration timing so I can renew the subscription. It’s basically a client (outgoing to the Sonos to send subscription requests) and a server (to receive incoming notification events from Sonos). Then I have to deal with all the HTTP issues, like if it fails to renew or I have connection issues, I have to clean up and start the connection process all over again.
This project is now code complete and any new features will be made in a future revision. I plan on creating a custom PCB — any interest?
If you have any questions or comments feel free to post them in the comments section below!
(This product is now available for purchase)
Also, check out PART 2, which goes into more details >
Here’s a sneak peak at my latest project — the RNET to Sonos Bridge. All coded using an Arduino and Ethernet Shield. What this little device allows you to do is control a Sonos device using any Russound whole house audio system that supports RNET sources. It allows next, previous, play, pause and I’m working on playlist access and support. Current track metadata gets sent to these keypads as a multi-field message.
I’m pretty much code complete but I’m running into a few memory issues… The Arduino only has <2K of available RAM that I can work with. I have an Arduino Mega (which offers 8K) on order to see if that solves things. I think I can still optimize my code to make it work with the 328.
I’ll post more when I get it 100% stable.
Update: Got it working! With about 500bytes left of RAM on the 328 chipset… this was a fun little project. Below is a video:
Also running on E6 Color Keypads:
Here is a sneak peak of the Myro:Home iPhone application. As you can see, progress has been coming along. I’ve been getting the design finalized and now I’m just tweaking the look and feel a bit. The mobile framework has also been set in the core Myro:Home application which acts as a server on your home network. The iPhone version connects into Myro and loads and controls the HAI panel via a secure channel.
The key focus has been getting control of your home via the iPhone in the quickest time possible. As it works now, I can load and control in less than 3 seconds (if on WIFI).
– MYRO CONTROL – Myro:Home

Part of the gearing up of Myro Control's launch, I have been busy learning how to build, license, and release Windows XP Embedded images. My plans are to offer Myro Control UI on a vast variety of platforms starting with in-wall and tablet touchscreens. The reliably and speed of Windows XPe make it a no brainer. The image is stored on DOM (Disk-On-Module's) so no hard drives to crash, overheat or suck up battery life. I am currently building a Samsung Q1 XPe build of Myro Control (will post videos soon) and will also be using an OEM of a popular tablet.
I'm back into R/C Planes (my next one is the Micro-Telemaster). I did find out that getting into electric park flyers requires using Li-Poly batteries that require expensive chargers which seem to only run on 12-volt DC power supplies. Ideally, ones that can go up to 10A, but since my needs are only 2-3 Li-Poly cells, a 5A, 12-volt DC power supply works fine. The Hobbico 12v, 10A power supply costs over $80 and my version costs under $25! Check out the video above for the details. You'll need this Power Supply