openScale icon indicating copy to clipboard operation
openScale copied to clipboard

Xiaomi mi body composition scale 2 stopped syncing after update to 3.0

Open stribor opened this issue 1 month ago • 9 comments

Describe the bug I used 2.x version for a while and synced without problems, app got auto updated to v3.0, and it is not syncing anymore 'Failed to initiate notify' message appears briefly

To Reproduce Steps to reproduce the behavior:

  1. As usual stand on the scale/do measure
  2. Start open scale to sync with scale
  3. if it not auto syncing, click on Bluetooth button
  4. See error popups "Waiting for measurement via notifications" followed by "MIBFS:Failed to initiate notify"

Reproduced with latest version from f-droid (3.0 (70)

Expected behavior To get measurements like it used to work.

Debug log

openScale_current_log.txt

stribor avatar Dec 02 '25 17:12 stribor

Same, can't get any values since 3.0 update.

My log if helps:

Field Value
Time 2025-12-03 12:56:00.037
Session ID 19ae3a3e3a5
App openScale
Version 3.0 (70)
Package com.health.openscale
Build Type release
Device samsung SM-G736B
Android 16 (API 36)
Build ID BP2A.250605.031.A3.G736BXXSAGYK2
Build Time 2025-12-01T12:00:14Z
Git SHA e28baf50
? 2025-12-03 12:56:00.033 D/openScaleLog: Initial markdown-diff headers written to: /storage/emulated/0/Android/data/com.health.openscale/files/logs/openScale_current_log.txt
? 2025-12-03 12:56:00.034 D/openScaleLog: Markdown diff block closed.
? 2025-12-03 12:56:00.037 D/openScaleLog: Initial markdown-diff headers written to: /storage/emulated/0/Android/data/com.health.openscale/files/logs/openScale_current_log.txt
+ 2025-12-03 12:56:00.037 I/openScaleLog: File logging enabled during runtime – started fresh session log.
? 2025-12-03 12:56:05.500 D/UserSettingsRepository: Setting hapticOnMeasurement to: true
? 2025-12-03 12:56:24.273 D/BluetoothTopBar: User clicked bluetooth icon connect → trying to connect to saved device MI SCALE2
+ 2025-12-03 12:56:24.276 I/BleConnector: Attempting to connect to MI SCALE2
? 2025-12-03 12:56:24.277 D/BleConnector: Switching to new device: Releasing active communicator: null
? 2025-12-03 12:56:24.277 D/BleConnector: Switching to new device: Active communicator released and set to null.
? 2025-12-03 12:56:24.277 D/ScaleHandlerFactory: createCommunicator: Searching for communicator for 'MI SCALE2' (70:87:9E:BB:15:EF). Handler hint: 'Xiaomi Mi Scale v2'
+ 2025-12-03 12:56:24.277 I/ScaleHandlerFactory: Modern handler 'Xiaomi Mi Scale v2' supports 'MI SCALE2'.
? 2025-12-03 12:56:24.283 D/BleConnector: Adapter isConnected: false for MI SCALE2 (Status: CONNECTING)
+ 2025-12-03 12:56:24.282 I/ScaleHandlerFactory: Modern communicator 'GattScaleAdapter' created for 'MI SCALE2' with linkMode=CONNECT_GATT.
+ 2025-12-03 12:56:24.283 I/BleConnector: ActiveCommunicator successfully created: GattScaleAdapter. Starting observation job...
+ 2025-12-03 12:56:24.285 I/BleConnector: Adapter no longer reports connected for MI SCALE2. Current status: CONNECTING. Expecting Disconnected Event.
+ 2025-12-03 12:56:25.695 I/GattScaleAdapter: Found 70:87:9E:BB:15:EF → stop scan + connect
? 2025-12-03 12:56:27.726 D/GattScaleAdapter: Services discovered for 70:87:9E:BB:15:EF
? 2025-12-03 12:56:27.730 D/MiScaleHandler: attach()
? 2025-12-03 12:56:27.731 D/MiScaleHandler: handleConnected(userId=1, height=185.0, age=37)
+ 2025-12-03 12:56:27.731 I/MiScaleHandler: Connected (V2); init sequence
? 2025-12-03 12:56:27.732 D/MiScaleHandler: Unit set (v2): payload=[06 04 00 00]
? 2025-12-03 12:56:27.732 D/MiScaleHandler: Current time written (primary).
? 2025-12-03 12:56:27.733 D/BleConnector: Adapter isConnected: true for MI SCALE2 (Status: CONNECTING)
+ 2025-12-03 12:56:27.734 I/BleConnector: Successfully connected to MI SCALE2 via adapter's isConnected flow.
? 2025-12-03 12:56:27.734 D/BleConnector: BluetoothEvent received: Connected(deviceName=MI SCALE2, deviceAddress=70:87:9E:BB:15:EF) for MI SCALE2
+ 2025-12-03 12:56:27.735 I/BleConnector: Event: Connected to MI SCALE2 (70:87:9E:BB:15:EF)
? 2025-12-03 12:56:27.735 D/BleConnector: BluetoothEvent received: DeviceMessage(message=Waiting for measurement via notifications., deviceAddress=70:87:9E:BB:15:EF) for MI SCALE2
? 2025-12-03 12:56:27.736 D/BleConnector: Event: Message from MI SCALE2: Waiting for measurement via notifications.
? 2025-12-03 12:56:27.813 D/GattScaleAdapter: → write to chr=00001542-0000-3512-2118-0009af100700 svc=00001530-0000-3512-2118-0009af100700 len=4 withResp=true payload=[06 04 00 00]
? 2025-12-03 12:56:28.326 D/GattScaleAdapter: ← write response chr=00001542-0000-3512-2118-0009af100700 len=4 status=SUCCESS payload=[06 04 00 00]
? 2025-12-03 12:56:28.350 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb
! 2025-12-03 12:56:28.350 W/GattScaleAdapter: Failed to initiate notify for 00002a2f-0000-3512-2118-0009af100700
? 2025-12-03 12:56:28.352 D/BleConnector: BluetoothEvent received: DeviceMessage(message=Failed to enable notifications for 00002a2f-0000-3512-2118-0009af100700., deviceAddress=70:87:9E:BB:15:EF) for MI SCALE2
? 2025-12-03 12:56:28.353 D/BleConnector: Event: Message from MI SCALE2: Failed to enable notifications for 00002a2f-0000-3512-2118-0009af100700.
! 2025-12-03 12:56:28.740 W/MiScaleHandler: No history count response on primary; attempting fallback (ALL records).
? 2025-12-03 12:56:28.741 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb
? 2025-12-03 12:56:28.776 D/GattScaleAdapter: ← notify state chr=00002a2f-0000-3512-2118-0009af100700 status=SUCCESS
? 2025-12-03 12:56:28.980 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 96 8A BD 62]
? 2025-12-03 12:56:29.016 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 58 00 96 8A BD 62]
? 2025-12-03 12:56:29.015 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 96 8A BD 62]
? 2025-12-03 12:56:29.121 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 00 00 00 01]
? 2025-12-03 12:56:29.150 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 00 00 00 01]
? 2025-12-03 12:56:29.151 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 58 00 00 00 00 01]
+ 2025-12-03 12:56:29.151 I/MiScaleHandler: History count announced (marker=0): 88
? 2025-12-03 12:56:29.256 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[02]
? 2025-12-03 12:56:29.287 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[02]
? 2025-12-03 12:56:29.288 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 96 3C E9 07 08 0E 07 07 0A 22 32 3C E9 07 08 0F 07 06 26]
? 2025-12-03 12:56:29.289 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 86 47 E9 07 08 10 08 32 36 22 5A 3C E9 07 08 10 09 24 1F]
? 2025-12-03 12:56:29.290 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 36 47 E9 07 08 12 09 11 1B 22 0E 3D E9 07 08 13 07 09 11]
? 2025-12-03 12:56:29.290 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 DC 3C E9 07 08 14 07 08 05 22 08 48 E9 07 08 17 13 03 03]
? 2025-12-03 12:56:29.291 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 FE 3D E9 07 08 1F 09 06 08 22 58 3E E9 07 09 01 06 35 33]
? 2025-12-03 12:56:29.300 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 40 47 E9 07 09 01 08 28 22 22 FE 3D E9 07 09 02 06 3B 06]
? 2025-12-03 12:56:29.301 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 68 3D E9 07 09 03 07 00 16 22 C2 3D E9 07 09 04 07 07 0A]
? 2025-12-03 12:56:29.301 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 A4 3D E9 07 09 05 07 0F 1E 22 68 3D E9 07 09 06 08 18 25]
? 2025-12-03 12:56:29.302 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 D6 47 E9 07 09 07 0A 20 31 22 CC 3D E9 07 09 0B 07 07 23]
? 2025-12-03 12:56:29.302 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 26 3E E9 07 09 0C 06 2A 1D 22 D6 47 E9 07 09 0E 0C 22 32]
? 2025-12-03 12:56:29.317 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 36 47 E9 07 09 0F 09 2E 37 22 1C 3E E9 07 09 10 07 00 0A]
? 2025-12-03 12:56:29.321 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 90 3D E9 07 09 11 07 0C 00 22 90 47 E9 07 09 11 08 37 1B]
? 2025-12-03 12:56:29.322 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 90 3D E9 07 09 12 07 0E 0C 22 68 3D E9 07 09 13 07 17 36]
? 2025-12-03 12:56:29.322 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 36 3D E9 07 09 14 08 31 30 22 36 47 E9 07 09 15 0C 04 02]
? 2025-12-03 12:56:29.323 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 F4 3D E9 07 09 16 07 16 33 22 D6 3D E9 07 09 17 07 0C 06]
? 2025-12-03 12:56:29.330 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 54 47 E9 07 09 17 08 3B 12 22 C2 3D E9 07 09 18 07 1A 06]
? 2025-12-03 12:56:29.331 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 FE 3D E9 07 09 19 07 1E 28 22 36 3D E9 07 09 1A 07 26 34]
? 2025-12-03 12:56:29.332 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 5E 47 E9 07 09 1A 09 2D 0F 22 E6 3C E9 07 09 1B 0A 1C 03]
? 2025-12-03 12:56:29.333 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 C2 47 E9 07 09 1C 0B 12 01 22 5E 47 E9 07 09 1D 09 00 1F]
? 2025-12-03 12:56:29.334 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 4A 3D E9 07 09 1E 07 27 13 22 9A 47 E9 07 09 1E 08 3A 0C]
? 2025-12-03 12:56:29.343 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 FA 3C E9 07 0A 01 07 23 01 22 18 3D E9 07 0A 02 07 36 34]
? 2025-12-03 12:56:29.344 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 7C 47 E9 07 0A 02 09 0D 01 22 72 3D E9 07 0A 07 07 2D 2B]
? 2025-12-03 12:56:29.345 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 A4 47 E9 07 0A 07 11 30 20 22 36 47 E9 07 0A 08 09 36 22]
? 2025-12-03 12:56:29.346 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 72 47 E9 07 0A 0C 0A 36 02 22 1C 3E E9 07 0A 0E 07 14 16]
? 2025-12-03 12:56:29.346 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 4A 3D E9 07 0A 0F 07 18 01 22 9A 3D E9 07 0A 10 07 26 00]
? 2025-12-03 12:56:29.359 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 AE 3D E9 07 0A 11 07 2B 14 22 76 48 E9 07 0A 12 0F 26 1D]
? 2025-12-03 12:56:29.360 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 2A 49 E9 07 0A 15 10 06 1C 22 B4 3C E9 07 0A 18 07 25 12]
? 2025-12-03 12:56:29.361 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 9A 47 E9 07 0A 1D 0C 0B 32 22 5E 3D E9 07 0B 03 09 2E 1B]
? 2025-12-03 12:56:29.361 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 02 49 E9 07 0B 03 0F 02 11 22 2C 3D E9 07 0B 04 08 2C 09]
? 2025-12-03 12:56:29.362 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 A0 3C E9 07 0B 06 09 15 00 22 F0 3C E9 07 0B 07 0A 27 14]
? 2025-12-03 12:56:29.374 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 BE 3C E9 07 0B 0A 0A 1A 08 22 78 3C E9 07 0B 0C 07 16 3A]
? 2025-12-03 12:56:29.375 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 D2 3C E9 07 0B 0D 06 24 2C 22 96 3C E9 07 0B 0E 06 3B 35]
? 2025-12-03 12:56:29.376 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 96 3C E9 07 0B 0F 0A 13 26 22 04 3D E9 07 0B 10 09 1A 21]
? 2025-12-03 12:56:29.376 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 40 3D E9 07 0B 11 06 2B 3A 22 B4 3C E9 07 0B 12 06 32 2D]
? 2025-12-03 12:56:29.376 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 78 3C E9 07 0B 13 06 3A 3A 22 AA 3C E9 07 0B 14 06 35 2C]
? 2025-12-03 12:56:29.390 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 08 48 E9 07 0B 14 09 19 10 22 78 3C E9 07 0B 15 06 3B 28]
? 2025-12-03 12:56:29.391 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 50 3C E9 07 0B 16 0B 2F 0E 22 50 3C E9 07 0B 17 09 2E 3B]
? 2025-12-03 12:56:29.391 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 50 3C E9 07 0B 17 09 2F 23 22 64 3C E9 07 0B 18 06 35 20]
? 2025-12-03 12:56:29.392 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 76 48 E9 07 0B 18 09 18 26 22 28 3C E9 07 0B 19 06 28 2F]
? 2025-12-03 12:56:29.392 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 B0 3B E9 07 0B 1A 07 18 05 22 D8 3B E9 07 0B 1B 06 35 01]
? 2025-12-03 12:56:29.407 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 1E 3C E9 07 0B 1C 07 02 0C 22 46 3C E9 07 0B 1D 08 1C 2B]
? 2025-12-03 12:56:29.408 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 8C 3C E9 07 0B 1E 09 26 13 22 04 3D E9 07 0C 01 06 26 02]
? 2025-12-03 12:56:29.410 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 D6 47 E9 07 0C 01 09 1B 1F 22 80 48 E9 07 0C 01 15 00 30]
? 2025-12-03 12:56:29.411 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 64 3C E9 07 0C 02 07 02 05 22 BA 3B E9 07 0C 03 07 08 24]
? 2025-12-03 12:56:29.411 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[03]
+ 2025-12-03 12:56:29.412 I/MiScaleHandler: History import done: 0 record(s). Announced=88
+ 2025-12-03 12:56:35.557 I/BleConnector: disconnect() called for MI SCALE2. Active communicator: true, Status: CONNECTED
? 2025-12-03 12:56:35.558 D/BleConnector: Adapter isConnected: false for MI SCALE2 (Status: DISCONNECTING)
+ 2025-12-03 12:56:35.558 I/BleConnector: Adapter no longer reports connected for MI SCALE2. Current status: DISCONNECTING. Expecting Disconnected Event.
+ 2025-12-03 12:56:35.571 I/GattScaleAdapter: Disconnected 70:87:9E:BB:15:EF: SUCCESS
? 2025-12-03 12:56:35.572 D/MiScaleHandler: handleDisconnected()
? 2025-12-03 12:56:35.572 D/MiScaleHandler: detach()
? 2025-12-03 12:56:35.572 D/BleConnector: BluetoothEvent received: Disconnected(deviceAddress=70:87:9E:BB:15:EF, reason=SUCCESS) for MI SCALE2
+ 2025-12-03 12:56:35.572 I/BleConnector: Event: Disconnected from 70:87:9E:BB:15:EF. Reason: SUCCESS
? 2025-12-03 12:56:35.573 D/BleConnector: Disconnected event: Releasing active communicator: GattScaleAdapter
? 2025-12-03 12:56:35.573 D/BleConnector: Disconnected event: Active communicator released and set to null.

