Skip to content

Supported scales ​

BLE Scale Sync has 42 protocol adapters, plus a catch-all for any scale that follows the Bluetooth weight-scale specification. Most adapters cover several rebrands.

Three scale families have their own guide:

QN scales
Renpho, Arboleaf, FITINDEX, GE and Sencor models on the QN protocol.
Renpho scales
The R-MSC04 and the ES-CS20M revisions that use Renpho's own protocol.
Pairing, consent codes and user slots for the BF and SBF models.

Scale list ​

Weight only means the weight is read and body composition is estimated from BMI.

Known limitations says why for most of them.

Brand / modelsBody compositionNotes
Xiaomi Mi Scale 2 (MIBCS / MIBFS / XMTZC05HM)YesNo pairing needed; works on every transport
Xiaomi Mi Smart Scale 2 (XMTZC04HM / MI SCALE2)Weight onlyNo pairing needed
Silvergear Smart Scale 108, INSMART (AAA006), Foryond FG263LB (AAA002)Weight onlyBroadcast only; the display unit does not matter
Grifema GA2001 / Senssun IF_B7Weight onlyBroadcast only; kg or lb display
OKOK (Chipsea broadcast): nameless, Yoda0 / Yoda1, ADVWeight onlyBroadcast only; kg display only; a nameless unit needs ble.scale_mac on the default Linux transport
Etekcity Fit 8SWeight onlyBroadcast only; nameless, so it needs ble.scale_mac on the default Linux transport
PICOOC Mini Lite (PICOOC-L)Weight onlyBroadcast only; matched by its name
Xiaomi Mijia Body Composition Scale S800 (ms116)Weight onlyNeeds a per-device ble.bind_key from the Mi cloud
Xiaomi Body Composition Scale S400 (MJTZC01YM)YesNeeds ble.bind_key and ble.scale_mac; weigh barefoot for impedance
Renpho ES-CS20M / ES-32MD / Elis 1 / FITINDEX / Sencor (QN-Scale)YesThe most common protocol; see QN scales
Arboleaf (QN-Scale, 19-byte dialect)YesUses the body composition the scale computes; see QN scales
Arboleaf CS10E (QN-Scale, 20-byte dialect)Weight onlyExperimental. The scale's own body composition with ble.qn_algorithm; see QN scales
Arboleaf CS10K (QN-Scale, 20-byte scale-info frame)Weight onlyExperimental. The scale's own body composition with ble.qn_user_key; see QN scales
Renpho ES-CS20M on service 0x1A10YesSee Renpho scales
Renpho ES-WBE28Weight onlyStandard GATT variant
Renpho A-R003Weight onlyExperimental. Advertises no name, so it needs ble.scale_mac on the default Linux transport and on macOS
Renpho ES-26BB-BYes
Renpho R-MSC04 (MorphoScan Nova)Weight onlyThe scale's own body fat with ble.rmsc04_profile_byte; see Renpho scales
1byone / Eufy C1 / P1Yes
Eufy Smart Scale P2 (T9148) / P2 Pro (T9149)YesBody composition over a connection; the broadcast gives weight only
Eufy Smart Scale C20 (T9130) / P3 (T9150)Weight onlyBroadcast only; matched by its name or by its own address
Yunmai Signal / Mini / Mini 2YesImpedance and, on newer firmware, the scale's own body fat
Yunmai SEWeight onlyReports no impedance
Beurer BF700 / BF710 / BF800YesBF710: register it in the Beurer app first; see Beurer and Sanitas
Salter SA00656 / SA00432 (Salter Health)Weight onlyPowers off after weighing; suits continuous mode
Sanitas SBF70 / SBF75YesSee Beurer and Sanitas
Sanitas SBF72 / SBF73YesNeeds user slot 1 in the vendor app
Beurer BF720 / BF105 / BF500 / BF788 / BF915 / BF950YesNeeds users[].beurer_pin and a bonded link; see Beurer and Sanitas
A&D UC-352BLEWeight onlyExperimental. Linux (BlueZ) only; needs ble.scale_mac and a one-time pairing
Huawei CH100 / AH100YesExperimental. Not on macOS; see Known limitations
Soehnle Shape200 / Shape100 / Shape50 / Style100YesNeeds user slot 1 in the vendor app
Medisana BS430 / BS440 / BS444YesStored weigh-ins are exported from the second session on; see Medisana
Active Era BS-06 and other AC 27 scalesYesDetected by manufacturer id 0x27AC; wake it before stepping on
Senssun FatYesModel A only
MGB (Swan / Icomon / YG)Yes
Hutbit 218008 / WL292YesAlso sold under stock SWAN branding
Robi S9, Healthkeep S11 (HEALTHKEEP-S11)Weight only
Speediance Smart Scale FG2211WBFYesLefu/Icomon sibling of the Robi S9
Digoo DG-SO38H (Mengii)Yes
Excelvan CF369Yes
Trisa Body Analyze / ADE BA 1600 (fitvigo)Weight onlyThe resistance it reports is not on an ohm scale
Hoffen BS-8107Yes
Etekcity ESF-551 Smart Fitness ScaleYesMatched by its advertised name
Hesley (YunChen)Yes
Inlife (FatScale)Yes
Koogeek S1YesConnecting can be unreliable
Exingtech Y1 (vscale)Yes
Any standard BT SIG scale (BCS/WSS)YesCatch-all; select user 1 on the scale

