Skip to content

v0.1.0 — First Release

Choose a tag to compare

@aaronsb aaronsb released this 07 Apr 12:45
· 77 commits to main since this release
c933a3c

bmap v0.1.0

Control Bose Bluetooth headphones from Linux — no app, no cloud, no account.

Libraries in Python, Rust, and C++ implementing the BMAP (Bose Media Application Protocol) over Bluetooth RFCOMM.

Supported Devices

Device Noise Control EQ Spatial Profiles Buttons
QC Ultra Headphones 2 CNC 0-10 slider 3-band room/head 7 custom slots Shortcut remap
QuietComfort 35 / 35 II ANR off/high/wind/low — — — Action remap (VPA/ANC)

Features

  • Auto-detection — discovers paired Bose devices via Bluetooth SDP, identifies model from Modalias
  • Full settings control — noise cancellation, EQ, sidetone, multipoint, voice prompts, device name
  • Custom audio profiles — create, modify, delete, and switch between profiles (QC Ultra 2)
  • Button remapping — remap programmable buttons to ANC, VPA, play/pause, etc.
  • Mode switching — instant switch between Quiet, Aware, Immersion, Cinema modes
  • No authentication required — uses SETGET/START operators which bypass Bose's cloud ECDH auth

Libraries

All three libraries share the same architecture (docs/architecture.md):

  • Python (pybmap) — pip install ready, includes bosectl CLI
  • Rust (bmap) — type-safe with Transport trait for testing
  • C++ (bmap) — mostly header-only, CMake build

Quick Start

import pybmap

with pybmap.connect() as dev:
    print(dev.battery())          # 80
    print(dev.name())             # "Fargo"
    dev.set_anr("high")           # QC35: full noise cancellation
    dev.set_buttons(0x10, 4, 2)   # Remap Action button to ANC

What's New Since Development Started

  • Smart device discovery with auto-detection
  • QC35 support (RFCOMM channel 8, init packet, ANR modes)
  • Button remapping via SETGET [1.9] — verified on live hardware
  • QC35 block 3 NC investigation (documented, binary toggle only)
  • Error code 15 (InvalidTransition) support
  • Architecture documentation with Mermaid diagrams
  • Full test suites: 100 Python, 53 Rust, 43 C++