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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions