# Live NEWPOS telemetry checkpoint

Verified on 23 September 2026 against the physical NEWPOS terminal assigned to BANPAIS.

Historical checkpoint: UIC Home has since advanced to 3.9.14-dev with commands, applications, parameters, remote assistance, resource totals and location support. NEWPOS NEW9810 and NEXGO N82 are physically connected to the current portal; use chapters 30 and 33 for current capability claims.

| Item | Value |
|---|---|
| Hardware model | NEW9810 (Android product reports NEW9830) |
| Manufacturer label serial | H3R000700069081 |
| Android system serial (ro.serialno) | 9810260815431507 |
| Customer | BANPAIS / BNPHND |
| TMS device ID | 96a5ce4f-65b2-4ca6-bc97-d5fbde526c17 |
| Agent package | com.uic.tms.home.uic.newpos.debug |
| Android | 13 / API 33 |
| Test transport | USB adb reverse → localhost:18883 → TLS MQTT |

## Implemented

The active multi-brand launcher now includes a Paho MQTT 3.1.1 telemetry client. It authenticates with the device's enrollment UUID/password, verifies the server certificate and hostname, subscribes to its receipt topic, and publishes QoS 1, non-retained reports to its own telemetry topic. No broker certificate-validation bypass is used.

A snapshot is sampled every 30 seconds when no report is pending. It includes actual Android manufacturer/model/product, OS/API and agent versions, battery/charging, network transport, internet validation, free/total storage, available/total memory, uptime and up to 40 launcher-visible applications with versions. Inventory is explicitly marked as partial. Manufacturer serial comes from enrollment and is labelled accordingly. The initial enrollment mistakenly used ro.serialno; the operator supplied the physical label, proving H3R000700069081 is the manufacturer serial (also the adb transport identifier). The device record was corrected in an audited SQL transaction, preserving UUID, customer, epoch and credentials. The launcher now sends the corrected serial and the separate androidSystemSerial captured during lab provisioning. The system serial is not treated as the manufacturer serial. Location, SSID, payment data and privileged phone identifiers are not collected.

One pending envelope is persisted before publishing and retried byte-for-byte until the TMS returns a matching stored:true receipt after SQL commit. MQTT PUBACK alone does not clear it. Reconnect uses bounded backoff. The launcher footer distinguishes connecting, offline/retrying and last confirmed report time.

Enrollment is imported only in debug builds from private app storage, encrypted with an Android Keystore AES-GCM key, and the plaintext input is deleted. Credentials are not embedded in the APK or printed in logs. The ignored workstation enrollment file remains under .local for this lab device. Release provisioning UI is not yet implemented.

## Physical verification

- NEWPOS and NEXGO debug builds succeeded; two existing passcode unit tests still pass.
- Installed the updated NEWPOS app without clearing its data.
- Real report reached SQL through MQTT → gateway gRPC → Dapper and rendered in the BANPAIS portal.
- First readings: Android 13, battery 100%, charging, Wi-Fi and about 24.5 GiB free storage.
- Confirmed application commit receipt on the terminal and an empty pending outbox after acknowledgment.
- Force-stopped/relaunched the app with USB forwarding removed: footer showed offline/retrying.
- Restored forwarding: encrypted enrollment was reused, reporting resumed and the server committed further reports. Four reports had been committed at the checkpoint verification.

## Continue the local test

Keep the TMS development services running and the terminal connected by USB. Restore forwarding after USB reconnect or workstation/device restart:

```powershell
adb -s H3R000700069081 reverse tcp:18883 tcp:18883
adb -s H3R000700069081 shell am start -n com.uic.tms.home.uic.newpos.debug/com.uic.home.LauncherActivity
```

Open BANPAIS in http://localhost:15100, open the device's Overview tab. Technical identifiers and original JSON are available in Diagnostics. Last received uses server UTC. The launcher reports local acknowledgment time.

This first client is process-scoped: it continues while the app process is alive, but Android may suspend/kill it in the background. It is not yet an always-on managed agent. USB is the MQTT path even though the telemetry correctly reports Wi-Fi as the terminal's active Android network. Standalone LAN/cloud operation needs host configuration and an appropriate trusted certificate.

At this checkpoint the client advertised telemetry.v1 only. This statement is retained as historical evidence; the current client capabilities are documented in chapters 21-26 and 33.
