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.
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:
- the board
- the official 5.1 V / 2.5 A power supply with micro-USB
- the official case
- a mini-HDMI and a micro-USB adapter
- a GPIO header
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.