An open API service indexing awesome lists of open source software.

https://github.com/jackspirou/libstealthtech

Open-source library and tools for controlling Lovesac StealthTech Sound + Charge systems via Bluetooth Low Energy
https://github.com/jackspirou/libstealthtech

ble bluetooth-low-energy harman-kardon lovesac reverse-engineering rust stealthtech surround-sound web-bluetooth webassembly

Last synced: 3 months ago
JSON representation

Open-source library and tools for controlling Lovesac StealthTech Sound + Charge systems via Bluetooth Low Energy

Awesome Lists containing this project

README

          

# libstealthtech

> Open-source library and tools for controlling Lovesac StealthTech Sound + Charge systems via Bluetooth Low Energy.

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Rust](https://img.shields.io/badge/rust-1.75%2B-orange.svg)](https://www.rust-lang.org)
[![Ko-fi](https://img.shields.io/badge/Buy_Me_a_Coffee-Ko--fi-FF5E5B?logo=ko-fi&logoColor=white)](https://ko-fi.com/jackspirou)

The Lovesac StealthTech system is a Harman Kardon surround sound system embedded in
modular furniture, controlled via a BLE-connected mobile app that is notoriously
unreliable. This project provides a reliable, open-source alternative that works on
any platform with a Bluetooth adapter.

**The StealthTech BLE protocol has been fully reverse-engineered.** This project
can control volume, input, EQ, sound modes, power, and more over BLE.

**Try it now at [stealthtech.app](https://stealthtech.app)** — no app install
required. Open the page in Chrome on your phone and connect to your system
instantly via Web Bluetooth.


StealthTech Remote web app connected to a Sound + Charge system

## Support

If this project saved you from the official app, consider buying me a coffee :)

```
( (
) )
.-------.
| |]
\ /
`-----'
```

[![Ko-fi](https://img.shields.io/badge/Buy_Me_a_Coffee-Ko--fi-FF5E5B?logo=ko-fi&logoColor=white)](https://ko-fi.com/jackspirou)

## Repository Structure

```
libstealthtech/
├── rust/
│ ├── protocol/ # libstealthtech-protocol (WASM-compatible types)
│ ├── core/ # libstealthtech-core library crate
│ │ └── src/
│ │ ├── ble/ # BLE scanning, connection, GATT discovery
│ │ └── device/ # High-level StealthTechDevice API
│ ├── cli/ # CLI binary crate (stealthtech)
│ ├── bridge/ # FFI bridge for Swift/Java bindings (future)
│ └── wasm/ # WebAssembly bindings for Web Bluetooth UI
├── swift/ # iOS/macOS bindings (future)
├── java/ # Android/Kotlin bindings (future)
├── node/ # Node.js bindings (future)
├── docs/
│ ├── architecture.md # Crate graph, BLE state machine, GATT flow
│ ├── protocol-mapping.md # Complete BLE protocol specification
│ ├── reverse-engineering.md # RE methodology and tools
│ ├── firmware-analysis.md # MCU firmware binary analysis
│ └── hardware-teardown.md # Complete technical teardown
├── CONTRIBUTING.md
├── SECURITY.md
└── LICENSE
```

## Quick Start

```bash
# Clone and build
git clone https://github.com/jackspirou/libstealthtech.git
cd libstealthtech
cargo build --release

# Scan for StealthTech devices
./target/release/stealthtech scan

# Control your system
./target/release/stealthtech volume 18 # Set volume (0-36)
./target/release/stealthtech input hdmi # Switch to HDMI ARC
./target/release/stealthtech mode movies # Movies sound preset
./target/release/stealthtech bass 12 # Set bass (0-20)
./target/release/stealthtech power off # Enter standby
```

### Reverse engineering tools

```bash
# Scan for ALL nearby BLE devices
./target/release/stealthtech sniff scan-all

# Dump the full GATT profile
./target/release/stealthtech sniff discover --json my_gatt_dump.json

# Monitor BLE notifications in real time
./target/release/stealthtech sniff monitor --log traffic.tsv
```

## Status

| Layer | Status |
|-------|--------|
| BLE Discovery & Connection | **Working** -- scanning, auto-reconnect with exponential backoff |
| GATT Service Enumeration | **Working** -- full profile dump and read-all tools |
| BLE Traffic Monitoring | **Working** -- real-time notification capture with logging |
| Protocol Command Encoding | **Complete** -- all commands fully mapped with real UUIDs |
| Volume / Input / Mode Control | **Working** -- volume, bass, treble, input, sound mode, mute |
| EQ / Balance / Power | **Working** -- center, rear, balance, quiet mode, power on/off |
| Notification Decoding | **Working** -- all 15 response codes parsed from UpStream |
| Firmware Version Query | **Working** -- MCU, DSP, EQ version retrieval |
| Web Remote ([stealthtech.app](https://stealthtech.app)) | **Live** -- Web Bluetooth UI with full device control |
| Documentation Site | **Live** -- hosted at [stealthtech.app/docs/](https://stealthtech.app/docs/) |

## Hardware Background

StealthTech is built from these vendor components:

| Component | Vendor | Key Detail |
|-----------|--------|------------|
| Center Channel (EE4034) | Harman International | 242W RMS, BLE + HDMI ARC |
| Subwoofer (EE0362) | Harman International | 50W RMS, 8" driver, WiSA receiver |
| Sound+Charge Sides | Harman International | 52W RMS each, 6.5" + tweeter |
| WiSA Module (444-2250) | Summit Semiconductor | NXP MKW21D512 + Summit SWM908 ASIC, 5 GHz |
| Wireless Charging Pad | jjPlus Corp (Taiwan) | Qi standard, FCC ID 2A8R5QST008A |
| BLE Control | Harman International | BLE 4.2+, app control only |

The center channel acts as the BLE GATT server. The WiSA link (center to subwoofer to
wired speakers) is a separate 5 GHz radio -- we only control the center channel via BLE
to adjust volume, input, EQ, and other settings.

## How to Help

The protocol is mapped, but testing across hardware variants is valuable.
See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed instructions.

Ways to contribute:

1. **Test on your hardware** — run the CLI and report any issues
2. **Share GATT dumps** — `stealthtech sniff discover --json gatt_dump.json`
3. **Report device names** — different firmware versions may advertise differently
4. **Code contributions** — Swift/Android bindings, GUI app, additional features

## Legal

This project performs only standard Bluetooth Low Energy operations (scanning, connecting,
reading/writing GATT characteristics) on hardware you own. This is functionally identical
to what the official app does, just from a different client.

The project does not:

- Bypass any DRM or encryption
- Modify device firmware
- Access any Lovesac servers or APIs
- Redistribute any Lovesac or Harman Kardon intellectual property

## License

MIT License. See [LICENSE](LICENSE).