From b3034c2efb0a9a45e03feb868fc54b88d040e3e0 Mon Sep 17 00:00:00 2001 From: mcc45tr Date: Wed, 2 Sep 2026 22:43:29 +0300 Subject: [PATCH] senemos: classify Nabu SAR separately from proximity --- senemos/7.2.2-hil-plan.md | 20 ++++++++++++++++---- senemos/hil/nabu-hil-collect.sh | 11 +++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/senemos/7.2.2-hil-plan.md b/senemos/7.2.2-hil-plan.md index cdece444d5ae..de0dccfc50d8 100644 --- a/senemos/7.2.2-hil-plan.md +++ b/senemos/7.2.2-hil-plan.md @@ -21,7 +21,7 @@ kernel dependencies. | G0: bench safety | Record current kernel, EFI entries, DTB and RPM hashes; verify 6.17 and Android fallbacks; capture battery temperature/voltage; run `nabu-hil-collect.sh preflight` | Tablet boots the unchanged fallback and charger can be disconnected | Missing fallback, battery outside 15-40 C, swollen/hot pack, or incomplete backup | | G1: source/config | `git diff --check`; merged config; DTB build; schema checks; changed-object and full Image/modules build; confirm RTC/ramoops/charge invariants; require only `ARCH_QCOM`, no ACPI/PCI/Venus legacy and fewer than 450 modules | None; no target installation | Compiler, modpost, DT, schema, config, footprint or invariant failure | | G2: USB-first cold boot | Install as a new test EVR/UKI without deleting 6.17; collect boot/pstore/remoteproc/IOMMU and Type-C role logs | Before other peripherals: source VBUS to an ESP32S3, enumerate its CDC interface, switch host/device roles twice; then complete three cold boots with display, touch, UFS and battery telemetry | Missing VBUS, failed ESP32S3 enumeration/CDC, role-switch failure, panic, storage error, uncontrolled charging or repeated probe storm | -| G3: sensor foundation | Verify SLPI remoteproc, SDSP FastRPC, firmware registry, `iio:device*`, SensorProxy D-Bus and changing raw samples | Accelerometer and gyro react on all axes; magnetometer heading changes; front/rear ALS change under cover/light; proximity changes | SLPI crash, all-zero/stuck data, invalid mount matrix, repeated reconnect loop | +| G3: sensor foundation | Verify SLPI remoteproc, SDSP FastRPC, firmware registry, `iio:device*`, SensorProxy D-Bus, the separate Nabu SAR D-Bus object and changing raw samples | Accelerometer and gyro react on all axes; magnetometer heading changes; front/rear ALS change under cover/light; ADUX1050 SAR raw/delta channels react without being advertised as screen proximity | SLPI crash, all-zero/stuck data, invalid mount matrix, repeated reconnect loop, or SAR being mislabeled as `ProximityNear` | | G4: GNOME sensor UX | Run `monitor-sensor`; enable GNOME automatic orientation and automatic brightness; log D-Bus properties | Rotate through normal/left/right/bottom-up twice; screen follows without oscillation; brightness rises/falls smoothly; compass completes a 360-degree turn | Wrong axis, rapid orientation flapping, brightness jump/flicker, sensor loss after lock/unlock | | G5: portable userspace | Repeat raw IIO and SensorProxy checks without GNOME; test one non-GNOME session and one non-Fedora rootfs/container package set | KDE/Plasma or wlroots consumer receives orientation; Debian/Arch-family userspace sees the same D-Bus/IIO contract | Any requirement on GNOME settings, Fedora paths, or private KDE code | | G6: input/accessories | Exercise NT36523 touch, DT2W, suspend gesture gate, pen, explicit keyboard computer/tablet modes and hot detach/attach | 500 touch/pen events, 25 keyboard mode transitions, 20 DT2W cycles; no stuck key/touch; mouse alone never forces laptop mode | GENI FAULTED loop, stale touch after resume, keyboard wake storm, false tablet-mode switch | @@ -42,9 +42,21 @@ SensorProxy output, suspend count and attached accessories. Passing rotation alone does not close the sensor milestone. Expected Nabu SSC devices are LSM6DSO accelerometer/gyroscope, AK0991x -magnetometer, TCS3701 ambient-light/color/proximity, ADUX1050 proximity/SAR and -BU27030 rear ambient light. Device publication must be discovered at runtime; -tests must not depend on a fixed `iio:deviceN` number. +magnetometer, TCS3701 ambient-light/color, ADUX1050 capacitive SAR and BU27030 +rear ambient light. The Nabu vendor sensor list and live SSC service do not +publish a phone-style `proximity` SUID. TCS3701 proximity-named registry files +are shared firmware configuration, not proof that this tablet exposes a screen +proximity sensor. `sar_sensor` publishes nine ADUX1050 channel values and +`sar_algo_1` publishes a three-value SAR result; neither payload implements the +SSC proximity protocol consumed by SensorProxy. + +Screen proximity is therefore `not applicable` for Nabu unless a future board +revision is proven by a real SSC proximity SUID and a physical near/far HIL +test. Never synthesize `ProximityNear` from SAR/grip data: doing so can blank +the display while the tablet is merely being held. Keep SAR on its separate, +fail-closed interface until calibrated channel semantics can be represented by +an appropriate standard Linux ABI. Device publication must be discovered at +runtime; tests must not depend on a fixed `iio:deviceN` number. ## Evidence handling diff --git a/senemos/hil/nabu-hil-collect.sh b/senemos/hil/nabu-hil-collect.sh index 789d6fd00cac..ec34bbfb1fab 100755 --- a/senemos/hil/nabu-hil-collect.sh +++ b/senemos/hil/nabu-hil-collect.sh @@ -55,6 +55,17 @@ read_files() run timeout 15s monitor-sensor --all fi run busctl --system introspect net.hadess.SensorProxy /net/hadess/SensorProxy + printf '\n--- SSC and SAR contract ---\n' + run busctl --system introspect org.senemos.Nabu.Sar /org/senemos/Nabu/Sar + if command -v ssccli >/dev/null 2>&1; then + run ssccli --probe-data-type=proximity + run ssccli --probe-data-type=sar_sensor + run ssccli --probe-data-type=sar_algo_1 + fi + if command -v timeout >/dev/null 2>&1 && command -v nabu-ssc-probe >/dev/null 2>&1; then + run timeout 8s nabu-ssc-probe sar_sensor + run timeout 8s nabu-ssc-probe sar_algo_1 + fi printf '\n--- input and wake ---\n' run sh -c 'cat /proc/bus/input/devices' -- 2.55.0