Krolyxon
Commit 05f4013

Branches

Refs →

budctl05f4013

Verification log: A1 and A2 pass on the phone

The Android app on a Nothing Phone (3a), Android 17, over USB debugging:
the same session start as HW1 byte for byte over Android's RFCOMM
socket, noise control written and read back, the idle close, the
not-connected paths with the lid closed, and the laptop getting the
channel back once the app was left. The busy path is untested: no other
control app is left on the phone.

docs/android.md: the phone joins over USB debugging.
Author
krolyxon
Date
2026-11-01 22:37 +0530
Parent
feb7482
Commit
05f40137685e961afd6944058eed65081712cf78

+3 −1

2 files changed

  1. M docs/android.md +1 −1
  2. M docs/protocol/realme_t310.md +2 −0
M docs/android.md View
@@ -109,7 +109,7 @@ Written from Android's API reference. No other app's code is read for it (rule 2
109109 for Gradle (`/opt/android-studio/jbr`). The NDK, from Studio's SDK Manager.
110110 `rustup target add aarch64-linux-android x86_64-linux-android` and `cargo install cargo-ndk`.
111111 *Done when* the NDK is in `~/Android/Sdk/ndk` and `adb devices` lists the emulator. The phone
112− joins before A1: wireless debugging, paired with `adb pair`.
112+ joins before A1, over USB debugging (`android-udev` gives adb access to it without root).
113113 1. **The core builds for Android.** `bluez`, `transport::{rfcomm, sdp, socket}`, `scan` and
114114 `connect` go behind `cfg(target_os = "linux")`, and `libc` and `zbus` become Linux-only
115115 dependencies. `PairedDevice` moves to the crate root, since Android fills it too. CI checks the
M docs/protocol/realme_t310.md View
@@ -618,6 +618,8 @@ The owner will not install realme Link (2026-10-27), so there is no app capture.
618618
619619 | Date | Checkpoint | Result | Notes |
620620 |---|---|---|---|
621+| 2026-11-01 | A2 Android app (`docs/android.md#checkpoints`): noise control off → anc → off, the idle close, then `budctl status` on the laptop | pass | Each write was acked and read back within 0.3-0.4 s, all on one session. Every session closed 10 s after its last command. `budctl status` on the laptop worked once the app was left. Transparency was not tried on the phone; W1 covers its bytes |
622+| 2026-11-01 | A1 Android app on the phone (Nothing Phone (3a), Android 17), read-only, debug on | pass | The same session start as HW1, byte for byte, over Android's RFCOMM socket: the same bitmap (`BF 1F 5A 20 45 04 40 00`), id `063C12`, events offered `01 02 03 04 05 06 0D F1 F4`, and the `0x8205` ack about 70 ms after the subscribe, skipped as [§6](#subscribe) says. Replies came 30-110 ms after each request. A session opened 1.1-1.6 s after the connect began, and a full reading took 2.3 s more. Lid closed: the first Read connected but the buds closed the link at once ("case lid closed?"), and the next said "paired but not connected"; with the lid open, Read worked again. The busy path is untested, since no other control app is left on the phone |
621623 | 2026-10-28 | HW2 `budctl --debug dual`, with the phone and the laptop connected | pass, with a fix | The T310 answered `0x0112` in 160 ms with four entries: the owner's phone (connected, flags `00`), the laptop (connected, flags `01`) and two phones that had connected before (state `00`). Every `len` was 3 more than the name length. The addresses came first byte first, so budctl printed them backwards; fixed the same day ([§9.10](#dual-address)). The addresses and other people's device names are left out of this log on purpose |
622624 | 2026-10-28 | W11e `eq delete custom-5` | pass | The delete matched the derived frame byte for byte, and was acked with `00 05`. The list read back at once is empty. Deleting the preset in use is still untested. See [§10.9](#custom-eq-delete) |
623625 | 2026-10-28 | W11d `eq rename custom-5 Gym` | pass | The save with the new name matched the derived frame byte for byte, and was acked with `00 05`. The list read back at once has id `05` named Gym, bands unchanged, in use. See [§10.9](#custom-eq-rename) |