Skip to content
Kristian Partl
Go back

BLE Scale Sync on a Raspberry Pi Zero 2 W: what I bought and what runs

The previous post was about why the scale bridge got rewritten. This one is the hardware it runs on: what I bought, what is installed, and what the Pi looks like after running since January.

The install commands are not here. They live in the official guide and change with releases.

From the scale to five exportersA Renpho ES-CS20M scale sends its reading over Bluetooth Low Energy, through a wall, to a Raspberry Pi Zero 2 W in another room. The Pi runs Raspberry Pi OS Lite 64-bit and BLE Scale Sync as the systemd service ble-scale.service on Node 22, which takes about 55 MB of the 415 MB of memory. The same Pi also reads BLE thermometers and publishes them to MQTT. Every reading goes to all five exporters: Garmin Connect, Strava, InfluxDB, ntfy and a local file.SCALERenpho ES-CS20MBLEwallRaspberry Pi Zero 2 WRaspberry Pi OS Lite, 64-bitsystemd: ble-scale.serviceNode 22, ~55 MB of 415 MBalso: BLE thermometers -> MQTTGarminStravaInfluxDBntfyfileevery reading -> all five
One board in another room. The thermometers share it with the scale.

1. What to buy

A Raspberry Pi Zero 2 W. Not the first Zero W. That one has an ARMv6 CPU and npm install dies on it with SIGILL. The two boards look almost the same in a shop listing, so check for the “2”.

I bought the official kit from RPishop.cz, which is an approved reseller. In the box:

Mine came with a 32 GB microSD card. The listing today does not mention one, so check before you order. Other shops are in the approved reseller list.

No heatsink. The kit does not have one and the Pi does not need it: 52 C when I checked.

A scale. I use a Renpho ES-CS20M. It cost about 12 EUR and was already in the flat. If you are buying one, pick it from the supported scales list, not from a review site.

None of the links in this post earn me anything.

2. The OS

Raspberry Pi OS Lite, 64-bit, written with Raspberry Pi Imager. Mine runs the trixie-based image from December 2025.

Set the user name, Wi-Fi and SSH in Imager before you write the card. Raspberry Pi OS has no default pi user any more, and the service file later needs the name you pick.

3. Standalone, not Docker

The guide lists Docker first, and on anything bigger I would use it. The Zero 2 W has 512 MB, of which free reports 415 MB.

I measured both setups when I was choosing. I no longer have the number, but the difference was large enough to decide it.

The standalone install needs Node.js. Mine is Node 22 from the NodeSource repository; the guide lists the minimum versions. With everything running, the Node process takes about 55 MB and the whole system uses 224 MB.

4. Setup wizard

ble-scale-sync setup finds the scale, asks for your profile, lets you pick the exporters and signs in to Garmin and Strava. It writes config.yaml.

Garmin is the one exporter that needs something installed first. The sign-in runs as a Python script, and Raspberry Pi OS refuses a system-wide pip install, so it needs a virtual environment in the app directory. The guide has the four lines.

Mine sends every reading to Garmin Connect, Strava, InfluxDB, ntfy and a local file.

5. Running it as a service

The guide has a systemd unit. Two lines in it matter more than the rest:

StartLimitIntervalSec=0
Restart=always

Without the first one, systemd gives up after five starts in ten seconds. A Bluetooth stack that hiccups a few times in a row would then leave the service dead until somebody notices. With both, it keeps coming back.

In the last 30 days the journal of the service has no error line.

6. Range

The Pi is in another room, and the signal from the scale goes through a wall. That has been enough.

If your scale is out of range of the Pi, the Bluetooth transports page covers proxies: an ESP32 near the scale, ESPHome, or the Bluetooth proxies Home Assistant already has.

7. What else the Pi does

The scale is not the only thing on it. The same Pi reads BLE thermometers and publishes them to MQTT. That is why the memory from section 3 matters: with Docker, there would be less left for the second job.

Nothing went wrong on this hardware. If you hit something, troubleshooting is where the known traps are.

The project is BLE Scale Sync, open source under GPL-3.0.


Share this post:

Get new posts by email

One email when a new post goes up. Nothing else.

You will get a confirmation email first. Buttondown (US) sends the emails for me, and every one has a one-click unsubscribe link. Privacy

Prefer a feed reader? Follow via RSS


Previous Post
My second brain works the night shift