Recently I took an opportunity to pick up a Sinocare CW286 bluetooth bathroom scale. As you can probably guess from the existence of this post, it became a new weekend project.
Attempting to use the scale with the openScale app proved unsuccessful and initial research into how the scale worked proved to not have many useful results (maybe they’re all in Chinese given that’s where most sources seem to point).
The most helpful piece of information I found was a series of internal photos of the disassembled device from an FCC filing for FCC ID 2AVEN-CW286. While these photos seem to be from a third-party site, I was also able to find a filing for this same ID using the FCC’s official Equipment Authorization Search and searching for the Grantee Code of 2AVEN.
These photos provided a general idea of how the scale was put together (the feet remain attached to the glass and the plastic housing comes off), which gave me a starting point from which I could attempt to replicate the disassembly.
Here is a diagram of roughly how this scale is put together:
My advice for anyone trying to replicate this would be to first try and get under all four sides and break the adhesive strips holding the two halves together (being careful as there are wires, especially near the LED board). Then, use a pry tool to get under the edge of the plastic and move around to the corners where you can use the pry tool to unclip the clips on the outer corners. Repeating this process for the inside of the ring should allow the plastic ring to come off.
Other than a BK3432 chip controlling the scale and a few pads on the PCB for serial communication, there didn’t seem to be much else of interest. Datasheet-wise, the best I could find was this link from a company that seems to make similar boards based on this same chip.
If I had the proper tools to connect to PCB pads it might be neat to come back and investigate the serial interface of this scale and try to read the firmware and/or write my own (if you do this, I’d love to know).
After reassembling and some poking around the bluetooth interface, I learned that this scale doesn’t seem to provide weight data via traditional bluetooth services and characteristics (like it seems to for battery information and device info), but instead it seems to just advertise the current weight being sensed via the manufacturer information field of the bluetooth advertisement packets.
Here is a diagram of my findings relating to this data field:
This may not be a perfectly accurate diagram, because I only have one scale and didn’t try measuring weights near the scale’s upper limit, however, this interpretation seemed to be adequate for integrating with openScale.
Having never contributed to openScale before, I started by poking around the repository and looking into previously accepted contributions of additional scale support to get a sense of how to add support for a new scale. Thankfully there was a guide on their wiki that helped me gather the bluetooth logs that allowed me to understand how this scale communicated over bluetooth. I was also somewhat lucky to have come across a previous contribution that supported a scale with a very similar advertisement-based operation to this one, meaning I could mostly reuse the same code and tweak it for this specific scale.
I hope this random collection of things I learned while working with this scale helps someone else save a little extra time or headache when working with it.