Hi everyone,
I’d like to share a new open-source project I’ve been working on: ESPHome Yamaha Serial, an ESPHome external component that brings older Yamaha AV receivers into Home Assistant using their RS-232 serial interface.
Many older Yamaha receivers are still excellent pieces of hardware, but they lack modern network integration. Rather than replacing a perfectly working receiver, this project uses an inexpensive ESP32 or ESP8266 with an RS-232 level converter to make it accessible through Home Assistant.
Everything works locally, without cloud services, MQTT, or Yamaha’s network API.
Features
The component provides native ESPHome entities, including a media player, switches, selects, numbers, sensors, and diagnostic entities.
Implemented functionality includes:
-
Power, volume, and mute control
-
Native Home Assistant media player functionality
-
Input source selection
-
DSP program / sound mode selection
-
Main Zone and Zone2 control
-
Absolute volume control in dB
-
Pure Direct, Audio Select, and Night Mode
-
Tuner presets and controls
-
Speaker A/B, sleep timer, and decoder settings
-
Extended configuration controls such as bass, treble, speaker distances, and display dimmer (depending on the receiver profile)
-
System Memory preset selection
-
Raw Yamaha serial command support for advanced functions
The implementation uses a non-blocking UART parser, command queueing, timeout handling, automatic retries, and receiver status updates.
Diagnostic entities are included to help troubleshoot serial communication and receiver availability.
Supported receiver families
The component currently includes profiles for:
-
RX-Vx500: RX-V1500, RX-V2500
-
RX-Vx600: RX-V1600, RX-V2600
-
RX-Vx700: RX-V1700, RX-V2700
-
RX-Vx800: RX-V1800, RX-V3800
Automatic model detection and family-specific command mappings are implemented.
Other Yamaha receivers with compatible RS-232 protocols may work as well.
Important: These profiles are implemented, but not all receiver models and functions have been verified on real hardware yet.
Home Assistant integration
The basic ESPHome implementation already provides a native media_player entity for everyday control.
Since ESPHome’s media player API currently lacks native source and sound-mode selection parameters, these functions are also exposed through dedicated select entities.
I’ve additionally included an optional Home Assistant companion integration, installable through HACS as a custom repository, which combines these controls into a single receiver-style media player with native source and sound-mode selection.
Hardware requirements
All you need is:
-
An ESP32 or ESP8266
-
A suitable RS-232-to-TTL converter (such as a MAX3232 module)
-
A Yamaha receiver with a compatible RS-232 interface
Important: Yamaha RS-232 ports use real RS-232 voltage levels. Do not connect the receiver directly to ESP GPIO pins.
Installation
Add the external component to your ESPHome configuration:
external_components:
- source: github://memphi2/ESPHome-Yamaha-Serial
components: [yamaha_serial]
The repository includes ready-to-use basic and full configuration examples, wiring documentation, receiver profiles, and troubleshooting instructions.
ESPHome 2026.9.0 or newer is required.
Project status: Beta
The project is still in beta.
The software architecture, receiver profiles, command handling, and Home Assistant entities are implemented, but additional real-world testing across different Yamaha models is needed.
In particular, I’d appreciate feedback on:
-
Compatibility with different Yamaha receiver models
-
Input and DSP command mappings
-
Zone2 behavior
-
Extended receiver functions
-
Serial communication and status reporting
If you have a compatible Yamaha receiver and are interested in testing, please give it a try!
Bug reports, suggestions, UART debug traces, and pull requests are very welcome.
Repository, documentation, examples, and issue tracker:
Hopefully this helps keep some perfectly good older Yamaha receivers useful in modern Home Assistant installations.
Thanks for testing and feedback!