Control Klipsch powered speakers (The Fives, The Sevens, The Nines and the McLaren editions) from Home Assistant over Bluetooth LE, through any connectable Bluetooth adapter or ESPHome Bluetooth proxy. No infrared, no cloud, no Klipsch app required after the one-time pairing.
| Entity | Notes |
|---|---|
media_player |
volume (36 hardware steps), mute, input selection, play/pause/next/previous (Bluetooth input) |
number |
bass, mid, treble (-10..+6 dB); subwoofer level when a sub is detected |
select |
placement (corner / wall / open); EQ preset and vocal mode on firmware that exposes them |
switch |
night mode, dynamic bass, auto standby, function sounds, subwoofer mute / phase, Hold Bluetooth connection |
Entities are created only for characteristics the connected firmware actually exposes, so the set differs slightly between models and firmware versions.
Volume, mute and input changes made on the speaker (knob, remote) are pushed to Home Assistant immediately via BLE notifications. Other settings are polled (default every 60 s, configurable).
- Home Assistant 2025.6 or newer with the Bluetooth integration.
- A connectable Bluetooth path to the speaker: a local adapter, or an
ESPHome Bluetooth proxy with
bluetooth_proxy: active: true. ESPHome 2024.3 or newer is required for pairing support. Any existing proxy will do; the closer it is to the speaker, the more robust the link. - The speaker must run the firmware that enables app control (The Fives: the two-step update via the "Klipsch The Fives Updater" app; current firmware 1.6.9).
The speaker drops any BLE controller that is not bonded about ten seconds after it connects, and it only accepts a new bond while it is in pairing mode (Bluetooth LED blinking). The integration therefore:
- connects and immediately asks the adapter/proxy to encrypt the link using the stored bond;
- if there is no bond yet, the config flow asks you to put the speaker into pairing mode (hold the Bluetooth button on the remote or the pairing button on the back for ~3 s) and retries.
The bond is stored on the speaker and on the adapter/proxy that made the connection. If Home Assistant later connects through a different proxy, that proxy needs its own bond; the integration logs a clear message and you can repeat the pairing by reloading the integration while the speaker is in pairing mode.
Home Assistant keeps the connection open. While it does, the Klipsch Connect phone app cannot find the speaker (the speaker serves one BLE controller at a time). Turn the Hold Bluetooth connection switch off to release the link for a configurable number of minutes (default 10) when you need the app.
- HACS → Integrations → ⋮ → Custom repositories → add
https://github.com/widapro/klipsch-ble-ha, category Integration. - Download Klipsch Bluetooth, restart Home Assistant.
- The speaker is discovered automatically when it is advertising; otherwise add it via Settings → Devices & services → Add integration → Klipsch Bluetooth.
Copy custom_components/klipsch_ble into your config/custom_components/
directory and restart Home Assistant.
- Status poll interval (15–900 s, default 60).
- Connection release duration (minutes the link stays released after turning the hold switch off, default 10).
- Allow power off over Bluetooth: exposes
media_player.turn_off, which writes input 0. Reported unreliable on some units; off by default.
- Power on is not possible over Bluetooth on current Fives firmware (the app's PowerToggle characteristic is not present). The speaker wakes from standby on signal, from the remote, or from the knob. In standby the BLE link stays up and volume/mute/input writes are accepted, but they do not wake it. Consider turning Auto standby off if you want the speaker always ready.
- Input changes made with the knob on the speaker are not pushed by the firmware; they are picked up by the next poll. Remote-control input changes are pushed immediately.
- The firmware reports no "standby" flag, so the media player shows on whenever the link is up.
Protocol reverse engineering by the authors of
KlipschRemote (Apache-2.0) and
fives-api (MIT). See NOTICE.
This project is not affiliated with or endorsed by Klipsch Group, Inc. Licensed under the Apache License 2.0.