shilin-da avatar Dec 03 '25 10:12 shilin-da

Heads up from my side, mine seems to work after some more attempts.

Image

chrissssss avatar Dec 04 '25 07:12 chrissssss

I'm experiencing the same issue.

I'm able to sync single data points when timing weighing and trying to connect. So only the "real time" measurement and none of the history entries.

Kinda how the Xiaomi Bluetooth Mi Scale - openscale Wiki describes at some point

Unfortunately I could only receive the weight data if a user was on the scale and a connection was established.

nonvenomous avatar Dec 04 '25 22:12 nonvenomous

I'm able to sync with my Balance Feet (I think it's v2, but not sure) with the 3.0 update. But it takes some time. Basically, I do this:

  • open the app
  • click on the bluetooth icon, to activate it
  • I use the scale
  • then I see the same pop-up like the one mentioned above, something like cannot notify
  • I wait for several seconds (30 or more), and then suddenly it syncs with the scale

With the previous version, I usually opened the app, wait 3-5 seconds to find the scale and then synchronize with it.

I can provide with logs, if I can do it from the mobile app itself (I don't have development environment for Android)

cmmata avatar Dec 09 '25 18:12 cmmata

Can confirm issues with MIBFS sync and CSV backups import. Rolling back to 2.5.3 fixes both issues.

senz avatar Dec 09 '25 18:12 senz

Same problem here and obviously database was converted, app crashes when just installing the previous apk. So no way back to the previous version.

AlphaDE avatar Dec 10 '25 15:12 AlphaDE

While troubleshooting, I tried rolling back, couldn't import my CSV, then reinstalled v3 & restored my backup. During the restore, I had to re-add the scale & now it's working properly with my history intact.

Can another affected user try re-adding the scale under "Settings -> Bluetooth" or restoring a backup to a fresh install.

denharad avatar Dec 21 '25 05:12 denharad

Can another affected user try re-adding the scale under "Settings -> Bluetooth"

Deleted the scales and added them back. Nothing has changed: the error persists, measurement results are not received.

shilin-da avatar Dec 21 '25 18:12 shilin-da

Can another affected user try re-adding the scale under "Settings -> Bluetooth" or restoring a backup to a fresh install.

Somehow it kinda worked? Error message popped up but sync did work.

Steps I took
  • create backup
  • delete user data and cache, then uninstall
  • reinstall 3.0 from f-droid
  • stand on scale for a moment to turn on
  • go to settings -> bluetooth, give permission, select scale
  • click on bluetooth button on main screen, got asked to create user
  • restore backup
  • connect per bluetooth, error message pops up, but 8 records got synced (which I previously deleted when trying this)
  • disconnect
  • stand on scale to weigh
  • step off, click main bluetooth button, error message pops up but new record is received

Will see if it keeps working over the next days.

nonvenomous avatar Dec 21 '25 18:12 nonvenomous

I've got the same issue. Just updated today in the background, went to sync my latest measurement but the interface was horrid and cluttered, it had forgotten the mi scale, and when trying to add it fresh and sync got the same notify error as OP

UltraSalem avatar Dec 27 '25 23:12 UltraSalem

Apart from the sync issues with MI 2 scale, I've also noticed that the measurement of muscle % drastically dropped by 32%! from 68% to 36%

Image

kowalcj0 avatar Dec 28 '25 11:12 kowalcj0

In my case also the historical weight values dropped. Was there a faulty conversion? Or is that a setting that needs to be changed? 🤔

alexanderadam avatar Jan 02 '26 14:01 alexanderadam

Experiencing the same issue. I'm an Android dev myself and have access to the hardware - let me know if you would like to do a pair debug session, @oliexdev!

mots avatar Jan 04 '26 11:01 mots

@Mots Hi, unfortunately, I cannot provide a definitive solution because for some users it works fine, and for others it doesn’t. All the relevant information is available here:

Xiaomi Bluetooth Mi Scale

How to support a new scale

Recently, I made some fixes addressing timing issues (see #1259), which might also resolve this problem. Please try setting the BLE tuning to conservative and share the log files if the issue persists.

I do wonder why so many users report that it doesn’t work, but only a couple actually post debug logs—it makes troubleshooting much harder. It’s a bit disappointing that most people only complain instead of actively helping to find a solution.

oliexdev avatar Jan 04 '26 13:01 oliexdev

Can another affected user try re-adding the scale under "Settings -> Bluetooth" or restoring a backup to a fresh install.

Somehow it kinda worked? Error message popped up but sync did work. Steps I took

Will see if it keeps working over the next days.

Well it's a couple days later now and the behavior I described in my previous comment has been consistent. The error still pops up every time but syncing hasn't been an issue since.

Note I'm still on 3.0

Debug Log
Field Value
Time 2026-01-04 13:12:31.611
Session ID 19b88ec61fb
App openScale
Version 3.0 (70)
Package com.health.openscale
Build Type release
Device Google Pixel 9
Android 16 (API 36)
Build ID BP3A.251105.015
Build Time 2025-12-01T12:00:14Z
Git SHA e28baf50
? 2026-01-04 13:12:31.612 D/openScaleLog: Initial markdown-diff headers written to: /storage/emulated/0/Android/data/com.health.openscale/files/logs/openScale_current_log.txt
? 2026-01-04 13:12:31.612 D/openScaleLog: Markdown diff block closed.
+ 2026-01-04 13:12:31.613 I/openScaleLog: File logging enabled during runtime – started fresh session log.
? 2026-01-04 13:12:57.533 D/BluetoothTopBar: User clicked bluetooth icon connect → trying to connect to saved device MIBFS
+ 2026-01-04 13:12:57.534 I/BleConnector: Attempting to connect to MIBFS
? 2026-01-04 13:12:57.534 D/BleConnector: Switching to new device: Releasing active communicator: null
? 2026-01-04 13:12:57.534 D/BleConnector: Switching to new device: Active communicator released and set to null.
? 2026-01-04 13:12:57.534 D/ScaleHandlerFactory: createCommunicator: Searching for communicator for 'MIBFS' (5C:CA:D3:98:45:1C). Handler hint: 'Xiaomi Mi Scale v2'
+ 2026-01-04 13:12:57.535 I/ScaleHandlerFactory: Modern handler 'Xiaomi Mi Scale v2' supports 'MIBFS'.
+ 2026-01-04 13:12:57.536 I/ScaleHandlerFactory: Modern communicator 'GattScaleAdapter' created for 'MIBFS' with linkMode=CONNECT_GATT.
+ 2026-01-04 13:12:57.536 I/BleConnector: ActiveCommunicator successfully created: GattScaleAdapter. Starting observation job...
? 2026-01-04 13:12:57.536 D/BleConnector: Adapter isConnected: false for MIBFS (Status: CONNECTING)
+ 2026-01-04 13:12:57.536 I/BleConnector: Adapter no longer reports connected for MIBFS. Current status: CONNECTING. Expecting Disconnected Event.
+ 2026-01-04 13:12:59.172 I/GattScaleAdapter: Found 5C:CA:D3:98:45:1C → stop scan + connect
? 2026-01-04 13:13:01.083 D/GattScaleAdapter: Services discovered for 5C:CA:D3:98:45:1C
? 2026-01-04 13:13:01.085 D/MiScaleHandler: attach()
? 2026-01-04 13:13:01.086 D/MiScaleHandler: handleConnected(userId=1, height=185.0, age=28)
+ 2026-01-04 13:13:01.086 I/MiScaleHandler: Connected (V2); init sequence
? 2026-01-04 13:13:01.088 D/MiScaleHandler: Unit set (v2): payload=[06 04 00 00]
? 2026-01-04 13:13:01.088 D/MiScaleHandler: Current time written (primary).
? 2026-01-04 13:13:01.090 D/BleConnector: Adapter isConnected: true for MIBFS (Status: CONNECTING)
+ 2026-01-04 13:13:01.091 I/BleConnector: Successfully connected to MIBFS via adapter's isConnected flow.
? 2026-01-04 13:13:01.091 D/BleConnector: BluetoothEvent received: Connected(deviceName=MIBFS, deviceAddress=5C:CA:D3:98:45:1C) for MIBFS
+ 2026-01-04 13:13:01.091 I/BleConnector: Event: Connected to MIBFS (5C:CA:D3:98:45:1C)
? 2026-01-04 13:13:01.092 D/BleConnector: BluetoothEvent received: DeviceMessage(message=Waiting for measurement via notifications., deviceAddress=5C:CA:D3:98:45:1C) for MIBFS
? 2026-01-04 13:13:01.092 D/BleConnector: Event: Message from MIBFS: Waiting for measurement via notifications.
? 2026-01-04 13:13:01.171 D/GattScaleAdapter: → write to chr=00001542-0000-3512-2118-0009af100700 svc=00001530-0000-3512-2118-0009af100700 len=4 withResp=true payload=[06 04 00 00]
? 2026-01-04 13:13:01.706 D/GattScaleAdapter: ← write response chr=00001542-0000-3512-2118-0009af100700 len=4 status=SUCCESS payload=[06 04 00 00]
? 2026-01-04 13:13:01.812 D/GattScaleAdapter: → write to chr=00002a2b-0000-1000-8000-00805f9b34fb svc=0000181b-0000-1000-8000-00805f9b34fb len=10 withResp=true payload=[EA 07 01 04 0C 0D 01 00 00 01]
? 2026-01-04 13:13:01.827 D/GattScaleAdapter: ← write response chr=00002a2b-0000-1000-8000-00805f9b34fb len=10 status=SUCCESS payload=[EA 07 01 04 0C 0D 01 00 00 01]
? 2026-01-04 13:13:01.848 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb
? 2026-01-04 13:13:01.877 D/GattScaleAdapter: ← notify state chr=00002a2f-0000-3512-2118-0009af100700 status=SUCCESS
? 2026-01-04 13:13:02.081 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 96 8A BD 62]
! 2026-01-04 13:13:02.096 W/MiScaleHandler: No history count response on primary; attempting fallback (ALL records).
? 2026-01-04 13:13:02.097 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 96 8A BD 62]
? 2026-01-04 13:13:02.199 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 FF FF 00 01]
? 2026-01-04 13:13:02.217 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 FF FF 00 01]
? 2026-01-04 13:13:02.318 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[02]
? 2026-01-04 13:13:02.337 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[02]
? 2026-01-04 13:13:02.439 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 96 8A BD 62]
? 2026-01-04 13:13:02.456 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 96 8A BD 62]
? 2026-01-04 13:13:02.558 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 00 00 00 01]
? 2026-01-04 13:13:02.576 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 00 00 00 01]
? 2026-01-04 13:13:02.677 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[02]
? 2026-01-04 13:13:02.696 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[02]
? 2026-01-04 13:13:02.717 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb
! 2026-01-04 13:13:02.719 W/GattScaleAdapter: Failed to initiate notify for 00002a2f-0000-3512-2118-0009af100700
? 2026-01-04 13:13:02.720 D/BleConnector: BluetoothEvent received: DeviceMessage(message=Failed to enable notifications for 00002a2f-0000-3512-2118-0009af100700., deviceAddress=5C:CA:D3:98:45:1C) for MIBFS
? 2026-01-04 13:13:02.720 D/BleConnector: Event: Message from MIBFS: Failed to enable notifications for 00002a2f-0000-3512-2118-0009af100700.
? 2026-01-04 13:13:02.939 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 0E 00 96 8A BD 62]
? 2026-01-04 13:13:03.073 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 01 00 FF FF 00 01]
? 2026-01-04 13:13:03.267 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 0E 00 96 8A BD 62]
? 2026-01-04 13:13:03.402 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 0E 00 00 00 00 01]
+ 2026-01-04 13:13:03.402 I/MiScaleHandler: History count announced (marker=0): 14
? 2026-01-04 13:13:03.491 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 11 1B FD FF CE 09]
? 2026-01-04 13:13:03.687 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 12 27 FD FF 3E 08]
? 2026-01-04 13:13:03.882 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 12 2C FD FF 52 08]
? 2026-01-04 13:13:04.095 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 13 03 FD FF A2 08]
? 2026-01-04 13:13:04.365 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 1E 30 FD FF BA 09]
? 2026-01-04 13:13:04.527 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 1F 07 FD FF 9C 09]
? 2026-01-04 13:13:04.739 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 05 08 1D 2E FD FF D2 41]
? 2026-01-04 13:13:04.962 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 0C 09 00 03 57 02 10 40]
? 2026-01-04 13:13:05.200 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 15 0C 1D 25 4A 02 6A 40]
? 2026-01-04 13:13:05.412 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 16 07 33 13 6F 02 CA 3F]
? 2026-01-04 13:13:05.622 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 1A 0A 30 1A 59 02 6A 40]
? 2026-01-04 13:13:05.832 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 1D 0A 31 34 48 02 A6 40]
? 2026-01-04 13:13:06.049 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 EA 07 01 02 08 3A 1A 65 02 2E 40]
? 2026-01-04 13:13:06.252 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 EA 07 01 04 0C 0C 2A 4B 02 32 41]
+ 2026-01-04 13:13:06.254 I/MiScaleHandler: ← publish measurement to app
? 2026-01-04 13:13:06.264 D/BleConnector: BluetoothEvent received: MeasurementReceived(measurement=ScaleMeasurement(userId=1, dateTime=Sun Jan 04 13:12:00 GMT+01:00 2026, weight=83.45, fat=23.760563, water=52.300255, muscle=36.33227, visceralFat=13.426872, bone=3.242708, lbm=60.379105, bmr=0.0, impedance=0.0, height=0.0, weightUnit=null), deviceAddress=5C:CA:D3:98:45:1C) for MIBFS
+ 2026-01-04 13:13:06.264 I/BleConnector: Event: Measurement received from MIBFS: Weight 83.45
+ 2026-01-04 13:13:06.264 I/BleConnector: (MIBFS): Saving measurement for App User ID 1.
? 2026-01-04 13:13:06.272 D/DatabaseRepository: Inserting measurement for user id: 1
? 2026-01-04 13:13:06.274 D/DatabaseRepository: New measurement inserted with id: 247. Recalculating derived values.
+ 2026-01-04 13:13:06.275 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
? 2026-01-04 13:13:06.281 D/DerivedValuesProcess: BMR calculation skipped: Missing/invalid weight, height or age (28).
? 2026-01-04 13:13:06.281 D/DerivedValuesProcess: TDEE calculation skipped: Missing or invalid BMR or activity level.
+ 2026-01-04 13:13:06.282 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 7 ms.
? 2026-01-04 13:13:06.282 D/DatabaseRepository: Inserting measurement value for measurement id: 247, typeId: 1
? 2026-01-04 13:13:06.305 D/DatabaseRepository: Recalculating derived values for measurement id: 247
+ 2026-01-04 13:13:06.306 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
+ 2026-01-04 13:13:06.355 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 48 ms.
? 2026-01-04 13:13:06.355 D/DatabaseRepository: Inserting measurement value for measurement id: 247, typeId: 3
? 2026-01-04 13:13:06.370 D/DatabaseRepository: Recalculating derived values for measurement id: 247
+ 2026-01-04 13:13:06.372 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
+ 2026-01-04 13:13:06.380 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 8 ms.
? 2026-01-04 13:13:06.381 D/DatabaseRepository: Inserting measurement value for measurement id: 247, typeId: 4
? 2026-01-04 13:13:06.390 D/DatabaseRepository: Recalculating derived values for measurement id: 247
+ 2026-01-04 13:13:06.391 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
+ 2026-01-04 13:13:06.396 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 4 ms.
? 2026-01-04 13:13:06.396 D/DatabaseRepository: Inserting measurement value for measurement id: 247, typeId: 5
? 2026-01-04 13:13:06.414 D/DatabaseRepository: Recalculating derived values for measurement id: 247
+ 2026-01-04 13:13:06.415 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
+ 2026-01-04 13:13:06.419 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 4 ms.
? 2026-01-04 13:13:06.420 D/DatabaseRepository: Inserting measurement value for measurement id: 247, typeId: 12
? 2026-01-04 13:13:06.427 D/DatabaseRepository: Recalculating derived values for measurement id: 247
+ 2026-01-04 13:13:06.428 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
+ 2026-01-04 13:13:06.432 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 3 ms.
? 2026-01-04 13:13:06.432 D/DatabaseRepository: Inserting measurement value for measurement id: 247, typeId: 7
? 2026-01-04 13:13:06.443 D/DatabaseRepository: Recalculating derived values for measurement id: 247
+ 2026-01-04 13:13:06.443 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
+ 2026-01-04 13:13:06.449 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 5 ms.
? 2026-01-04 13:13:06.449 D/DatabaseRepository: Inserting measurement value for measurement id: 247, typeId: 6
? 2026-01-04 13:13:06.456 D/DatabaseRepository: Recalculating derived values for measurement id: 247
+ 2026-01-04 13:13:06.456 I/DerivedValues: Starting recalculation of derived values for measurementId: 247
+ 2026-01-04 13:13:06.462 I/DerivedValues: Finished recalculation of derived values for measurementId: 247. Took 5 ms.
+ 2026-01-04 13:13:06.490 I/BleConnector: Measurement from MIBFS for User 1 saved (ID: kotlin.Unit). Values: 7
? 2026-01-04 13:13:06.527 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[03]
+ 2026-01-04 13:13:06.527 I/MiScaleHandler: History import done: 1 record(s). Announced=14
? 2026-01-04 13:13:06.609 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[03]
? 2026-01-04 13:13:06.645 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[03]
? 2026-01-04 13:13:06.714 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[04 FF FF 00 01]
? 2026-01-04 13:13:06.729 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[04 FF FF 00 01]

