DavidVentura/withouthings

Withings-compatible app

2

stars

48

commits

Rust

primary language

Aug 26, 2026

updated

README

Withings protocol app

This app handles the protocol for the Withings ScanWatch 2.

Very early in development.

Handles:

  • Sensor data (Heart rate, temperature, breath rate, steps, charge state / level)
  • Automatic activities (walking, running), segmentation is implemented locally instead of using the API so it's a bit different
  • Manual activities (starting an activity from the watch), has a custom UI for the 'live exercise mode'
  • ECG
  • Most settings
  • Notifications (only sends a test notification, does not forward system notifications)

Screenshots

NowActivitiesActivity detailStats
SleepECGWatch settings

Notes:

  • Protocol reverse engineered from app decompile / .so decompile / firmware disassembly
  • Enabling notifications lowers battery life (estimated to 20 days instead of 30~35)

DEBUG DATA

There's a stream of DEBUG data which holds some "unknown" data at a high sampling rate (mostly 1 Hz), which are not used for anything as far as I'm aware

  • Maybe 1Hz acceleromter
  • unknown
  • unknown
  • 1Hz Temperature

It also has a debug log and the watch settings' database.

On the original app, this data is sent straight to withings. I'm not sure why they need 1Hz raw sensor data but I don't like it.

Contributors

DavidVentura

48 commits

DavidVentura/withouthings

Withings-compatible app

2

stars

48

commits

Rust

primary language

Aug 26, 2026

updated

README

Withings protocol app

This app handles the protocol for the Withings ScanWatch 2.

Very early in development.

Handles:

  • Sensor data (Heart rate, temperature, breath rate, steps, charge state / level)
  • Automatic activities (walking, running), segmentation is implemented locally instead of using the API so it's a bit different
  • Manual activities (starting an activity from the watch), has a custom UI for the 'live exercise mode'
  • ECG
  • Most settings
  • Notifications (only sends a test notification, does not forward system notifications)

Screenshots

NowActivitiesActivity detailStats
SleepECGWatch settings

Notes:

  • Protocol reverse engineered from app decompile / .so decompile / firmware disassembly
  • Enabling notifications lowers battery life (estimated to 20 days instead of 30~35)

DEBUG DATA

There's a stream of DEBUG data which holds some "unknown" data at a high sampling rate (mostly 1 Hz), which are not used for anything as far as I'm aware

  • Maybe 1Hz acceleromter
  • unknown
  • unknown
  • 1Hz Temperature

It also has a debug log and the watch settings' database.

On the original app, this data is sent straight to withings. I'm not sure why they need 1Hz raw sensor data but I don't like it.

Contributors

DavidVentura

48 commits

Languages

Rust

71.1%

Kotlin

22.6%

Lua

4.4%

Python

1.7%