Finding your scale ​

The setup wizard scans for nearby BLE devices, identifies supported scales and writes the config. To scan without the wizard:

bash
# Docker
docker run --rm --network host --cap-add NET_ADMIN --cap-add NET_RAW \
  --group-add "$(getent group bluetooth | cut -d: -f3)" -v /var/run/dbus:/var/run/dbus:ro \
  ghcr.io/kristianp26/ble-scale-sync:latest scan

# Standalone (npm install or npx)
npx ble-scale-sync scan

# Standalone (from a clone)
npm run scan

Set ble.scale_mac to the address scan lists, so the app never connects to a neighbor's scale. The wizard does this for you. Broadcast-only scales advertise only while someone stands on them, so step on the scale while the scan runs.

Known limitations ​

Senssun Model B ​

Not supported. Only Model A (service 0xFFF0) is.

Koogeek S1 ​

Connecting and service discovery are unreliable on BlueZ and on the ESP32 proxy, and succeed only occasionally on macOS. Retry, or use whichever transport works for your unit.

Renpho R-MSC04 (MorphoScan Nova) ​

The scale's own body fat needs ble.rmsc04_profile_byte. See Renpho scales.

Arboleaf (QN-Scale, 19-byte dialect) ​

Needs two ble.qn_* options. See QN scales.

Renpho ES-CS20M / Elis 1 (some hardware variants) ​

Some units only broadcast, so body composition is estimated from BMI. See QN scales.

Renpho ES-CS20M on service 0x1A10 ​

Newer revisions use Renpho's own protocol. See Renpho scales.

Eufy Smart Scale P2 / P2 Pro ​

Over a connection, body fat comes from the impedance with the generic BIA formula and can differ by a few points from the Eufy app. A weigh-in in socks, or one read from the broadcast, gets the BMI estimate.

Eufy Smart Scale C20 / P3 ​

Read from the broadcast as kg, without a connection. If your display shows lb or st, compare the first export with the display and report it on #408. On macOS the scale is found only when its name arrives in a scan response. A P3 over Home Assistant Bluetooth needs a scanner that forwards raw advertisements.

Yunmai ​

A Mini 2 (M1690) that advertises no name needs ble.scale_mac on the default Linux transport. The scale computes body fat for the profile the vendor app stored, so with several users it can belong to another profile than the matched person's.