nonvenomous avatar Jan 04 '26 14:01 nonvenomous

Note I'm still on 3.0

You have to test always with the latest dev version -> https://github.com/oliexdev/openScale/releases/tag/dev-build

oliexdev avatar Jan 04 '26 15:01 oliexdev

Hi @oliexdev ,

I just tried latest dev build. It shows no "Failed to enable notifications for ..." error (as 3.0 (70) does), unfortunately the "no measurements received" part persists. Neither new (current) entry, nor historical ones are obtained.

Field Value
Time 2026-01-04 19:23:12.625
Timezone Europe/Moscow (UTC 3h)
Session ID 19b89d1e3f1
App openScale
Version 3.0.1-debug (71)
Package com.health.openscale.debug
Build Type debug
Device samsung SM-G736B
Android 16 (API 36)
Build ID BP2A.250605.031.A3.G736BXXSAGYL1
Build Time 2026-01-04T12:52:10Z
Git SHA 417aa74
? 2026-01-04 19:23:12.620 D/openScaleLog: Markdown diff block closed.
? 2026-01-04 19:23:12.625 D/openScaleLog: Initial markdown-diff headers written to: /storage/emulated/0/Android/data/com.health.openscale.debug/files/logs/openScale_current_log.txt
+ 2026-01-04 19:23:12.628 I/openScaleLog: File logging enabled during runtime – started fresh session log.
? 2026-01-04 19:23:18.351 D/BluetoothTopBar: User clicked bluetooth icon connect → trying to connect to saved device MI SCALE2
+ 2026-01-04 19:23:18.353 I/BleConnector: Attempting to connect to MI SCALE2
? 2026-01-04 19:23:18.353 D/BleConnector: Switching to new device: Releasing active communicator: null
? 2026-01-04 19:23:18.354 D/BleConnector: Switching to new device: Active communicator released and set to null.
? 2026-01-04 19:23:18.354 D/ScaleHandlerFactory: createCommunicator: Searching for communicator for 'MI SCALE2' (70:87:9E:BB:15:EF). Handler hint: 'Xiaomi Mi Scale v2'
+ 2026-01-04 19:23:18.355 I/ScaleHandlerFactory: Modern handler 'Xiaomi Mi Scale v2' supports 'MI SCALE2'.
+ 2026-01-04 19:23:18.369 I/ScaleHandlerFactory: Modern communicator 'GattScaleAdapter' created for 'MI SCALE2' with linkMode=CONNECT_GATT.
+ 2026-01-04 19:23:18.370 I/BleConnector: ActiveCommunicator successfully created: GattScaleAdapter. Starting observation job...
? 2026-01-04 19:23:18.371 D/BleConnector: Adapter isConnected: false for MI SCALE2 (Status: CONNECTING)
+ 2026-01-04 19:23:18.372 I/BleConnector: Adapter no longer reports connected for MI SCALE2. Current status: CONNECTING. Expecting Disconnected Event.
+ 2026-01-04 19:23:19.043 I/GattScaleAdapter: Found 70:87:9E:BB:15:EF → stop scan + connect
? 2026-01-04 19:23:21.388 D/GattScaleAdapter: Services discovered for 70:87:9E:BB:15:EF
? 2026-01-04 19:23:21.401 D/MiScaleHandler: attach()
+ 2026-01-04 19:23:21.402 I/MiScaleHandler: Connected (V2); init sequence
? 2026-01-04 19:23:21.405 D/MiScaleHandler: Unit set (v2): payload=[06 04 00 00]
? 2026-01-04 19:23:21.406 D/MiScaleHandler: Current time written (primary).
? 2026-01-04 19:23:21.408 D/BleConnector: Adapter isConnected: true for MI SCALE2 (Status: CONNECTING)
+ 2026-01-04 19:23:21.409 I/BleConnector: Successfully connected to MI SCALE2 via adapter's isConnected flow.
? 2026-01-04 19:23:21.409 D/BleConnector: BluetoothEvent received: Connected(deviceName=MI SCALE2, deviceAddress=70:87:9E:BB:15:EF) for MI SCALE2
+ 2026-01-04 19:23:21.410 I/BleConnector: Event: Connected to MI SCALE2 (70:87:9E:BB:15:EF)
? 2026-01-04 19:23:21.402 D/MiScaleHandler: handleConnected(userId=1, height=185.0, age=37)
? 2026-01-04 19:23:21.410 D/BleConnector: BluetoothEvent received: DeviceMessage(message=Waiting for measurement via notifications., deviceAddress=70:87:9E:BB:15:EF) for MI SCALE2
? 2026-01-04 19:23:21.411 D/BleConnector: Event: Message from MI SCALE2: Waiting for measurement via notifications.
? 2026-01-04 19:23:21.509 D/GattScaleAdapter: → write to chr=00001542-0000-3512-2118-0009af100700 svc=00001530-0000-3512-2118-0009af100700 len=4 withResp=true payload=[06 04 00 00]
? 2026-01-04 19:23:21.955 D/GattScaleAdapter: ← write response chr=00001542-0000-3512-2118-0009af100700 len=4 status=SUCCESS payload=[06 04 00 00]
? 2026-01-04 19:23:21.990 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb
! 2026-01-04 19:23:21.991 W/GattScaleAdapter: Failed to initiate notify for 00002a2f-0000-3512-2118-0009af100700
! 2026-01-04 19:23:22.416 W/MiScaleHandler: No history count response on primary; attempting fallback (ALL records).
? 2026-01-04 19:23:22.418 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb
? 2026-01-04 19:23:22.453 D/GattScaleAdapter: ← notify state chr=00002a2f-0000-3512-2118-0009af100700 status=SUCCESS
? 2026-01-04 19:23:22.719 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 96 8A BD 62]
? 2026-01-04 19:23:22.778 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 3C 00 96 8A BD 62]
? 2026-01-04 19:23:22.779 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 96 8A BD 62]
? 2026-01-04 19:23:22.915 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 00 00 00 01]
? 2026-01-04 19:23:22.957 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 00 00 00 01]
+ 2026-01-04 19:23:22.959 I/MiScaleHandler: History count announced (marker=0): 60
? 2026-01-04 19:23:22.958 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 3C 00 00 00 00 01]
? 2026-01-04 19:23:23.097 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[02]
? 2026-01-04 19:23:23.137 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[02]
? 2026-01-04 19:23:23.139 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 AE 3D E9 07 0A 11 07 2B 14 22 76 48 E9 07 0A 12 0F 26 1D]
? 2026-01-04 19:23:23.141 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 2A 49 E9 07 0A 15 10 06 1C 22 B4 3C E9 07 0A 18 07 25 12]
? 2026-01-04 19:23:23.142 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 9A 47 E9 07 0A 1D 0C 0B 32 22 5E 3D E9 07 0B 03 09 2E 1B]
? 2026-01-04 19:23:23.143 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 02 49 E9 07 0B 03 0F 02 11 22 2C 3D E9 07 0B 04 08 2C 09]
? 2026-01-04 19:23:23.145 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 A0 3C E9 07 0B 06 09 15 00 22 F0 3C E9 07 0B 07 0A 27 14]
? 2026-01-04 19:23:23.153 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 BE 3C E9 07 0B 0A 0A 1A 08 22 78 3C E9 07 0B 0C 07 16 3A]
? 2026-01-04 19:23:23.155 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 D2 3C E9 07 0B 0D 06 24 2C 22 96 3C E9 07 0B 0E 06 3B 35]
? 2026-01-04 19:23:23.157 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 96 3C E9 07 0B 0F 0A 13 26 22 04 3D E9 07 0B 10 09 1A 21]
? 2026-01-04 19:23:23.158 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 40 3D E9 07 0B 11 06 2B 3A 22 B4 3C E9 07 0B 12 06 32 2D]
? 2026-01-04 19:23:23.160 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 78 3C E9 07 0B 13 06 3A 3A 22 AA 3C E9 07 0B 14 06 35 2C]
? 2026-01-04 19:23:23.167 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 08 48 E9 07 0B 14 09 19 10 22 78 3C E9 07 0B 15 06 3B 28]
? 2026-01-04 19:23:23.169 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 50 3C E9 07 0B 16 0B 2F 0E 22 50 3C E9 07 0B 17 09 2E 3B]
? 2026-01-04 19:23:23.170 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 50 3C E9 07 0B 17 09 2F 23 22 64 3C E9 07 0B 18 06 35 20]
? 2026-01-04 19:23:23.171 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 76 48 E9 07 0B 18 09 18 26 22 28 3C E9 07 0B 19 06 28 2F]
? 2026-01-04 19:23:23.172 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 B0 3B E9 07 0B 1A 07 18 05 22 D8 3B E9 07 0B 1B 06 35 01]
? 2026-01-04 19:23:23.182 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 1E 3C E9 07 0B 1C 07 02 0C 22 46 3C E9 07 0B 1D 08 1C 2B]
? 2026-01-04 19:23:23.183 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 8C 3C E9 07 0B 1E 09 26 13 22 04 3D E9 07 0C 01 06 26 02]
? 2026-01-04 19:23:23.184 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 D6 47 E9 07 0C 01 09 1B 1F 22 80 48 E9 07 0C 01 15 00 30]
? 2026-01-04 19:23:23.185 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 64 3C E9 07 0C 02 07 02 05 22 BA 3B E9 07 0C 03 07 08 24]
? 2026-01-04 19:23:23.186 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 1C 48 E9 07 0C 03 0D 11 38 22 9C 3B E9 07 0C 04 07 08 20]
? 2026-01-04 19:23:23.197 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 EA 47 E9 07 0C 04 0B 1E 10 22 B0 3B E9 07 0C 05 06 38 04]
? 2026-01-04 19:23:23.198 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 CE 3B E9 07 0C 06 0B 12 38 22 BA 3B E9 07 0C 07 0B 24 14]
? 2026-01-04 19:23:23.199 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 14 3C E9 07 0C 08 07 07 21 22 00 3C E9 07 0C 09 07 07 27]
? 2026-01-04 19:23:23.200 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 00 3C E9 07 0C 0A 07 04 12 22 08 48 E9 07 0C 0A 09 1A 13]
? 2026-01-04 19:23:23.201 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 3C 3C E9 07 0C 0B 07 14 14 22 64 3C E9 07 0C 10 07 0A 38]
? 2026-01-04 19:23:23.212 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 80 48 E9 07 0C 15 15 01 06 22 FA 3C E9 07 0C 19 07 15 34]
? 2026-01-04 19:23:23.213 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 4A 3D EA 07 01 02 0B 26 16 22 FC 49 EA 07 01 02 0F 1C 02]
? 2026-01-04 19:23:23.214 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 4A 3D EA 07 01 03 0B 1D 31 22 E6 3C EA 07 01 04 0C 0A 34]
? 2026-01-04 19:23:23.215 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 2A 49 EA 07 01 04 13 22 05 22 3E 49 EA 07 01 04 13 22 11]
? 2026-01-04 19:23:23.216 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 3E 49 EA 07 01 04 13 23 00 22 2A 49 EA 07 01 04 13 24 25]
? 2026-01-04 19:23:23.225 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[03]
+ 2026-01-04 19:23:23.226 I/MiScaleHandler: History import done: 0 record(s). Announced=60
? 2026-01-04 19:24:08.129 D/UserSettingsRepository: Setting current user ID to: 2
+ 2026-01-04 19:24:08.148 I/SharedViewModel: Selected user: 2
+ 2026-01-04 19:24:08.213 I/BluetoothFacade: User context updated -> stv
? 2026-01-04 19:24:11.891 D/UserSettingsRepository: Setting current user ID to: 1
+ 2026-01-04 19:24:11.900 I/SharedViewModel: Selected user: 1
+ 2026-01-04 19:24:11.958 I/BluetoothFacade: User context updated -> sda
+ 2026-01-04 19:24:31.220 I/BleConnector: disconnect() called for MI SCALE2. Active communicator: true, Status: CONNECTED
? 2026-01-04 19:24:31.222 D/BleConnector: Adapter isConnected: false for MI SCALE2 (Status: DISCONNECTING)
+ 2026-01-04 19:24:31.222 I/BleConnector: Adapter no longer reports connected for MI SCALE2. Current status: DISCONNECTING. Expecting Disconnected Event.
+ 2026-01-04 19:24:31.249 I/GattScaleAdapter: Disconnected 70:87:9E:BB:15:EF: SUCCESS
? 2026-01-04 19:24:31.250 D/MiScaleHandler: handleDisconnected()
? 2026-01-04 19:24:31.251 D/MiScaleHandler: detach()
? 2026-01-04 19:24:31.251 D/BleConnector: BluetoothEvent received: Disconnected(deviceAddress=70:87:9E:BB:15:EF, reason=SUCCESS) for MI SCALE2
+ 2026-01-04 19:24:31.252 I/BleConnector: Event: Disconnected from 70:87:9E:BB:15:EF. Reason: SUCCESS
? 2026-01-04 19:24:31.252 D/BleConnector: Disconnected event: Releasing active communicator: GattScaleAdapter
? 2026-01-04 19:24:31.253 D/BleConnector: Disconnected event: Active communicator released and set to null.
? 2026-01-04 19:24:37.399 D/BluetoothTopBar: User clicked bluetooth icon connect → trying to connect to saved device MI SCALE2
+ 2026-01-04 19:24:37.401 I/BleConnector: Attempting to connect to MI SCALE2
? 2026-01-04 19:24:37.402 D/BleConnector: Switching to new device: Releasing active communicator: null
? 2026-01-04 19:24:37.402 D/BleConnector: Switching to new device: Active communicator released and set to null.
? 2026-01-04 19:24:37.404 D/ScaleHandlerFactory: createCommunicator: Searching for communicator for 'MI SCALE2' (70:87:9E:BB:15:EF). Handler hint: 'Xiaomi Mi Scale v2'
+ 2026-01-04 19:24:37.406 I/ScaleHandlerFactory: Modern handler 'Xiaomi Mi Scale v2' supports 'MI SCALE2'.
+ 2026-01-04 19:24:37.410 I/ScaleHandlerFactory: Modern communicator 'GattScaleAdapter' created for 'MI SCALE2' with linkMode=CONNECT_GATT.
+ 2026-01-04 19:24:37.410 I/BleConnector: ActiveCommunicator successfully created: GattScaleAdapter. Starting observation job...
? 2026-01-04 19:24:37.411 D/BleConnector: Adapter isConnected: false for MI SCALE2 (Status: CONNECTING)
+ 2026-01-04 19:24:37.411 I/BleConnector: Adapter no longer reports connected for MI SCALE2. Current status: CONNECTING. Expecting Disconnected Event.
+ 2026-01-04 19:24:37.650 I/GattScaleAdapter: Found 70:87:9E:BB:15:EF → stop scan + connect
? 2026-01-04 19:24:39.665 D/GattScaleAdapter: Services discovered for 70:87:9E:BB:15:EF
+ 2026-01-04 19:24:39.668 I/MiScaleHandler: Connected (V2); init sequence
? 2026-01-04 19:24:39.669 D/MiScaleHandler: Unit set (v2): payload=[06 04 00 00]
? 2026-01-04 19:24:39.666 D/MiScaleHandler: attach()
? 2026-01-04 19:24:39.670 D/MiScaleHandler: Current time written (primary).
? 2026-01-04 19:24:39.671 D/BleConnector: BluetoothEvent received: DeviceMessage(message=Waiting for measurement via notifications., deviceAddress=70:87:9E:BB:15:EF) for MI SCALE2
? 2026-01-04 19:24:39.672 D/BleConnector: Event: Message from MI SCALE2: Waiting for measurement via notifications.
? 2026-01-04 19:24:39.673 D/BleConnector: BluetoothEvent received: Connected(deviceName=MI SCALE2, deviceAddress=70:87:9E:BB:15:EF) for MI SCALE2
+ 2026-01-04 19:24:39.673 I/BleConnector: Event: Connected to MI SCALE2 (70:87:9E:BB:15:EF)
? 2026-01-04 19:24:39.667 D/MiScaleHandler: handleConnected(userId=1, height=185.0, age=37)
? 2026-01-04 19:24:39.675 D/BleConnector: Adapter isConnected: true for MI SCALE2 (Status: CONNECTED)
? 2026-01-04 19:24:39.772 D/GattScaleAdapter: → write to chr=00001542-0000-3512-2118-0009af100700 svc=00001530-0000-3512-2118-0009af100700 len=4 withResp=true payload=[06 04 00 00]
? 2026-01-04 19:24:40.222 D/GattScaleAdapter: ← write response chr=00001542-0000-3512-2118-0009af100700 len=4 status=SUCCESS payload=[06 04 00 00]
? 2026-01-04 19:24:40.257 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb
! 2026-01-04 19:24:40.258 W/GattScaleAdapter: Failed to initiate notify for 00002a2f-0000-3512-2118-0009af100700
! 2026-01-04 19:24:40.684 W/MiScaleHandler: No history count response on primary; attempting fallback (ALL records).
? 2026-01-04 19:24:40.687 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb
? 2026-01-04 19:24:40.718 D/GattScaleAdapter: ← notify state chr=00002a2f-0000-3512-2118-0009af100700 status=SUCCESS
? 2026-01-04 19:24:40.987 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 96 8A BD 62]
? 2026-01-04 19:24:41.033 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 96 8A BD 62]
? 2026-01-04 19:24:41.048 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 3D 00 96 8A BD 62]
? 2026-01-04 19:24:41.171 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 00 00 00 01]
? 2026-01-04 19:24:41.212 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 00 00 00 01]
? 2026-01-04 19:24:41.214 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 3D 00 00 00 00 01]
+ 2026-01-04 19:24:41.215 I/MiScaleHandler: History count announced (marker=0): 61
? 2026-01-04 19:24:41.351 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[02]
? 2026-01-04 19:24:41.394 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 AE 3D E9 07 0A 11 07 2B 14 22 76 48 E9 07 0A 12 0F 26 1D]
? 2026-01-04 19:24:41.396 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[02]
? 2026-01-04 19:24:41.398 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 2A 49 E9 07 0A 15 10 06 1C 22 B4 3C E9 07 0A 18 07 25 12]
? 2026-01-04 19:24:41.399 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 9A 47 E9 07 0A 1D 0C 0B 32 22 5E 3D E9 07 0B 03 09 2E 1B]
? 2026-01-04 19:24:41.401 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 02 49 E9 07 0B 03 0F 02 11 22 2C 3D E9 07 0B 04 08 2C 09]
? 2026-01-04 19:24:41.402 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 A0 3C E9 07 0B 06 09 15 00 22 F0 3C E9 07 0B 07 0A 27 14]
? 2026-01-04 19:24:41.405 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 BE 3C E9 07 0B 0A 0A 1A 08 22 78 3C E9 07 0B 0C 07 16 3A]
? 2026-01-04 19:24:41.408 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 D2 3C E9 07 0B 0D 06 24 2C 22 96 3C E9 07 0B 0E 06 3B 35]
? 2026-01-04 19:24:41.410 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 96 3C E9 07 0B 0F 0A 13 26 22 04 3D E9 07 0B 10 09 1A 21]
? 2026-01-04 19:24:41.411 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 40 3D E9 07 0B 11 06 2B 3A 22 B4 3C E9 07 0B 12 06 32 2D]
? 2026-01-04 19:24:41.422 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 78 3C E9 07 0B 13 06 3A 3A 22 AA 3C E9 07 0B 14 06 35 2C]
? 2026-01-04 19:24:41.423 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 08 48 E9 07 0B 14 09 19 10 22 78 3C E9 07 0B 15 06 3B 28]
? 2026-01-04 19:24:41.424 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 50 3C E9 07 0B 16 0B 2F 0E 22 50 3C E9 07 0B 17 09 2E 3B]
? 2026-01-04 19:24:41.425 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 50 3C E9 07 0B 17 09 2F 23 22 64 3C E9 07 0B 18 06 35 20]
? 2026-01-04 19:24:41.426 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 76 48 E9 07 0B 18 09 18 26 22 28 3C E9 07 0B 19 06 28 2F]
? 2026-01-04 19:24:41.437 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 B0 3B E9 07 0B 1A 07 18 05 22 D8 3B E9 07 0B 1B 06 35 01]
? 2026-01-04 19:24:41.438 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 1E 3C E9 07 0B 1C 07 02 0C 22 46 3C E9 07 0B 1D 08 1C 2B]
? 2026-01-04 19:24:41.439 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 8C 3C E9 07 0B 1E 09 26 13 22 04 3D E9 07 0C 01 06 26 02]
? 2026-01-04 19:24:41.440 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 D6 47 E9 07 0C 01 09 1B 1F 22 80 48 E9 07 0C 01 15 00 30]
? 2026-01-04 19:24:41.442 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 64 3C E9 07 0C 02 07 02 05 22 BA 3B E9 07 0C 03 07 08 24]
? 2026-01-04 19:24:41.452 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 1C 48 E9 07 0C 03 0D 11 38 22 9C 3B E9 07 0C 04 07 08 20]
? 2026-01-04 19:24:41.453 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 EA 47 E9 07 0C 04 0B 1E 10 22 B0 3B E9 07 0C 05 06 38 04]
? 2026-01-04 19:24:41.454 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 CE 3B E9 07 0C 06 0B 12 38 22 BA 3B E9 07 0C 07 0B 24 14]
? 2026-01-04 19:24:41.455 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 14 3C E9 07 0C 08 07 07 21 22 00 3C E9 07 0C 09 07 07 27]
? 2026-01-04 19:24:41.456 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 00 3C E9 07 0C 0A 07 04 12 22 08 48 E9 07 0C 0A 09 1A 13]
? 2026-01-04 19:24:41.465 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 3C 3C E9 07 0C 0B 07 14 14 22 64 3C E9 07 0C 10 07 0A 38]
? 2026-01-04 19:24:41.467 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 80 48 E9 07 0C 15 15 01 06 22 FA 3C E9 07 0C 19 07 15 34]
? 2026-01-04 19:24:41.469 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 4A 3D EA 07 01 02 0B 26 16 22 FC 49 EA 07 01 02 0F 1C 02]
? 2026-01-04 19:24:41.470 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 4A 3D EA 07 01 03 0B 1D 31 22 E6 3C EA 07 01 04 0C 0A 34]
? 2026-01-04 19:24:41.471 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 2A 49 EA 07 01 04 13 22 05 22 3E 49 EA 07 01 04 13 22 11]
? 2026-01-04 19:24:41.480 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=20 status=SUCCESS payload=[22 3E 49 EA 07 01 04 13 23 00 22 2A 49 EA 07 01 04 13 24 25]
? 2026-01-04 19:24:41.481 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=10 status=SUCCESS payload=[22 2A 49 EA 07 01 04 13 2F 0B]
? 2026-01-04 19:24:41.482 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[03]
+ 2026-01-04 19:24:41.482 I/MiScaleHandler: History import done: 0 record(s). Announced=61
? 2026-01-04 19:25:47.446 D/MiScaleHandler: detach()
? 2026-01-04 19:25:47.447 D/BleConnector: BluetoothEvent received: Disconnected(deviceAddress=70:87:9E:BB:15:EF, reason=REMOTE_USER_TERMINATED_CONNECTION) for MI SCALE2
+ 2026-01-04 19:25:47.447 I/BleConnector: Event: Disconnected from 70:87:9E:BB:15:EF. Reason: REMOTE_USER_TERMINATED_CONNECTION
+ 2026-01-04 19:25:47.445 I/GattScaleAdapter: Disconnected 70:87:9E:BB:15:EF: REMOTE_USER_TERMINATED_CONNECTION
? 2026-01-04 19:25:47.446 D/MiScaleHandler: handleDisconnected()
? 2026-01-04 19:25:47.449 D/BleConnector: Disconnected event: Active communicator released and set to null.
? 2026-01-04 19:25:47.448 D/BleConnector: Disconnected event: Releasing active communicator: GattScaleAdapter

