Klipsch Kontroller
The Klipsch app can change a speaker’s input, EQ, power, and sound settings, but its Bluetooth Low Energy control services are undocumented. I mapped those services and wrote a Swift client for Pixel Brite, where the remote sits beside the music.
The Nines with its Lambswool grille.
Mapping the control link
The Nines leaves system audio on its Bluetooth Classic connection while Pixel Brite opens a separate BLE GATT link for control. Klipsch’s Android app was the specification: I recovered the model identifiers, service and characteristic layout, and wire values, then verified reads and writes against the speaker.
An unpaired Nines could advertise, connect, and accept a write before acknowledgements timed out. Pairing through the OS stabilized the control link. Pixel Brite waits for decodable live state before presenting the remote, so its first screen shows the speaker’s actual settings.
Model-specific settings
The speaker does not return a ready-made capability report. Pixel Brite starts with the recovered profile for its model, then intersects that profile with the writable GATT characteristics exposed by the connected firmware. The Nines screen includes volume, input, three-band EQ, Dynamic Bass, and Night Mode; settings without a matching characteristic never appear.
Rapid slider writes
Dragging a volume or EQ slider can produce targets faster than the speaker acknowledges writes. Each characteristic keeps one active write and only the newest pending value. Intermediate positions disappear from the queue, so releasing the slider does not leave the speaker catching up through stale commands.
Acknowledgements apply accepted values; notifications bring in changes made on the speaker or another controller. When choosing another speaker, Pixel Brite keeps the current session until the candidate supplies its required live state.
Recovered model profiles
The map covers Cinema 600; The Fives, Sevens, Nines, and Nines McLaren Edition; The One Plus and Three Plus; and Nashville, Austin, and Detroit. I used The Nines to work through pairing, writes, live state, and reconnection on hardware.
Controller and speaker picker