Skip to content

Map: Heart-rate monitoring on Linux (AirPods Pro 3) #1

Description

@AnujCtrl

Destination

Heart-rate ("heartbeat") monitoring working in the Rust Linux client (linux-rust/, branch linux/rust), verified on the driving dev's AirPods Pro 3, ending in a PR against librepods-org/librepods plus a write-up of the BlueZ-vs-Bumble L2CAP findings for the maintainer.

Notes

  • Execution override: this map carries execution tickets (implement, verify, upstream) — the destination is a working, upstreamable change, not just a spec.
  • Skills: research tickets → /research subagents; prototype tickets → /prototype; grilling tickets → /grilling + /domain-modeling.
  • Glossary (disambiguation): "heartbeat" here = heart-rate (HR) monitoring from AirPods Pro 3 / Powerbeats Pro 2 sensors over Apple's proprietary AAP/AACP protocol (L2CAP PSM 0x1001) — not a protocol keep-alive; no keep-alive opcode exists in AAP. Full glossary: CONTEXT.md in the working clone.
  • Key repo facts: Android HR implementation exists in upstream PR Add experimental AirPods heart-rate monitoring and RSSI librepods-org/librepods#702 (fetched locally as branch pr-702); Rust AACP layer lives at linux-rust/src/bluetooth/aacp.rs on origin/linux/rust; feature work branches off origin/linux/rust; upstream PR targets the linux/rust branch.
  • Known risk (maintainer, Discussion Heart Rate librepods-org/librepods#233, Jan 2026): the HR packets are confirmed to work under Google Bumble but not under BlueZ or Fluoride — suspected L2CAP channel-mode/flow-control issue in the kernel socket path. The probe ticket exists to pin this down.
  • Hardware: driving dev has AirPods Pro 3 at the Linux machine. Apple DID spoofing (DeviceID = bluetooth:004C:0000:0000 in /etc/bluetooth/main.conf) is assumed required.

Decisions so far

Not yet specified

  • Activity/workout gating — Apple positions HR as workout-only (Fitness app context). Whether the buds stream HR on an idle link, and what minimal context (in-ear + audio? workout simulation?) is needed, is unknown until the probe runs. May graduate into simulation tickets.
  • BlueZ L2CAP deep-dive — if the probe reproduces the Bumble-works/BlueZ-fails behavior, a deeper investigation (L2CAP socket options, ERTM, Experimental/KernelExperimental flags, exact failure capture) graduates into tickets.
  • Powerbeats Pro 2 variance — different optical sensor, possibly different packet format. No hardware available; sharpens only if a PBP2 owner appears.

Out of scope

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions