{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/NOTES.md",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/docs/architecture.md",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/docs/quietcomfort-headphones-prince.md",
    "https://github.com/aaronsb/bosectl/tree/70570b29c1d3c9ba775b08a29eaea72385de27b5/captures",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/bmap-capture.py",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/fixtures/README.md",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/python/pyproject.toml",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/rust/README.md",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/cpp/CMakeLists.txt",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/python/tests/test_integration.py",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/.github/workflows/test.yml",
    "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/LICENSE",
    "https://github.com/aaronsb/bosectl/releases/tag/v0.5.0",
    "https://crates.io/crates/bose-bmap/0.5.0"
  ],
  "category": "reconstruction-cases",
  "description_en": "Controls Bose headphones from Linux and macOS without the Bose app, account or cloud, through Python, Rust and C++ libraries and command-line tools that implement Bose’s BMAP protocol over Bluetooth RFCOMM. The author documents BMAP’s function blocks, operators, payload layouts and error codes in NOTES.md, reportedly worked out by probing RFCOMM channels, capturing Bluetooth traffic while changing settings in the Bose app and testing each operator, and the libraries cover noise cancellation, EQ, spatial audio, button remapping, profiles and device settings. Support is reported per model by the author and contributors.",
  "description_zh": "无需 Bose 应用、账号或云服务，即可在 Linux 和 macOS 上控制 Bose 耳机：项目提供 Python、Rust 和 C++ 库及命令行工具，在蓝牙 RFCOMM 上实现 Bose 的 BMAP 协议。作者在 NOTES.md 中记录了 BMAP 的功能块、操作符、载荷布局和错误码，据称是通过探测 RFCOMM 通道、在 Bose 应用中更改设置时抓取蓝牙通信并逐一测试各操作符得出的；这些库涵盖降噪、均衡器、空间音频、按键重映射、配置档和设备设置。各型号的支持情况由作者和贡献者报告。",
  "entry_url": "https://awesomerea.org/resources/bosectl-bose-bmap-protocol-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/bosectl-bose-bmap-protocol-case/",
  "evidence_url": "https://github.com/aaronsb/bosectl/blob/70570b29c1d3c9ba775b08a29eaea72385de27b5/README.md",
  "group": "cases",
  "id": "bosectl-bose-bmap-protocol-case",
  "json_url": "https://awesomerea.org/resources/bosectl-bose-bmap-protocol-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/bosectl-bose-bmap-protocol-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/bosectl-bose-bmap-protocol-case/index.md",
  "name": "bosectl: reconstructing Bose’s BMAP headphone protocol",
  "name_zh": "bosectl：重建 Bose BMAP 耳机协议",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "The reviewed commit is the v0.5.0 release of 2026-09-28, which ships Linux x86_64 bmapctl binaries built from the Rust and C++ code with SHA256SUMS; the Rust crate is also on crates.io as bose-bmap 0.5.0, while the Python package installs from the repository through its install scripts or pipx. The README’s device table marks six models, led by the QC Ultra Headphones 2, as verified to differing extents and the Ultra Open Earbuds as partial from a device report; other cataloged BMAP products are recognized by product ID but have no tested configuration.",
    "Needs the user’s own paired Bose headphones and a Bluetooth adapter: BlueZ on Linux, or macOS 10.15+, where the Python library uses PyObjC’s IOBluetooth bindings. The Rust crate is Linux-only, and C++ builds on Linux need CMake, a C++17 compiler and the BlueZ development headers. No Bose software or files are needed at runtime.",
    "README reports probing RFCOMM channels, capturing Bluetooth HCI traffic while toggling settings in the Bose app and testing operators on each function block, and NOTES.md cites class names from the Bose Android app. The app, decompiled code and raw HCI or network captures are not in the repository: captures/ holds eight before-and-after setting snapshots from bmap-capture.py with the MAC address, serial number and other identifiers partly masked, and fixtures/ holds a packet used by the tests.",
    "README says the project uses only BMAP operations the headphones accept without authentication, and that no keys are extracted, no encryption is broken and no traffic is replayed; writes that the app performs after cloud-mediated authentication stay out of reach. USB control is not implemented, and NOTES.md treats the USB interface as being for firmware updates.",
    "CI runs the Python, Rust and C++ test targets on Ubuntu and macOS without headphones; integration tests that need a paired device run only when enabled. MIT license."
  ],
  "requirements_zh": [
    "所审阅的提交即 2026-09-28 发布的 v0.5.0 版本，该版本提供由 Rust 和 C++ 代码构建的 Linux x86_64 bmapctl 二进制，并附 SHA256SUMS；Rust crate 也以 bose-bmap 0.5.0 发布在 crates.io 上，Python 软件包则需从仓库通过安装脚本或 pipx 安装。README 的设备表将以 QC Ultra Headphones 2 为首的六个型号标为不同程度地已验证，Ultra Open Earbuds 则依据一份设备报告标为部分支持；设备目录中的其他 BMAP 产品虽能按产品 ID 识别，但没有经过测试的配置。",
    "需要使用者自己已配对的 Bose 耳机和蓝牙适配器：Linux 上使用 BlueZ；macOS 需 10.15+，Python 库通过 PyObjC 的 IOBluetooth 绑定访问蓝牙。Rust crate 仅支持 Linux，在 Linux 上构建 C++ 版本需要 CMake、C++17 编译器和 BlueZ 开发头文件。运行时无需任何 Bose 软件或文件。",
    "README 报告的方法包括探测 RFCOMM 通道、在 Bose 应用中切换设置时抓取蓝牙 HCI 通信，以及在各功能块上逐一测试操作符；NOTES.md 还引用了 Bose Android 应用中的类名。仓库中没有该应用、反编译代码或原始 HCI／网络抓包：captures/ 中是 bmap-capture.py 记录的八份设置变更前后快照，其中 MAC 地址、序列号等标识已部分遮盖；fixtures/ 中有一份供测试使用的数据包。",
    "README 称项目只使用耳机无需认证即可接受的 BMAP 操作，不提取密钥、不破解加密，也不重放通信；应用须经云端认证后才能执行的写入操作仍无法使用。尚未实现 USB 控制，NOTES.md 认为 USB 接口用于固件更新。",
    "CI 在 Ubuntu 和 macOS 上运行 Python、Rust 和 C++ 的测试目标，无需连接耳机；需要已配对设备的集成测试只有在启用时才会运行。采用 MIT 许可。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/aaronsb/bosectl",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