shilin-da avatar Jan 04 '26 16:01 shilin-da

Note I'm still on 3.0

You have to test always with the latest dev version -> dev-build (release)

Seems like the dev build synced without any issue. No error pop up IIRC.

Log
Field Value
Time 2026-01-04 17:54:10.535
Timezone Europe/Berlin (UTC 1h)
Session ID 19b89ee3d67
App openScale
Version 3.0.1-debug (71)
Package com.health.openscale.debug
Build Type debug
Device Google Pixel 9
Android 16 (API 36)
Build ID BP3A.251105.015
Build Time 2026-01-04T12:52:10Z
Git SHA 417aa74
? 2026-01-04 17:54:10.534 D/openScaleLog: Initial markdown-diff headers written to: /storage/emulated/0/Android/data/com.health.openscale.debug/files/logs/openScale_current_log.txt
? 2026-01-04 17:54:10.536 D/openScaleLog: Initial markdown-diff headers written to: /storage/emulated/0/Android/data/com.health.openscale.debug/files/logs/openScale_current_log.txt
+ 2026-01-04 17:54:10.537 I/openScaleLog: File logging enabled during runtime – started fresh session log.
? 2026-01-04 17:54:13.190 D/BluetoothTopBar: User clicked bluetooth icon connect → trying to connect to saved device MIBFS
+ 2026-01-04 17:54:13.193 I/BleConnector: Attempting to connect to MIBFS
? 2026-01-04 17:54:13.193 D/BleConnector: Switching to new device: Releasing active communicator: null
? 2026-01-04 17:54:13.193 D/BleConnector: Switching to new device: Active communicator released and set to null.
? 2026-01-04 17:54:13.194 D/ScaleHandlerFactory: createCommunicator: Searching for communicator for 'MIBFS' (5C:CA:D3:98:45:1C). Handler hint: 'Xiaomi Mi Scale v2'
+ 2026-01-04 17:54:13.194 I/ScaleHandlerFactory: Modern handler 'Xiaomi Mi Scale v2' supports 'MIBFS'.
+ 2026-01-04 17:54:13.199 I/ScaleHandlerFactory: Modern communicator 'GattScaleAdapter' created for 'MIBFS' with linkMode=CONNECT_GATT.
+ 2026-01-04 17:54:13.200 I/BleConnector: Adapter no longer reports connected for MIBFS. Current status: CONNECTING. Expecting Disconnected Event.
? 2026-01-04 17:54:13.200 D/BleConnector: Adapter isConnected: false for MIBFS (Status: CONNECTING)
+ 2026-01-04 17:54:13.199 I/BleConnector: ActiveCommunicator successfully created: GattScaleAdapter. Starting observation job...
+ 2026-01-04 17:54:13.639 I/GattScaleAdapter: Found 5C:CA:D3:98:45:1C → stop scan + connect
? 2026-01-04 17:54:15.516 D/GattScaleAdapter: Services discovered for 5C:CA:D3:98:45:1C
? 2026-01-04 17:54:15.519 D/MiScaleHandler: attach()
? 2026-01-04 17:54:15.520 D/MiScaleHandler: handleConnected(userId=1, height=185.0, age=28)
+ 2026-01-04 17:54:15.520 I/MiScaleHandler: Connected (V2); init sequence
? 2026-01-04 17:54:15.522 D/MiScaleHandler: Unit set (v2): payload=[06 04 00 00]
? 2026-01-04 17:54:15.523 D/MiScaleHandler: Current time written (primary).
? 2026-01-04 17:54:15.525 D/BleConnector: Adapter isConnected: true for MIBFS (Status: CONNECTING)
+ 2026-01-04 17:54:15.526 I/BleConnector: Successfully connected to MIBFS via adapter's isConnected flow.
? 2026-01-04 17:54:15.526 D/BleConnector: BluetoothEvent received: Connected(deviceName=MIBFS, deviceAddress=5C:CA:D3:98:45:1C) for MIBFS
+ 2026-01-04 17:54:15.526 I/BleConnector: Event: Connected to MIBFS (5C:CA:D3:98:45:1C)
? 2026-01-04 17:54:15.527 D/BleConnector: BluetoothEvent received: DeviceMessage(message=Waiting for measurement via notifications., deviceAddress=5C:CA:D3:98:45:1C) for MIBFS
? 2026-01-04 17:54:15.528 D/BleConnector: Event: Message from MIBFS: Waiting for measurement via notifications.
? 2026-01-04 17:54:15.608 D/GattScaleAdapter: → write to chr=00001542-0000-3512-2118-0009af100700 svc=00001530-0000-3512-2118-0009af100700 len=4 withResp=true payload=[06 04 00 00]
? 2026-01-04 17:54:16.143 D/GattScaleAdapter: ← write response chr=00001542-0000-3512-2118-0009af100700 len=4 status=SUCCESS payload=[06 04 00 00]
? 2026-01-04 17:54:16.252 D/GattScaleAdapter: → write to chr=00002a2b-0000-1000-8000-00805f9b34fb svc=0000181b-0000-1000-8000-00805f9b34fb len=10 withResp=true payload=[EA 07 01 04 10 36 0F 00 00 01]
? 2026-01-04 17:54:16.263 D/GattScaleAdapter: ← write response chr=00002a2b-0000-1000-8000-00805f9b34fb len=10 status=SUCCESS payload=[EA 07 01 04 10 36 0F 00 00 01]
? 2026-01-04 17:54:16.286 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb
? 2026-01-04 17:54:16.308 D/GattScaleAdapter: ← notify state chr=00002a2f-0000-3512-2118-0009af100700 status=SUCCESS
? 2026-01-04 17:54:16.513 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 96 8A BD 62]
? 2026-01-04 17:54:16.532 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 96 8A BD 62]
! 2026-01-04 17:54:16.534 W/MiScaleHandler: No history count response on primary; attempting fallback (ALL records).
? 2026-01-04 17:54:16.638 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 FF FF 00 01]
? 2026-01-04 17:54:16.651 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 FF FF 00 01]
? 2026-01-04 17:54:16.755 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[02]
? 2026-01-04 17:54:16.772 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[02]
? 2026-01-04 17:54:16.875 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 96 8A BD 62]
? 2026-01-04 17:54:16.891 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 96 8A BD 62]
? 2026-01-04 17:54:16.995 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[01 00 00 00 01]
? 2026-01-04 17:54:17.012 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[01 00 00 00 01]
? 2026-01-04 17:54:17.117 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[02]
? 2026-01-04 17:54:17.120 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 0F 00 96 8A BD 62]
? 2026-01-04 17:54:17.133 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[02]
? 2026-01-04 17:54:17.143 D/GattScaleAdapter: → set notify on chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181d-0000-1000-8000-00805f9b34fb
! 2026-01-04 17:54:17.144 W/GattScaleAdapter: Failed to initiate notify for 00002a2f-0000-3512-2118-0009af100700
? 2026-01-04 17:54:17.253 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 01 00 FF FF 00 01]
? 2026-01-04 17:54:17.451 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 0F 00 96 8A BD 62]
? 2026-01-04 17:54:17.584 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=7 status=SUCCESS payload=[01 0F 00 00 00 00 01]
+ 2026-01-04 17:54:17.585 I/MiScaleHandler: History count announced (marker=0): 15
? 2026-01-04 17:54:17.673 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 11 1B FD FF CE 09]
? 2026-01-04 17:54:17.887 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 12 27 FD FF 3E 08]
? 2026-01-04 17:54:18.094 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 12 2C FD FF 52 08]
? 2026-01-04 17:54:18.319 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 13 03 FD FF A2 08]
? 2026-01-04 17:54:18.529 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 1E 30 FD FF BA 09]
? 2026-01-04 17:54:18.753 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 04 16 1F 07 FD FF 9C 09]
? 2026-01-04 17:54:18.981 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 24 E9 07 0C 05 08 1D 2E FD FF D2 41]
? 2026-01-04 17:54:19.176 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 0C 09 00 03 57 02 10 40]
? 2026-01-04 17:54:19.401 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 15 0C 1D 25 4A 02 6A 40]
? 2026-01-04 17:54:19.610 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 16 07 33 13 6F 02 CA 3F]
? 2026-01-04 17:54:19.834 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 1A 0A 30 1A 59 02 6A 40]
? 2026-01-04 17:54:20.043 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 E9 07 0C 1D 0A 31 34 48 02 A6 40]
? 2026-01-04 17:54:20.252 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 EA 07 01 02 08 3A 1A 65 02 2E 40]
? 2026-01-04 17:54:20.494 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 EA 07 01 04 0C 0C 2A 4B 02 32 41]
? 2026-01-04 17:54:20.702 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=13 status=SUCCESS payload=[02 26 EA 07 01 04 10 35 2A 4E 02 64 41]
+ 2026-01-04 17:54:20.706 I/MiScaleHandler: ← publish measurement to app
? 2026-01-04 17:54:20.715 D/BleConnector: BluetoothEvent received: MeasurementReceived(measurement=ScaleMeasurement(userId=1, dateTime=Sun Jan 04 17:53:00 GMT+01:00 2026, weight=83.7, fat=23.91708, water=52.192883, muscle=36.08172, visceralFat=13.548744, bone=3.2457817, lbm=60.435623, bmr=0.0, impedance=0.0), deviceAddress=5C:CA:D3:98:45:1C) for MIBFS
+ 2026-01-04 17:54:20.715 I/BleConnector: Event: Measurement received from MIBFS: Weight 83.7
+ 2026-01-04 17:54:20.716 I/BleConnector: (MIBFS): Saving measurement for App User ID 1.
? 2026-01-04 17:54:20.746 D/DatabaseRepository: Inserting measurement for user id: 1
? 2026-01-04 17:54:20.752 D/DatabaseRepository: New measurement inserted with id: 261. Recalculating derived values.
+ 2026-01-04 17:54:20.753 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
? 2026-01-04 17:54:20.775 D/DerivedValuesProcess: BMR calculation skipped: Missing/invalid weight, height or age (28).
? 2026-01-04 17:54:20.775 D/DerivedValuesProcess: TDEE calculation skipped: Missing or invalid BMR or activity level.
+ 2026-01-04 17:54:20.776 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 22 ms.
? 2026-01-04 17:54:20.776 D/DatabaseRepository: Inserting measurement value for measurement id: 261, typeId: 1
? 2026-01-04 17:54:20.800 D/DatabaseRepository: Recalculating derived values for measurement id: 261
+ 2026-01-04 17:54:20.801 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
? 2026-01-04 17:54:20.873 D/DatabaseRepository: Inserting measurement value for measurement id: 261, typeId: 3
+ 2026-01-04 17:54:20.873 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 71 ms.
? 2026-01-04 17:54:20.901 D/DatabaseRepository: Recalculating derived values for measurement id: 261
+ 2026-01-04 17:54:20.902 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
+ 2026-01-04 17:54:20.910 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 8 ms.
? 2026-01-04 17:54:20.911 D/DatabaseRepository: Inserting measurement value for measurement id: 261, typeId: 4
? 2026-01-04 17:54:20.940 D/DatabaseRepository: Recalculating derived values for measurement id: 261
+ 2026-01-04 17:54:20.940 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
+ 2026-01-04 17:54:20.959 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 18 ms.
? 2026-01-04 17:54:20.960 D/DatabaseRepository: Inserting measurement value for measurement id: 261, typeId: 5
? 2026-01-04 17:54:20.968 D/DatabaseRepository: Recalculating derived values for measurement id: 261
+ 2026-01-04 17:54:20.970 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
+ 2026-01-04 17:54:20.986 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 16 ms.
? 2026-01-04 17:54:20.987 D/DatabaseRepository: Inserting measurement value for measurement id: 261, typeId: 12
? 2026-01-04 17:54:20.991 D/DatabaseRepository: Recalculating derived values for measurement id: 261
+ 2026-01-04 17:54:20.992 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
+ 2026-01-04 17:54:20.995 I/MiScaleHandler: History import done: 1 record(s). Announced=15
? 2026-01-04 17:54:20.994 D/GattScaleAdapter: ← received data chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[03]
+ 2026-01-04 17:54:21.002 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 10 ms.
? 2026-01-04 17:54:21.003 D/DatabaseRepository: Inserting measurement value for measurement id: 261, typeId: 7
? 2026-01-04 17:54:21.014 D/DatabaseRepository: Recalculating derived values for measurement id: 261
+ 2026-01-04 17:54:21.014 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
+ 2026-01-04 17:54:21.028 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 13 ms.
? 2026-01-04 17:54:21.029 D/DatabaseRepository: Inserting measurement value for measurement id: 261, typeId: 6
? 2026-01-04 17:54:21.041 D/DatabaseRepository: Recalculating derived values for measurement id: 261
+ 2026-01-04 17:54:21.041 I/DerivedValues: Starting recalculation of derived values for measurementId: 261
+ 2026-01-04 17:54:21.055 I/DerivedValues: Finished recalculation of derived values for measurementId: 261. Took 13 ms.
? 2026-01-04 17:54:21.075 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=1 withResp=true payload=[03]
+ 2026-01-04 17:54:21.116 I/BleConnector: Measurement from MIBFS for User 1 saved (ID: kotlin.Unit). Values: 7
? 2026-01-04 17:54:21.161 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=1 status=SUCCESS payload=[03]
? 2026-01-04 17:54:21.179 D/GattScaleAdapter: → write to chr=00002a2f-0000-3512-2118-0009af100700 svc=0000181b-0000-1000-8000-00805f9b34fb len=5 withResp=true payload=[04 FF FF 00 01]
? 2026-01-04 17:54:21.211 D/GattScaleAdapter: ← write response chr=00002a2f-0000-3512-2118-0009af100700 len=5 status=SUCCESS payload=[04 FF FF 00 01]
? 2026-01-04 17:54:38.445 D/UserSettingsRepository: Setting file logging enabled to: false

