Skip to content

Nixer1337/KlipschRemote

Repository files navigation

KlipschRemote

KlipschRemote

Control your Klipsch powered speakers from your computer — over Bluetooth LE. The Fives · The Sevens · The Nines (incl. McLaren) · Windows · Linux · macOS · Web

release license python platform


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).

✨ Features

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).

Four ways to use it

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.

📸 Screenshots

Connect Remote Equalizer
Connect screen Remote control Equalizer & audio adjustments
Settings Settings (more) About
Settings More settings Device info

⬇️ Install

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 uninstall

Debian/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.git

Important

Pair the speaker with your OS as a Bluetooth audio device first. Never pair/unpair it as an LE-only device — that breaks control.

▶️ Run

python -m klipsch_remote        # desktop GUI
python -m klipsch_ble           # CLI / interactive REPL
python -m klipsch_ble status    # one-shot status

Web 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:8000

Library 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())

🛠️ Build native bundles

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.

📦 What's inside

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

📝 License & legal

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.

About

Unofficial remote & Python library for Klipsch powered speakers (The Fives, Sevens, Nines) over Bluetooth LE — no-install web app at klipsch.io, plus a desktop app, CLI and library. Windows · Linux · macOS · Web.

Topics

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors