Skip to content

v2.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Jul 07:02
b08b013

Highlights

Version 2.0.0 adds an optional gRPC transport that speaks the...

...BRAVIA Connect control plane...

on your local network (port 55051), alongside the existing TCP "External Control" legacy mode (port 33336, no Sony sign-in). After a series of public pre-releases, I'm dropping the experimental and promoting gRPC to beta.

There are still bugs, but it's stable enough for me to feel comfortable pushing it out as a beta feature in this major release. It is the recommended setup choice for HT-A9M2 and for future similar devices that expose BRAVIA Connect — there are still bugs, and will still labeled a Beta Feature while parity with TCP and firmware coverage keep evolving.

Primary validation is on HT-A9M2 firmware 001.454. TCP mode remains fully supported if you prefer no Sony sign-in.


Before you upgrade / switch transports

  • Staying on TCP: Existing 1.7.x TCP installs can upgrade in place. No re-setup required.
  • Trying gRPC: Transport is chosen once at setup. Remove the integration, restart Home Assistant if needed, add it again, choose gRPC — BRAVIA Connect (recommended), and complete Sony sign-in. Entity sets differ per transport — see Removal and Transport modes.
  • Legacy option: Entries that used Enable gRPC state sync migrate automatically to gRPC transport on reload.
  • Setup walkthrough: gRPC setup guide (Sony sign-in, Chrome Network redirect, Seeds options).

Beta Feature: gRPC is the recommended transport and still evolving — expect parity gaps vs TCP and occasional changes across releases or firmware.


What's new in gRPC

gRPC connects with a one-time Sony account sign-in in the setup flow. Session keys refresh automatically when a refresh token is available. Control and live updates use the local BRAVIA Connect gRPC session (notify stream); optional Seeds cloud reads fill in settings the device does not return locally.

Media player

  • Power, volume, mute, and input source selection (including HDMI mapping fixes from the betas)
  • Sound field mode on the media player (Dolby Speaker Virtualizer, Neural:X, 360SSM, and related modes)
  • Now-playing metadata — title, artist, album, duration, position, album art when the source provides it
  • Play / pause / next / previous on Spotify, Bluetooth, and AirPlay when those transports are active
  • Source-filtered read-only attributes (TV/HDMI audio format, Bluetooth codec/signal, Spotify playlist status, spatial flags, and more)
  • Dynamic source list when the device publishes available inputs
media_player_soundSelect media_player_attributes_hdmi_in media_player_attributes

Sound & system entities

Mapped entities are driven by device capabilities and the gRPC ↔ TCP mapping. Exact set depends on model, firmware, and subwoofer detection. Full table: entities.md.

Category Controls
Levels Rear level; bass (min/mid/max without sub); subwoofer level (−10…10 with sub)
Voice Voice enhancer; Voice Zoom on/off + level
Sound processing Sound field on/off; night mode; dual mono; DRC; Auto Volume; DSEE Ultimate; DTS Dialog Control
Spatial / IMAX Sound field mode (media player); 360SSM height; center speaker mode; IMAX Enhanced
Sync HDMI AV sync; TV/ARC AV sync
Display / CEC Display brightness (bright / dark / off); HDMI CEC; HDMI CEC power-off sync
System Network/BT standby; auto standby*; auto update*; external control*; HDMI ARC (TV) as on/off switch; HDMI standby through*
Bluetooth Connection quality select
Diagnostics Device name, serial, timezone, wired MAC, IP address, firmware update, room calibration state

* Ships disabled by default until confirmed on your firmware (or matches TCP’s disabled defaults for companion power/volume entities). Key sound entities that were off in early betas are enabled by default in this release.

Seeds cloud reads (opt-in)

Some settings accept local gRPC writes but are not readable over local gRPC on current firmware (DRC, Auto Volume, DSEE Ultimate, 360SSM height, display brightness, and others). They may stay unknown until you:

  1. Enable Read notify-only settings from Sony Seeds cloud (grpc_seeds_poll) in integration options, or
  2. Change the setting once from Home Assistant, or
  3. Rely on Home Assistant restoring the last known state

Seeds uses the same Sony cloud API BRAVIA Connect uses for those reads — discovery credit @mafredri. Details: seeds-cloud-states.md.

Reliability & Home Assistant quality

  • More reliable gRPC exec after standby / idle (fresh preflight and session random per command)
  • Avoids keepalive pings that caused Quad disconnects on some setups
  • Entity availability refreshes when the gRPC session connects or drops
  • Streaming transport controls stay available when the device reports playback availability with reason none (Spotify / Bluetooth / AirPlay)
  • Alignment with Home Assistant Bronze practices and harder entity availability / parallel-update behavior

Known limitations

  • Parity gaps vs TCP: Bluetooth pairing button, HDMI passthrough, temperature, and some network diagnostics remain TCP-only — see parity gaps.
  • Transport switch requires remove + re-add (entity sets differ).
  • AirPlay cannot be selected as an input on either transport (casting activates it). gRPC omits it from the source list unless it is already active; TCP left it visible even when inactive.
  • Notify-only / Seeds paths may show unknown until Seeds, a write, or restore — expected on fw 001.454.
  • Model coverage: gRPC is verified on HT-A9M2; other Theatre models vary (see Device compatibility). Sony can change firmware behavior at any time.

Documentation


What's Changed

✨ New features

🐛 Bug fixes

🚀 Enhancements

🧰 Maintenance

📚 Documentation

⬆️ Dependency updates

Routine CI and lockfile updates via Renovate (setup-uv, paths-filter, Python 3.14.6 image, lock file maintenance).


Full changelog: v1.7.1...v2.0.0