Repository navigation
feat: add Redmond SkyBalance scale support - #1547
ahineyushka wants to merge 17 commits into
Conversation
REDMOND SkyBalance RS-744S — Bluetooth Protocol Reverse Engineering Notes1. OverviewThis document describes the Bluetooth Low Energy (BLE) communication observed between a REDMOND SkyBalance RS-744S smart scale and an Android device. The protocol was investigated using an Android Bluetooth HCI snoop capture recorded during a real weighing session. The captured traffic was analyzed to identify the GATT service, characteristic subscription procedure, weight data format, and differences between live and final measurements. The key finding is that the RS-744S uses the standard Bluetooth SIG Weight Scale Service, rather than a completely proprietary weight-transfer protocol. The measurements are transferred using BLE GATT indications. The characteristic payload follows the standard Weight Measurement format, while the observed distinction between intermediate and final measurements is based on the presence of the timestamp field. Hardware verification status: RS-744S was tested on a physical scale. The RS-73S, RS-745S, RS-762S, and RS-773S are considered related models that use the same controller, protocol, and functionality, differing in product name and enclosure design. Those four models have not been independently captured and verified in this investigation. 2. Bluetooth transport and GATT profileThe observed connection uses Bluetooth Low Energy and GATT. Item | Value -- | -- Transport | Bluetooth Low Energy (BLE) Communication model | GATT client / GATT server Service | Weight Scale Service Service UUID | 0x181D Measurement characteristic | Weight Measurement Characteristic UUID | 0x2A9D Feature characteristic | Weight Scale Feature Feature UUID | 0x2A9E Measurement transfer | Indications Byte order | Little-endian for multi-byte characteristic fieldsThese examples come from separate measurement sessions in the capture. 7. Important timestamp limitationThe capture was collected in 2026, but the timestamps supplied by the scale were from July 2021. This indicates that the scale's internal date/time was stale or otherwise incorrect at the time of capture. No verified clock-synchronization procedure was identified in the analyzed traffic. Therefore, a client should not assume that the embedded timestamp reflects the actual date and time of measurement. In the openScale implementation, the phone's current date/time is used for the saved measurement instead of trusting this stale device timestamp. This is an implementation choice based on the observed device behavior, not a requirement imposed by the Bluetooth Weight Scale Service specification. 8. Practical client implementationA client implementing this observed protocol can follow these steps:
The Weight Scale Feature characteristic ( 9. What has not been reverse-engineeredThe investigation establishes the captured weight-measurement path, not every feature that might exist in the product. The following functions have not been sufficiently verified and are not claimed to be supported:
No vendor-specific setup command was identified as necessary for receiving weight indications in the analyzed session. The absence of these features from this report should not be taken as proof that they do not exist; it means they were not established by the available capture. 10. Model coverage and limitationsThe physical test and HCI protocol capture described here were performed with a REDMOND SkyBalance RS-744S. The RS-73S, RS-745S, RS-762S, and RS-773S are included in the related-model support based on the understanding that they share the same controller, Bluetooth protocol, and functionality, with differences in product name and enclosure design. Their protocol equivalence has not been independently confirmed through separate HCI captures. Anyone with access to one of these models could help validate this assumption. 11. ReferencesThese notes document observed behavior of a physical RS-744S and distinguish those observations from fields and rules defined by the standard Bluetooth Weight Scale Service. They are intended as a starting point for further testing and community verification, rather than as manufacturer documentation. # REDMOND SkyBalance RS-744S — Bluetooth Protocol Reverse Engineering Notes1. OverviewThis document describes the Bluetooth Low Energy (BLE) communication observed between a REDMOND SkyBalance RS-744S smart scale and an Android device. The protocol was investigated using an Android Bluetooth HCI snoop capture recorded during a real weighing session. The captured traffic was analyzed to identify the GATT service, characteristic subscription procedure, weight data format, and differences between live and final measurements. The key finding is that the RS-744S uses the standard Bluetooth SIG Weight Scale Service, rather than a completely proprietary weight-transfer protocol. The measurements are transferred using BLE GATT indications. The characteristic payload follows the standard Weight Measurement format, while the observed distinction between intermediate and final measurements is based on the presence of the timestamp field. Hardware verification status: RS-744S was tested on a physical scale. The RS-73S, RS-745S, RS-762S, and RS-773S are considered related models that use the same controller, protocol, and functionality, differing in product name and enclosure design. Those four models have not been independently captured and verified in this investigation. 2. Bluetooth transport and GATT profileThe observed connection uses Bluetooth Low Energy and GATT.
The service and characteristic UUIDs are defined by the Bluetooth SIG Weight Scale Service specification. The required Weight Measurement characteristic uses indications to deliver measurement data to the client. Reference: [Bluetooth SIG — Weight Scale Service 1.0.1](https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/WSS_v1.0.1/out/en/index-en.html) 3. Enabling measurement indicationsThe client must enable indications on the Client Characteristic Configuration Descriptor (CCCD) associated with the Weight Measurement characteristic. In the analyzed HCI capture, the following ATT Write Request was observed: This is an ATT PDU, not a complete HCI packet. Its fields are:
In this particular capture, the descriptor handle is Important: GATT attribute handles are connection/database-specific and should not be hard-coded as universal identifiers. A client should discover the service, characteristic, and descriptor by UUID. After indications are enabled, the scale sends ATT Handle Value Indication PDUs. The client acknowledges them with ATT Handle Value Confirmation ( 4. Weight Measurement payload formatThe value of the Weight Measurement characteristic follows the standard Bluetooth SIG format. The basic structure is:
Optional fields are included according to the Flags byte. Multi-byte values are little-endian. Flags byteThe relevant standard Flags bits are:
For the observed RS-744S measurements, the Flags values were
No User ID, BMI, or Height fields were observed in the measurement payloads analyzed here. Weight conversionWith Flags bit 0 cleared, the weight is represented in kilograms with a resolution of The conversion is: For example: The bytes are little-endian: When Flags bit 0 is set, the standard specifies imperial units, with a weight resolution of The reserved value 5. Observed live weight packetsDuring weighing, the scale sends short measurement payloads without a timestamp. One observed ATT Handle Value Indication was: Breakdown: The resulting weight is 110.9 kg. Another observed example: The weight field is Intermediate values changed during weighing. In the sampled capture, these updates typically arrived at intervals of approximately half a second. The lack of a timestamp is an observed characteristic of the RS-744S live updates. The Bluetooth standard defines the timestamp field as optional; it does not itself define the absence of a timestamp as a universal “live measurement” marker. The live/final interpretation described here is based on the observed behavior of this particular scale. 6. Observed final measurement packetsWhen the scale reached a stable result, the observed payload included the timestamp field. An example ATT Handle Value Indication is: The ATT header is: The characteristic value is: Decoded:
The embedded timestamp is therefore: The same stable weight and timestamp were repeated in multiple indications during the captured session. The client consequently needs to avoid treating every repeated indication as a new historical measurement. Other stable results observed in the capture included:
These examples come from separate measurement sessions in the capture. 7. Important timestamp limitationThe capture was collected in 2026, but the timestamps supplied by the scale were from July 2021. This indicates that the scale's internal date/time was stale or otherwise incorrect at the time of capture. No verified clock-synchronization procedure was identified in the analyzed traffic. Therefore, a client should not assume that the embedded timestamp reflects the actual date and time of measurement. In the openScale implementation, the phone's current date/time is used for the saved measurement instead of trusting this stale device timestamp. This is an implementation choice based on the observed device behavior, not a requirement imposed by the Bluetooth Weight Scale Service specification. 8. Practical client implementationA client implementing this observed protocol can follow these steps:
The Weight Scale Feature characteristic ( 9. What has not been reverse-engineeredThe investigation establishes the captured weight-measurement path, not every feature that might exist in the product. The following functions have not been sufficiently verified and are not claimed to be supported:
No vendor-specific setup command was identified as necessary for receiving weight indications in the analyzed session. The absence of these features from this report should not be taken as proof that they do not exist; it means they were not established by the available capture. 10. Model coverage and limitationsThe physical test and HCI protocol capture described here were performed with a REDMOND SkyBalance RS-744S. The RS-73S, RS-745S, RS-762S, and RS-773S are included in the related-model support based on the understanding that they share the same controller, Bluetooth protocol, and functionality, with differences in product name and enclosure design. Their protocol equivalence has not been independently confirmed through separate HCI captures. Anyone with access to one of these models could help validate this assumption. 11. References
These notes document observed behavior of a physical RS-744S and distinguish those observations from fields and rules defined by the standard Bluetooth Weight Scale Service. They are intended as a starting point for further testing and community verification, rather than as manufacturer documentation. |
|
If you get the chance: the capture only exposes the Weight Scale Service, so the body composition Minor:
|
|
Thanks for the review. I've updated the PR to address your comments. Code changes
Hardware testingI built the Debug APK and tested it with a real REDMOND RS-744S scale. The scale is detected correctly, live weight readings are displayed during weighing, and the final weight is saved to the database. The test confirmed that the normal weighing workflow works as expected. Only the RS-744S has been tested on physical hardware; the other four model variants have not been individually tested. Why
|
Redmond SkyBalance scale support
Adds support for the following Redmond SkyBalance models:
All five models use the same controller, Bluetooth protocol and functionality. They differ only in the product name and enclosure design, so they are registered under the same handler.
Verified hardware
RS-744S was tested on a real scale.
The implementation was verified using a Bluetooth HCI snoop capture and openScale on a real Android device.
Working features
0x181D0x2A9DNot implemented
The following features are intentionally not implemented because they were not sufficiently verified from captured traffic:
Testing
The implementation was tested on a real RS-744S:
The other four model names are registered in the same handler based on the shared controller, protocol and functionality, but they were not individually tested on hardware.
No shared Bluetooth infrastructure was changed.
btsnoop_hci_sanitized.log