|
| 1 | +# Event Notes: Pixel Buds Pro 2 (`libmaestro` / `libgfps`) — Group AO (new), EQ outer field 16-vs-18: drag-and-release without ever tapping Save (`CAP-053`) |
| 2 | + |
| 3 | +**Status:** 🔲 **Not yet captured — skeleton only.** Fill in every `TBD` below after recording, |
| 4 | +per `CAPTURE_BLUETOOTH_HCI_SNOOP.md` §5 (analysis) and §8 (what to update), and |
| 5 | +`PROJECT_RULES.md` rule 11/14 (reproducibility metadata). Once reviewed, rename this folder from |
| 6 | +the placeholder `CAP-053-yyyy-MM-dd_HH-mm-ss_HH-mm-ss-Group_AO` to the actual session |
| 7 | +date/start-time/end-time, e.g. `CAP-053-2026-09-15_08-30-00_08-40-00-Group_AO`. |
| 8 | + |
| 9 | +**Purpose (`CAPTURE_BLUETOOTH_HCI_SNOOP.md` Group AO, added 2026-09-13, |
| 10 | +`ai-sessions/0017_MAINTENANCE_RESULT_2026_09_13.md` Phase 1):** `PROTOCOL.md` §4.2's "Outer field 16 |
| 11 | +vs. 18" item is a genuine, unreconciled tension: `CAP-015`'s wire timing reads as "field 18 fires on |
| 12 | +slider-release" (no video-visible `Save` tap before any of 15 field-18 frames), but a full call-graph |
| 13 | +trace of `fyd.d`/`fyd.e` (`REVERSE_ENGINEERING.md`'s `qjw` entry) found field 18 (`fyd.d`) reachable |
| 14 | +through exactly **two** code paths — a dedicated `key_eq_save_button`/`title_eq_save_button` click |
| 15 | +handler (self-describing log `"On click save EQ button"`), and, newly found in session 0017, a |
| 16 | +**navigate-away-from-the-EQ-screen** path (`hod.java:36`, self-describing log `"Navigate away, save |
| 17 | +EQ"`, gated on an unsaved-changes-shaped flag) — but **no** slider-release code path to field 18 |
| 18 | +anywhere in the decompiled source. This capture isolates all three candidate triggers from each |
| 19 | +other for the first time. |
| 20 | + |
| 21 | +## Log Metadata |
| 22 | + |
| 23 | +| Field | Value | |
| 24 | +|------------------|-----------------------------------------------------| |
| 25 | +| Capture ID | `CAP-053` | |
| 26 | +| Group(s) | AO (new) | |
| 27 | +| Date | TBD | |
| 28 | +| Firmware version | TBD | |
| 29 | +| Test device | TBD (Pixel 7a, official Pixel Buds Companion App; full DLCI 0x02 traffic retained, raw-path extraction) | |
| 30 | +| Video file | TBD — must clearly show, for each slider action: whether the `Save` button is touched, and whether the screen changes | |
| 31 | +| Log file | TBD — `CAP-053-btsnoop_hci.log` (raw path, not `btsnooz.py`) | |
| 32 | +| Buds MAC (partial, per `AGENTS.md` §7/§9) | TBD | |
| 33 | + |
| 34 | +## Procedure (per `CAPTURE_BLUETOOTH_HCI_SNOOP.md` Group AO) |
| 35 | + |
| 36 | +1. Open the EQ screen (Device details → Sound → Equalizer → custom sliders). |
| 37 | +2. Drag **slider 1** to a new position, release, and **wait ≥10s** with the `Save` button never |
| 38 | + tapped and **without navigating away from the EQ screen** (stay on this exact screen the whole |
| 39 | + time) — video must clearly show both: the `Save` button not being touched, and the screen not |
| 40 | + changing. |
| 41 | +3. Repeat step 2 for **slider 2** (a second, independent release-only sample, still without leaving |
| 42 | + the screen or tapping Save). |
| 43 | +4. As a clearly separated second half of the same session: drag **slider 3**, release, wait ≥10s (no |
| 44 | + Save tap, no navigation, replicating steps 2–3's isolation once more), then **deliberately tap the |
| 45 | + `Save` button** and video-confirm the tap. |
| 46 | +5. As a third, separated part: drag **slider 4**, release, wait ≥3s, then **navigate away from the EQ |
| 47 | + screen** (e.g. press back to Device details) without ever tapping `Save` — video must show the |
| 48 | + screen change clearly. |
| 49 | + |
| 50 | +## Event Timeline |
| 51 | + |
| 52 | +| Time | Action | Initiator | Test-ID | Wire evidence / Notes | |
| 53 | +|---|---|---|---|---| |
| 54 | +| TBD | Session start, raw-path HCI snoop logging confirmed | User | — | Conn. state: TBD | |
| 55 | +| TBD | Open EQ screen | User (App) | — | TBD | |
| 56 | +| TBD | Slider 1: drag + release, no Save, no navigation, ≥10s wait | User (App) | `EQS-*` | TBD | |
| 57 | +| TBD | Slider 2: drag + release, no Save, no navigation, ≥10s wait | User (App) | `EQS-*` | TBD | |
| 58 | +| TBD | Slider 3: drag + release, no Save, no navigation, ≥10s wait | User (App) | `EQS-*` | TBD | |
| 59 | +| TBD | Slider 3's write: `Save` button tapped, video-confirmed | User (App) | `EQP-008` | TBD | |
| 60 | +| TBD | Slider 4: drag + release, ≥3s wait | User (App) | `EQS-*` | TBD | |
| 61 | +| TBD | Navigate away from EQ screen (no Save tap), video-confirmed | User (App) | — | TBD | |
| 62 | +| TBD | Session end | — | — | TBD | |
| 63 | + |
| 64 | +## Analysis checklist (per `CAPTURE_BLUETOOTH_HCI_SNOOP.md` Group AO) |
| 65 | + |
| 66 | +- [ ] For sliders 1/2 (release-only, no Save, no navigation): does a `field5{field4{field18=...}}` |
| 67 | + write appear on DLCI 0x02 at any point? Expected: no, per the `hju`/`hod` code trace. |
| 68 | +- [ ] For slider 3's Save tap: confirm a field-18 write fires at that exact moment (the known, |
| 69 | + already-confirmed trigger). |
| 70 | +- [ ] For slider 4's navigate-away: does a field-18 write fire at the moment of navigation, matching |
| 71 | + the newly-found `hod.java` "Navigate away, save EQ" trigger? |
| 72 | +- [ ] Record the result plainly for each of the three conditions — a clean 3-way contrast (or a |
| 73 | + surprising positive on the release-only condition) both directly close `PROTOCOL.md` §4.2's |
| 74 | + own open item. |
| 75 | + |
| 76 | +## Next steps after filling this in |
| 77 | + |
| 78 | +- [ ] Cross-reference this session's own findings against `PROTOCOL.md` §4.2 and |
| 79 | + `REVERSE_ENGINEERING.md`'s `qjw` entry (`AGENTS.md` §13's traceability check). |
| 80 | +- [ ] Write `CAP-053-FINDINGS.md` per `PROJECT_RULES.md` §2, using this file's timeline as the |
| 81 | + evidence source, following the hex & script rule (§1 rule 4a). |
| 82 | +- [ ] Update this session's row in `CAPTURE_BLUETOOTH_HCI_SNOOP.md` §9 Capture Index — status |
| 83 | + from `planned` to `analyzed`, fill in Android/firmware/app-version columns and the log path. |
| 84 | +- [ ] Rename this capture's folder from the `yyyy-MM-dd_HH-mm-ss_HH-mm-ss` placeholder to the |
| 85 | + actual session date/start-time/end-time. |
| 86 | + |
| 87 | +--- |
| 88 | +https://github.com/tedsluis/opencontrolpixelbudspro2/blob/main/captures/CAP-053-yyyy-MM-dd_HH-mm-ss_HH-mm-ss-Group_AO/CAP-053-EVENT-NOTES.md - https://tedsluis.github.io/opencontrolpixelbudspro2/captures/CAP-053-yyyy-MM-dd_HH-mm-ss_HH-mm-ss-Group_AO/CAP-053-EVENT-NOTES |
0 commit comments