nonvenomous avatar Jan 04 '26 17:01 nonvenomous

@kowalcj0 Apart from the sync issues with MI 2 scale, I've also noticed that the measurement of muscle % drastically dropped by 32%! from 68% to 36%

I'm saw a similar drop going from version 2.x to 3.x regarding muscle%: 72.4% to 36.4%. I never trusted the scale with those values anyways so it didn't bother me but the percentage before was absurdly wrong therefore it's a definite improvement. I don't remember if version 2.x also showed it as 70%+, could be this was a migration/conversion issue. But this belongs in it's own issue and not here.

nonvenomous avatar Jan 04 '26 17:01 nonvenomous

I'm investigating now. Looking at this commit gives me some pause: https://github.com/oliexdev/openScale/commit/6ed3f62617ce1e966528b9a0a08978c404e51193

This many changes in one commit with a message that looks very llm-y? I'm also having a harder time grokking the new kotlin handler than I did with the old java one, despite being much more comfortable in kotlin usually.

Were all handlers rewritten as vibe code? If so, I'm really concerned about all sorts of other as-of-now undiscovered bugs having been introduced :/

mots avatar Jan 06 '26 13:01 mots

@kowalcj0 Apart from the sync issues with MI 2 scale, I've also noticed that the measurement of muscle % drastically dropped by 32%! from 68% to 36%

