ESPHome Yamaha Serial – Local RS-232 Control for Yamaha AV Receivers

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.

GitHub: GitHub - memphi2/ESPHome-Yamaha-Serial: ESPHome external component for Yamaha AV receivers over RS-232 serial, with profile-driven command mapping, native entities and diagnostics · GitHub

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!

Crazy timing. I just did the same thing over the weekend but with a raspberry pi and a usb-to-serial dongle GitHub - zqushair/yamaha-rs-232c · GitHub and I just added support for GeekMagic Pro screens to display info from the receiver.