Xiaomi Mi Scale 2 (MIBCS / MIBFS / XMTZC05HM) ​

The app ignores readings of 10 kg or less, so it cannot record a small child or a pet.

Xiaomi Mi Smart Scale 2 (XMTZC04HM) ​

The advertisement carries no impedance, so body composition is estimated from BMI. The app ignores readings of 10 kg or less, so it cannot record a small child or a pet.

Xiaomi Body Composition Scale S400 (MJTZC01YM) ​

  1. Pair the scale in Mi Home and register a user profile there.
  2. Extract ble.bind_key with the community Xiaomi-cloud-tokens-extractor.
  3. Stand on the scale while scan runs, because it advertises only while someone stands on it, and set ble.scale_mac to its address.
  4. Keep Mi Home closed while you weigh in, and weigh barefoot.

Silvergear Smart Scale 108 ​

The reading goes out about two seconds after the display settles, and at most 12 seconds after. Shifting your weight does not end the weigh-in.

Grifema GA2001 / Senssun IF_B7 ​

The weight is read in kg whether the display shows kg or lb. Other display units are ignored with a warning in the log.

OKOK app scales (Chipsea broadcast) ​

Sold under many names with the OKOK app. Keep the scale on kg. Nameless units need ble.scale_mac on Linux. On macOS only units named Yoda0, Yoda1 or ADV work. Scales advertising as Chipsea-BLE are not supported; report them on #408.

Etekcity Fit 8S ​

Nameless, so set ble.scale_mac on the default Linux transport. On macOS it is recognized by its service 0xFFD0. Stay on the scale until it finishes, about two seconds after the weight settles.

PICOOC Mini Lite ​

Silent between weigh-ins, so step on it while scan runs. A broadcast in another PICOOC format is ignored with a warning. Report it on #408. Other PICOOC scales, such as the PICOOC Mini (PICOOC-CQ, PICOOC-CC), are not supported.

A&D UC-352BLE ​

Experimental. Linux built-in Bluetooth only, with ble.scale_mac set. The scale keeps one pairing, so pairing it with ble-scale-sync removes the pairing with the A&D app. That is why ble-scale-sync connects only when ble.scale_mac names it. To pair:

  1. Start ble-scale-sync.
  2. Switch the scale off and hold SET until it shows Pr.
  3. After the first connection, weigh in again.

If it does not pair, pair it by hand while the scale shows Pr. In bluetoothctl, run agent on, default-agent, scan on, pair <MAC> and trust <MAC>.

In Docker, set TZ: the scale's clock is set to the host's local time. Report results with a runtime.debug: true log on #408.

Huawei CH100 / AH100 ​

Experimental. The scale encrypts every frame with its Bluetooth address, which macOS does not reveal. Read it from Linux, Windows, an ESPHome proxy or the ESP32 proxy.

If the log says the scale refused this host, bind the scale once with openScale as its first user, then weigh in again.

Each connection sends the first user's profile to the scale. Its body fat is used for a user with that sex, age and height and estimated for everyone else. Report results with a debug log on #503.

Medisana BS430 / BS440 / BS444 ​

From the second session on, weigh-ins stored while the app was off go to exporters that can record a past measurement. A stored weigh-in older than the last one exported is skipped, which can happen with several people on the scale.

Active Era BS-06 and other AC 27 scales ​

Sold with the FitDays, Starfit or Femmto apps. Switch the scale on and wait for the Bluetooth icon before you step on. Otherwise the weigh-in stays on the scale and is not imported. A unit that does not advertise 0x27AC needs ble.force_scale_adapter: 'Active Era BS-06' and ble.scale_mac; report its Advert: line from a debug log.

Scale not listed ​

The Standard BT SIG adapter reads any scale that follows the Bluetooth specification. To check, run the setup wizard or scan.

To add support for a new scale, see Contributing.

Released under the GPL-3.0 License.
Software made in Europe