Skip to content

Capturing Bluetooth Logs

NoopApp edited this page Jun 12, 2026 · 1 revision

Capturing Bluetooth Logs (help unlock WHOOP 5.0 / MG)

This is the single highest-impact thing a 5.0/MG owner can do right now. WHOOP 5.0/MG currently gives NOOP (and every other third-party app) only live heart rate — recovery, strain, sleep and history don't come through yet. A real Bluetooth capture from a 5.0/MG owner is what will change that.

Why this works, in one line: a capture from one 5.0 owner (#174) showed the official app stores a set of "enable_r22_*_packets" config keys on the strap — these switch on the deep data streams NOOP never receives. We now need to see the official app set those and use them, so NOOP can do the same.


What we're looking for

A Bluetooth HCI snoop log records the raw packets between the official WHOOP app and your strap — on your own device, with your own data. Three captures, in priority order:

  1. A "set" capture — pairing the strap fresh in the official app. This catches the command that configures the strap (the enable_r22_packets write). Most valuable.
  2. A "sync" capture — the official app pulling a night's history. Wear the strap overnight, then open the official app in the morning and let it sync fully. This catches the deep packets actually streaming, and whatever command starts them.
  3. The GATT table. Two minutes in the free nRF Connect app: connect to your strap, screenshot the list of services and characteristics. Maps every channel for us.

Any one of these helps. All three would likely crack it.

A capture contains no account credentials or passwords — it's the Bluetooth traffic to a device you own. It can contain things the app displays on the strap (e.g. calendar event titles it pushes for notifications), so glance through it and redact anything personal before sharing. A capture trimmed to just the WHOOP connection is perfect.


Android — HCI snoop log

  1. Enable Developer options (Settings → About phone → tap Build number 7 times).
  2. Settings → System → Developer options → Enable Bluetooth HCI snoop log → set to Enabled (or Filtered).
  3. Turn Bluetooth off and back on so logging starts on a clean slate.
  4. Do the thing you're capturing — pair the strap fresh in the official WHOOP app, or sync in it.
  5. Pull the log:
    • Easiest: Developer options → Take bug report → Interactive. When it's done, share the zip and the file we want is inside it as FS/data/misc/bluetooth/logs/btsnoop_hci.log (path varies by phone; search the zip for btsnoop).
    • Some phones write it directly to internal storage as btsnoop_hci.log.
  6. Turn the snoop log off again afterwards (it logs all Bluetooth, so don't leave it running).

iOS — PacketLogger

iPhone needs a Mac for this (it's the supported Apple route):

  1. Install Additional Tools for Xcode from the Apple Developer downloads (free Apple ID), which includes PacketLogger, or install the Bluetooth logging profile from developer.apple.com (Profiles → Bluetooth) onto the iPhone.
  2. With the profile installed, reboot the iPhone, reproduce the pairing/sync in the official app.
  3. Connect the iPhone to the Mac, open PacketLogger, and capture / export the session as a .pklg.

(If that's fiddly, an Android capture from any Android phone paired to the same strap is just as good.)


Reading it yourself (optional)

If you've got Wireshark, open the btsnoop_hci.log / .pklg directly. Useful filters:

  • btatt — just the GATT (attribute) traffic.
  • btatt.opcode.method == 0x12 || btatt.opcode.method == 0x52writes (app → strap commands).
  • Look for writes right after pairing, near where the strap's debug console mentions "persistent config key" — note the characteristic UUID/handle, the opcode, and the value bytes.

You don't need to decode anything — sharing the capture (or even a screenshot of those write rows) is plenty.


Where to send it

This is, very literally, the work that unlocks WHOOP 5.0/MG for everyone. Thank you. 🙏

See also: Data We Need · Protocol · Strap Support and Pairing

Clone this wiki locally