Repository navigation
Firmware: Google Find Hub (FMDN) advertising for nRF5x (#3) - #4
Conversation
APPLE stays the default. GOOGLE_FMDN and DUAL advertise a precomputed SECP160R1 EID table as FEAA service data.
|
Independent review of exact head 2e9f805 — REQUEST CHANGES (comment-only: the configured GitHub identity is also the PR author, so GitHub cannot record a formal self-review).
Verified: the Python timestamp block is FF11 || 0A || masked uint32 BE || 0011 || 0A || masked uint32 BE; r = AES-256-ECB(block) mod SECP160R1 n; the x-coordinate matched independent OpenSSL secp160r1 public-key derivation for timestamps 0, 1024, 0x84d000 and 1700000000 using the public placeholder EIK. FEAA AD length 0x19, UUID byte order AA FE, EID bytes 8..27 and hashed flags byte 28 match Table 15. Local .venv/bin/python -m unittest discover -s tests -v: Ran 86 tests, OK (2 skipped). The APPLE default branch keeps the prior key choice/advertising call and the CI default APPLE build passed; no hardware regression test was performed. Google publishes no numeric EID reference vector, so the Python suite cannot meet issue #3s vector criterion literally. |
Use frame type 0x40. 0x41 is unwanted-tracking-protection mode and this build does not implement the UTP flag or a fixed address. GOOGLE_FMDN and DUAL require a 1024-second rotation. The beacon counter is stored in the last flash page and restored after reset. The table is not circular: advertising stops when the counter leaves the precomputed windows instead of repeating slot 0.
|
Independent re-review of exact head 3514f92 against my comment 5946035986 — REQUEST CHANGES (comment-only: this GitHub identity is the PR author, so GitHub cannot record a formal self-review). Fixed / verified:
Still blocking:
No merge performed. |
make -n still runs recipes that call $(MAKE), so a dry-run of nrf52832_xxaa entered the chip makefile and failed when the SDK was not downloaded. The interval is now resolved by check-fmdn-interval before that include, and the chip makefiles reject a non-1024 interval before they include the SDK. CI installs pipenv 2026.8.0, which hashes Pipfile names in PEP 503 form (FindMy becomes findmy). The lock still had the older plette hash, so pipenv verify said it was out of date even though the pins match main. Rehashed with 2026.8.0 and left the pins alone: a macOS pipenv lock would strip the darwin markers Linux sync depends on.
|
Independent re-review of exact head 02fbece against comments 5946035986 and 5946269925 — APPROVE (code-review verdict, comment-only: the configured GitHub identity is the PR author and cannot submit a formal approving self-review). Previously blocking CI issues are resolved: both current-head push and PR runs completed successfully. The Linux unit-test log explicitly reports OK (skipped=2), the lockfile verification says Pipfile.lock is up-to-date, and the firmware build log shows fmdn_state.c compiled, nrf52832_xxaa.out linked, DONE nrf52832_xxaa, and the S132 image merged in the GOOGLE_FMDN step. The Makefile guard now has an SDK-free check target; locally, the 16 FMDN tests passed and the 3600-second override was rejected. The complete local suite could not run in my isolated checkout (findmy is not installed there); the CI Linux suite is the full-suite evidence. The earlier 0x41 mode and table-wrap/reset findings remain addressed in the reviewed diff (0x40 normal mode, K=10 enforcement, bounded slot selection and flash journal). No additional evidenced code-review blocker found. The flashed-tag Android FEAA scan and on-device journal behavior are not verified by CI and remain separate hardware acceptance; this verdict does not claim those steps passed or that Find Hub registration is implemented. No merge performed. |
Closes #3 (phase 1).
Testing:
.venv/bin/python -m unittest discover -s tests-> Ran 86 tests, OK (skipped=2).Caveats: Google publishes no numeric EID test vector; tests are FIPS-197 AES + curve/composition self-consistency. Firmware NOT compiled (no arm-none-eabi-gcc locally). Not flashed / not live-verified on Android. Find Hub account registration not addressed.