v2.0-beta1
Pre-release
⚠️ Experimental — read before installinggRPC transport mode is experimental. It targets the BRAVIA Connect control plane (the same path Sony's phone app uses) and has been tested primarily on HT-A9M2 firmware 001.454. Sony can change or break this protocol at any time; expect parity gaps,
unknownentity states, and breaking changes in future releases.Before you test
Delete your existing Bravia Theatre integration first (Settings → Devices & Services → Bravia Theatre → ⋮ → Delete). Do not upgrade in place — TCP and gRPC expose different entity sets, and leftover entities or config can cause confusing duplicates or stale automations. After deleting, restart Home Assistant, then add the integration fresh and choose gRPC at setup.
You will need to sign in with your Sony account during setup. Session keys refresh automatically when possible.
gRPC transport mode (new)
This release adds an optional gRPC transport that speaks the BRAVIA Connect control plane (h2c on port 55051), alongside the existing TCP legacy mode (port 33336, no Sony sign-in). Transport is chosen once at setup.
Setup & authentication
- Config flow transport selector: gRPC (experimental, recommended) vs TCP (legacy)
- In-integration Sony Seeds OAuth (PKCE) → per-device session keys
- Automatic session key refresh when a refresh token is available
- One-time migration from legacy "Enable gRPC state sync" option → explicit
transportin entry data external_controlensurement at setup so hybrid reads/writes work
gRPC client stack
- Authenticated GetStatesWithAuth (app-sequence HMAC signing), ExecCommandWithAuth, and StartNotifyStates notify stream
- Session lifecycle: ConfirmSignin → ConfirmKeys → GetNonce → GetSessionRandom → rolling per-message HMAC
- Reconnect loop re-seeds state after BRAVIA Connect evicts sessions
Media player (gRPC)
- Power, volume, mute, and input source selection
- Sound field mode select (
sound_setting.sound_effect) — Dolby Speaker Virtualizer, Neural:X, 360SSM, etc. - Now-playing metadata — title, artist, album, duration, position, album art URL
- Play / pause / next track on Spotify, Bluetooth, and AirPlay (when active)
- Read-only playback attributes filtered by source:
- TV/HDMI: audio format, channel, sampling rate, HDMI error, no-audio flag
- Bluetooth: codec, device name, signal strength
- Spotify: playlist name, status
- Any source: 360RA, upmixer, virtualizer flags
- Dynamic source list when the device publishes available inputs
Sound & speaker settings (~40 mapped entities)
| 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 toggle, 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 |
| System | HDMI CEC, network/BT standby, auto standby*, auto update*, external control*, eARC*, HDMI standby link* |
| Bluetooth | Connection quality select |
| Diagnostics | Device name, serial, timezone, wired MAC, IP address, firmware update, room calibration state |
* Ships disabled by default — path verified but semantic parity with TCP not fully confirmed.
Entity model & parity
- Canonical gRPC path → TCP feature → HA platform mapping table drives generic switch/select/number/sensor factories
- TCP read-back seeding for notify-only gRPC paths (DRC, eARC, DSEE Ultimate, 360SSM height, etc.) that ExecCommand can write but GetStates/notify cannot read on current firmware
- Unique ID suffixes aligned with TCP where features bridge — automations can survive a transport re-add
- TCP-only extras remain on TCP transport: Bluetooth pairing button, HDMI passthrough, temperature, network mode/DHCP/region/language sensors
Documentation & tooling
- Protocol reference: docs/sony-grpc-reference.md
- Entity mapping & parity gaps: docs/grpc-tcp-mapping.md
- Optional CLI for Sony Seeds OAuth / session key extraction: scripts/grpc/README.md
- README slimmed; reference content split into tracked docs
Known limitations (gRPC)
- Notify-only paths: DRC, Auto Volume, eARC, DSEE Ultimate, 360SSM height, auto standby, etc. are writable but may show
unknownuntil changed, TCP-seeded, or restored from HA — expected on fw 001.454 - Transport switch requires remove + re-add (entity sets differ per mode)
- AirPlay is detect-only — appears when a client casts; not selectable via ExecCommand
- Previous track / seek not supported
- No Bluetooth pairing button, HDMI passthrough, temperature, or network diagnostic selects over gRPC
What's Changed
✨ New features
- Add gRPC transport mode with Sony Seeds OAuth and mapped entities @steamEngineer (#127)
Full diff: v1.7.1...v2.0-beta1.