Control your Klipsch powered speakers from your computer — over Bluetooth LE. The Fives · The Sevens · The Nines (incl. McLaren) · Windows · Linux · macOS · Web
A desktop remote and Python library for Klipsch powered speakers. Volume, input, 3-band EQ, mute, sound modes, transport and rename — all over the speaker's native BLE control protocol, with one code path for every OS. Ships as a friendly GUI, a CLI, an importable async library, and a no-install browser app (Web Bluetooth).
Everything the official Klipsch Connect app does over BLE, in a faster native/web client:
Sound
- Volume & mute — and the slider tracks the speaker's physical knob in real time (live BLE notifications), so turning the dial on the unit moves it on screen.
- Input switching — TV, Bluetooth, Optical, USB, Analog (aux) and Phono.
- 3-band equalizer — Bass / Mid / Treble (−10…+6) with one-tap presets: Flat, Vocal, Bass, Rock and Boom.
- Dynamic Bass — a fuller low end at quiet listening levels.
- Night Mode — tames loud peaks and lifts quiet detail for low-volume listening.
- Speaker placement — boundary-gain compensation for Corner / Wall / Open positions.
Subwoofer (auto-detected — the section greys out when no sub is connected)
- Sub level (dB), mute, and phase invert.
Playback
- Transport controls — play / pause · next · previous.
Device
- Rename the speaker and toggle Auto Standby (sleep after silence).
- About page — model, firmware / software / hardware revision, serial, MAC and system ID, all read straight off the speaker.
- Factory reset, behind a confirmation.
- Model auto-detection across The Fives / Sevens / Nines (incl. McLaren).
Desktop conveniences
- Connect on launch (auto-reconnect by address), launch on startup, and close-to-tray (Windows).
| Interface | What it is |
|---|---|
| 🖥️ Desktop GUI | Native Windows / Linux / macOS app (Flet → Flutter), fast BLE connect. |
| 🌐 Web app | Zero-install browser remote over Web Bluetooth (Chrome / Edge / Opera, desktop and Android). Installable as a PWA, works offline. |
| ⌨️ CLI / REPL | python -m klipsch_ble — one-shot commands or an interactive shell, exposing the full protocol. |
| 🐍 Python library | from klipsch_ble import KlipschClient — an async client to script your speaker. |
Web app — nothing to install — open
klipsch.io in Chrome,
Edge or Opera (desktop or Android) and connect over Web Bluetooth. No download,
no Python. Firefox and iOS/Safari don't support Web Bluetooth. Details and
self-hosting: web/.
Windows app — grab the installer from the
latest release
(KlipschRemote-Setup.exe), run it, done. Per-user install, no admin needed.
Linux app — grab the .deb (klipsch-remote_<ver>_amd64.deb) from the
latest release
and install it — it registers Klipsch Remote in your applications menu, with
its own icon:
sudo apt install ./klipsch-remote_*_amd64.deb # then launch it from the app menu
sudo apt remove klipsch-remote # to uninstallDebian/Ubuntu-family, x86-64. Pair the speaker as a Bluetooth audio device
first. (apt pulls in bluez + the GTK runtime if they're missing.)
From source (any OS):
pip install flet bleak # + winrt-Windows.Devices.Bluetooth on Windows
git clone https://github.com/Nixer1337/KlipschRemote.gitImportant
Pair the speaker with your OS as a Bluetooth audio device first. Never pair/unpair it as an LE-only device — that breaks control.
python -m klipsch_remote # desktop GUI
python -m klipsch_ble # CLI / interactive REPL
python -m klipsch_ble status # one-shot statusWeb version — just open
klipsch.io, or serve the
folder yourself (Web Bluetooth needs HTTPS or localhost):
python -m http.server 8000 --directory web # then open http://localhost:8000Library use:
import asyncio
from klipsch_ble import KlipschClient
async def main():
async with KlipschClient("AA:BB:CC:DD:EE:FF") as spk:
await spk.set_input("optical")
await spk.set_volume_percent(40)
await spk.set_eq("bass", +3)
asyncio.run(main())Both builds compile a real Flutter app via flet build (the executable is the
program), so the window/taskbar icon and app identity are baked in.
On a fresh Windows machine you need the toolchain once: Git, Python 3.12,
the VS C++ Build Tools, and (for the installer) Inno Setup, plus Windows
Developer Mode enabled (Flutter needs it for plugin symlinks). Then install the
pinned deps from requirements.txt with
python -m pip install -r requirements.txt. All dependency versions are frozen,
so builds are reproducible.
| Target | Command | Output |
|---|---|---|
| Windows | build_app.bat (add -NoInstaller for the folder bundle only) |
dist_installer\KlipschRemote-Setup.exe + dist_app\ |
| Linux | ./build_app_linux.sh (on Linux) |
dist_installer/klipsch-remote_<ver>_amd64.deb + dist_app/KlipschRemote/ |
On Windows the build also compiles the Inno Setup installer by default (needs
winget install JRSoftware.InnoSetup); -NoInstaller stops at the dist_app\
folder bundle.
The Linux build differs: flet build linux bundles a CPython without
socket.AF_BLUETOOTH, so the L2CAP control path can't work — the app would throw
"this Python build has no Linux Bluetooth L2CAP support". Instead
build_app_linux.sh freezes the app with PyInstaller
using the distro's CPython (which keeps AF_BLUETOOTH) and packages a .deb; it
hard-fails if the interpreter ever lacks Bluetooth support, so a broken build
can't ship. Prereqs: python3, python3-venv, python3-dev, dpkg (all on
Debian/Ubuntu), plus pip install -r requirements.txt pyinstaller. CI
(build-linux.yml) builds it on Ubuntu
22.04 and attaches the .deb to the release on every v* tag.
| Component | Description |
|---|---|
klipsch_ble |
Async BLE library + CLI — the engine |
klipsch_remote |
Flet desktop GUI on top of it |
web |
Browser remote over Web Bluetooth — static page, no install, live at klipsch.io |
Licensed under the Apache License 2.0 — see also NOTICE.
Unofficial, independent project — not affiliated with or endorsed by Klipsch
Group, Inc.; trademarks belong to their owners. Built for interoperability, on
top of the MIT-licensed fives-api.
Provided "AS IS", without warranty of any kind.





