The starting idea here is a good one: the Oral-B iO5 and its siblings carry a 6-axis IMU, and the companion app uses that sensor to predict where in the mouth the brush currently is. The maker set out to get that same position estimation running locally, with a live stream and a predictive model of their own.
The path to get there is what makes this stand out. The brush talks only over Bluetooth, so no internet connection is needed, and a Pi or similar can listen to the stream and handle processing on the spot. The model from the companion app turned out to be a 1.2M parameter bidirectional GRU. With help from Claude, the message structure was decoded, the model was evaluated on a public dataset at about 63% accuracy against a baseline near 6%, and ablation was run since the network seemed like overkill. That ablation showed most of the value sits in roughly 10 seconds of history. Real examples were expanded into a larger synthetic dataset, then distilled into a set of small models, including a CNN that came close to the original accuracy while being 100x smaller.
The result is a three-js simulator that acts as a live digital twin. It visualizes orientation tracking and mouth zone classification with predicted zones and confidence percentages, alongside telemetry for acceleration, gyro and pressure plus a ground truth line for the actual location. Sessions can be recorded and replayed from local storage. One neat detail: the app sends a fixed message on first connect to unlock the brush for writes, and the maker admitted possibly having Claude alter the auto-cycle setting that way.
The open question worth watching: the maker guesses Oral-B gathered its quadrant data through guided brushing, possibly top-down, which would matter for anyone retraining on their own sessions.