Scale Reader
· v2.1.5
About
Your complete Xiaomi body composition center, right on your wrist!
The app fully supports both the classic Mi Scale 2 and the state-of-the-art Xiaomi Body Composition Scale S400. Thanks to a newly rewritten, advanced TLV data parser, you get ultra-precise, dual-frequency fitness data and Heart Rate readings directly on your Garmin watch.
Key Features:
Full Body Analysis: Accurately calculates Weight, BMI, Body Fat %, Muscle Mass (kg), Water %, Protein %, Visceral Fat, Bone Mass, BMR (kcal), Metabolic Age, and Heart Rate (for S400).
Smart History Tracking: Automatically stores up to 25 recent measurements locally. The newly redesigned History Menu intelligently adapts to your watch model (preventing text cut-offs on Fenix/Enduro while utilizing the full screen on Instinct series).
Haptic Feedback: Gently vibrates when your measurement is successfully analyzed and saved.
100% Privacy: No cloud APIs. All data decryption and processing happen locally on your Garmin device.
Universal Compatibility: Custom UI layouts optimized for both high-contrast MIP displays (e.g., Instinct 2X, Fenix) and vibrant AMOLED touchscreens (e.g., Venu, Epix).
-==IMPARTANT - GARMIN CONNECT INTEGRATION==-:
Garmin's official API strictly prohibits third-party apps from syncing body composition data (Weight, Body Fat, Water, etc.) to the main Garmin Connect health database. Because of this deliberate limitation by Garmin, all measurements are saved locally in the app's History Menu on your watch.
Want to change this? I do too! Please support the community feature request on the official Garmin forums. Your comments and upvotes are the only way to convince Garmin to open their API for us!
Support the request here:
https://forums.garmin.com/developer/connect-iq/f/app-ideas/431273/feature-request-api-for-native-body-composition-weight-writes-health-data
History Menu Legend:
F: Body Fat (%)
W: Body Water (%)
P: Protein (%)
HR: Heart Rate (bpm)
M: Muscle Mass (kg) – visible in the detailed view
HOW TO SET UP THE S400 SCALE:
The S400 scale uses AES encryption. To read its data, the app requires both the MAC address and a 32-character BLE Key (Token).
1. Find the MAC Address (Easy):
Download a free Bluetooth scanner app (e.g., "nRF Connect" or "BLE Scanner") on your phone. Step on the scale to wake it up. Find the device named xiaomi.scale.s400 or MIBFS and copy its MAC address (enter it without colons, e.g., CCDA20E829D1).
2. Find the BLE Key / Token (Advanced):
For security reasons, Xiaomi hides this key in their official app. To extract it, use one of these proven methods:
Method A (Xiaomi Cloud Token Extractor): Search Google for this tool (available on GitHub). Run the script on your computer and log in with your Mi Fitness account.
!!! CRITICAL NOTE: The tool will display several lines of data. You must copy the 32-character string labeled "BLE KEY". Do NOT copy the string labeled "Token" – it will not work for the scale!
Method B (Modified Android App): Install a modded version of the "Zepp Life" or "Mi Fitness" app (e.g., by vevs). Once paired, the modded app will save a text file in your phone's storage containing the Token in plain text.
3. Enter Data in Garmin Connect IQ:
Open Garmin Connect - My Devices - Select Watch - Apps - Xiaomi Scale Reader - Settings. Enable "S400 Support", paste your MAC Address and Token, and save.
Open the app on your watch, step on the scale, and wait for the vibration!
What's new
What's New in Version 2.1.5:
New Devices Support . Bug fixes.
What's New in Version 2.1.0:
Heart Rate Support: Added Heart Rate (HR) measurement tracking for compatible scales (e.g., Xiaomi Body Composition Scale S400). The icon and value will appear automatically after a successful scan.
Revamped History Menu: The on-watch history list has been redesigned to display more comprehensive data at a glance without text cut-offs.
Stability Improvements: Upgraded the Bluetooth data parsing engine. Fixed a bug where body impedance packets were occasionally misread as weight, causing incorrect ("jumping") readings for some users.
History Menu Legend:
F: Body Fat (%)
W: Body Water (%)
P: Protein (%)
HR: Heart Rate (bpm)
M: Muscle Mass (kg) - available in detailed view
What's New in Version 2.0.9 (Changelog):
Sincere apologies for the issues in the previous update!
I have reworked the display logic to support all screen sizes correctly.
FIXED:
High-Res Layout: Fixed overlapping text and huge fonts on Enduro 3, Fenix 8, and Venu 3.
MIP Screens: Fixed font scaling on Fenix 6/7 and Forerunner 955 (weight now fits the screen).
Instinct 2X: Improved readability and fixed cut-off text at the bottom.
What's New in Version 2.0.8 (Changelog):
Bug fixes
What's New in Version 2.0.7 (Changelog):
Massive Device Expansion: The app now supports a total of 78 Garmin watch models, including the latest Instinct 3, Fenix 8, and Enduro 3 series.
What's New in Version 2.0.6 (Changelog):
Settings Fix (Android): Redesigned the settings menu into a "flat" structure to prevent disappearing MAC and Token fields on Android devices.
What's New in Version 2.0.5 (Changelog):
Xiaomi S400 Support: Full support for the latest Xiaomi S400 smart scale using the encrypted FE95 protocol.
Smart UI: The app automatically detects your scale model and dynamically hides parameters (Protein, Metabolic Age) if they are unavailable (classic for older scales).
Improved Configuration: The settings menu now features clear instructions and format examples for MAC Address and BLE Token.
What's new in version 1.2.2:
Automatic Profile Sync: The app now automatically fetches your Height, Age, and Gender directly from your Garmin User Profile. (Thanks Gabriel!)
Zero Configuration: Removed the need to manually enter body metrics in the app settings – just install and weigh yourself!
Improvements: Minor stability fixes and code optimization.
What's new in version 1.2.0:
Fixed Body Fat Reading: Resolved issues with impedance measurement (often happening after replacing scale batteries).
New Devices Support: Added support for Fenix 7 series, Venu 3, Epix 2, and new Forerunners (265/955/965).
Improved UI: New responsive layout looks great on all screen sizes – no more overlapping text.
Localization: Added full Polish and English language support.
Stability: Improved connection reliability and fixed "ghost" weight readings on startup.
New version 1.1.0 out now! - Bug fixes