I'm saw a similar drop going from version 2.x to 3.x regarding muscle%: 72.4% to 36.4%. I never trusted the scale with those values anyways so it didn't bother me but the percentage before was absurdly wrong therefore it's a definite improvement. I don't remember if version 2.x also showed it as 70%+, could be this was a migration/conversion issue. But this belongs in it's own issue and not here.

It all depends how muscle % is calculated. Citing, "very-scientific" sources like: https://www.menshealth.com/health/a27242669/what-your-body-composition-metrics-say-about-your-health/ https://support.withings.com/hc/en-us/articles/218500778-Body-What-are-the-normal-ranges-for-body-composition

What should my muscle mass be? Ages 20-39: 75-89 percent for men, 63-75.5 percent for women Ages 40-59: 73-86 percent for men, 62-73.5 percent for women ages 60-79: 70-84 percent for men, 60-72.5 percent for women

For more scientific analysis https://pmc.ncbi.nlm.nih.gov/articles/PMC11788497/

kowalcj0 avatar Jan 07 '26 08:01 kowalcj0

I do wonder why so many users report that it doesn’t work, but only a couple actually post debug logs—it makes troubleshooting much harder. It’s a bit disappointing that most people only complain instead of actively helping to find a solution.

I can only talk for myself, but maybe more people are in the same situation. I'm not an Android developer, nor I have a development setup, or have enough knowledge to get one. As I asked on my previous comment, can I get debug logs without setting up a development environment? If I can, I would gladly send as many logs as you need. It's not that I don't want to help, I just lack the knowledge on how to do it.

