[GH-ISSUE #308] Fellow developper here, I have the new Airpods Pro 3, want to contribute by adding heart rate monitoring support, where can I start from? #142

Open
opened 2026-03-02 12:03:57 +03:00 by kerem · 2 comments
Owner

Originally created by @Samych02 on GitHub (Nov 21, 2025).
Original GitHub issue: https://github.com/kavishdevar/librepods/issues/308

question

Originally created by @Samych02 on GitHub (Nov 21, 2025). Original GitHub issue: https://github.com/kavishdevar/librepods/issues/308 question
Author
Owner

@kavishdevar commented on GitHub (Nov 22, 2025):

You will need a mac and iphone. Here's what you can try:

  • first of all, disable the "Heart Rate" under Privacy in the AirPods settings
  • install the bluetooth bug reporting profile on iphone, connect to mac with USB
  • download "Additional Tools for Xcode", which has the PacketLogger app.
  • in PacketLogger, file->new ios trace
  • connect the airpods
  • make sure that some data shows up (because for me, ipados26 glitches out sometimes)
  • clear the logs
  • enable the "Heart Rate" from AirPods settings
  • I am assuming there should be now a packet "0400040009003001...", and nothing else.
  • Now, I am unsure of this but, either ask siri to tell the heart rate, or start a workout in the fitness app, and wait for some data. If possible, I'd need some rough idea what the heart rate shows (maybe a screenshot of the graph if you are starting a workout, or the reading that siri gives)
  • Now either there's a stream of data under L2CAP receive, or there is a lot of ATT Read Request and ATT read response (might also show up as l2cap send and l2cap receive because apple ¯\_(ツ)_/¯)

I've got two guesses: either the toggle asks airpods to expose the data over (G)ATT and it's continuously measuring but not streaming. or, it is streamed when iOS asks for it, and the toggle is just like that 'Off listening mode' toggle which just blocks the 'off' mode from being activated despite the fact that it can be hidden in UI on iOS.

thanks! :D

<!-- gh-comment-id:3566309222 --> @kavishdevar commented on GitHub (Nov 22, 2025): You will need a mac and iphone. Here's what you can try: - first of all, disable the "Heart Rate" under Privacy in the AirPods settings - install the bluetooth bug reporting profile on iphone, connect to mac with USB - download "Additional Tools for Xcode", which has the PacketLogger app. - in PacketLogger, file->new ios trace - connect the airpods - make sure that some data shows up (because for me, ipados26 glitches out sometimes) - clear the logs - enable the "Heart Rate" from AirPods settings - I am assuming there should be now a packet "0400040009003001...", and nothing else. - Now, I am unsure of this but, either ask siri to tell the heart rate, or start a workout in the fitness app, and wait for some data. If possible, I'd need some rough idea what the heart rate shows (maybe a screenshot of the graph if you are starting a workout, or the reading that siri gives) - Now either there's a stream of data under L2CAP receive, or there is a lot of ATT Read Request and ATT read response (might also show up as l2cap send and l2cap receive because apple ¯\\\_(ツ)_/¯) I've got two guesses: either the toggle asks airpods to expose the data over (G)ATT and it's continuously measuring but not streaming. or, it is streamed when iOS asks for it, and the toggle is just like that 'Off listening mode' toggle which just blocks the 'off' mode from being activated despite the fact that it can be hidden in UI on iOS. thanks! :D
Author
Owner

@kavishdevar commented on GitHub (Nov 24, 2025):

also, do join the discord server for discussions if you'd like: https://discord.gg/HhG4ycVum4

<!-- gh-comment-id:3568886405 --> @kavishdevar commented on GitHub (Nov 24, 2025): also, do join the discord server for discussions if you'd like: https://discord.gg/HhG4ycVum4
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/librepods#142
No description provided.