Published on: May 14, 2024
Connecting my non-networked Bose AV35 to Home Assistant
I’ve always aimed to automate everything in my home, it only convenient if its everything. Recently, I inherited a Bose Lifestyle 135 home entertainment system based on the AV35 console. This soundbar system, launched in 2011, posed a unique challenge: it didn’t fit nicely into my existing Home Assistant setup due to its lack of network functionality and incompatibility with modern HDMI CEC controls.
My home entertainment system is primarily controlled using Home Assistant, which integrates various devices through HDMI CEC. However, the Bose Lifestyle 135, being an older device, did not support these modern protocols. It was not an option to manually control the volume and other functions using the original remote. Determined to automate this system, I knew there had to be a better way.
Initially, I considered emulating a remote’s IR signals, but this method required line-of-sight and provided no feedback from the console. The included remote (RC35T-L) used RF for bidirectional communication, so I hoped to replicate this. After extensive research and some dead ends, I concluded this wasn’t feasible for my level of knowledge on the topic. I did eventually discover an RS232 port on the console. This port, combined with a protocol document I found online, offered a promising solution.
To interface with the RS232 port, I used an ESP32 microcontroller, a UART to RS232 adapter, and a 3.5mm breakout board. These components were inexpensive and readily available on Amazon. After soldering connectors and setting up the hardware, I could start programming.
The first step was to understand the protocol used by the Bose system. The protocol document detailed the structure of command packets, which included a length byte, status byte, operation codes, and payload. Using this information, I wrote code for the ESP32 to send and receive these packets.
Next, I integrated the ESP32 with Home Assistant using MQTT. I set up MQTT topics for volume control and state updates, following the Home Assistant MQTT discovery protocol.
You can find the full code for this project on GitHub. It’s not at all quality code, but for now it works.
Here are the key resources and documentation that helped me along the way: