Add support for Honor Smart Scale CH100S#1338
Merged
oliexdev merged 1 commit intooliexdev:masterfrom Mar 23, 2026
Merged
Conversation
Add a new BLE handler for the Honor Smart Scale CH100S (Chipsea CST34M97 chipset), which advertises as "CH100S" over Bluetooth. Protocol details (reverse-engineered from companion app and BLE captures): - Service 0xFAA0, TX char 0xFAA1 (write), RX char 0xFAA2 (notify) - Measurement frames arrive as two 16-byte AES-CTR encrypted packets (opcodes 0x0E + 0x8E), each decrypted separately with IV reset - After AES decryption + MAC-XOR deobfuscation, frame layout: [userId, weightLE, fatLE, yearLE, month, day, hour, min, sec, dow, impedanceLE] - USER_INFO (CMD 0x09): MAC-XOR then AES-CTR encrypted, 14-byte payload - Water%, muscle%, bone mass, BMR, and visceral fat are computed app-side from impedance using BIA formulas (EtekcityLib) Implemented features: - Weight (LE uint16, tenths of kg) - Body fat % (from scale, LE uint16, tenths of %) - Impedance (LE uint16, ohms) - Timestamp (from scale) - Body composition (water, muscle, bone, BMR, visceral fat via EtekcityLib) - Time sync, user sync, history read Files changed: - New: HuaweiCH100SHandler.kt - Modified: ScaleFactory.kt (register new handler)
daweido
approved these changes
Mar 23, 2026
Owner
|
Thanks for your PR 👍 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds BLE support for the Honor Smart Scale CH100S (Chipsea CST34M97 chipset), which advertises as
"CH100S"over Bluetooth.CH100SWorking features
EtekcityLibBIA formulas)Protocol details
Reverse-engineered from the Huawei Body Fat Scale companion app (
com.huawei.overseas.ah100) and verified by BLE packet capture against a physical CH100S device.0xFAA0with TX0xFAA1(write) and RX0xFAA2(notify)[userId, weightLE(2), fatLE(2), yearLE(2), month, day, hour, min, sec, dow, impedanceLE(2)]Why a separate handler from HuaweiAH100Handler
Although the CH100S shares the same BLE service UUIDs and auth flow as the CH100 (AH100), the data processing differs significantly:
A shared handler with conditional branches would be fragile and risk breaking existing CH100 support.
Files changed
HuaweiCH100SHandler.kt— complete handler for CH100SScaleFactory.kt— register the new handlerTest plan