This is just a clarification, I don't want to make anyone angry. I'm a backend developer, and I know that receiving bug reports without any way to reproduce them is a pain. But, at least, we can see the amount of people affected by the issue. It's not the same if an issue affects 1 user, than 100.

cmmata avatar Jan 07 '26 10:01 cmmata

I can only talk for myself, but maybe more people are in the same situation. I'm not an Android developer, nor I have a development setup, or have enough knowledge to get one. As I asked on my previous comment, can I get debug logs without setting up a development environment? If I can, I would gladly send as many logs as you need. It's not that I don't want to help, I just lack the knowledge on how to do it.

This is just a clarification, I don't want to make anyone angry. I'm a backend developer, and I know that receiving bug reports without any way to reproduce them is a pain. But, at least, we can see the amount of people affected by the issue. It's not the same if an issue affects 1 user, than 100.

No, this is not a matter of lacking knowledge—that’s exactly my point. If someone doesn’t even know how to create a debug file, it’s simply a lack of effort. There is a FAQ; the menu entry is not hidden, and it’s even mentioned in the issue creation itself.

Setting up an Android development environment is also not rocket science—it’s perfectly doable with a bit of effort, and there’s plenty of documentation available online. Sure, the reverse engineering part is tricky and there you need more knowledge how thinks works, some help is also documented in the wiki.

For some users, the dev version seems to work fine; for others, it doesn’t. I don’t know the solution. To figure it out, someone would need to examine their specific scale—maybe there are different software versions of the same scale, or it’s some unusual bug. I honestly don’t know. Somebody needs debug with the scale and to have to find out.

oliexdev avatar Jan 07 '26 11:01 oliexdev

@oliexdev Sorry to hear that you seem to be disappointed. I wasn't aware that you would need more data. From my side, it seems to be working now, I'll keep an eye on it

I'll post the next debug log, last one didnt include useful information

chrissssss avatar Jan 07 '26 12:01 chrissssss