This is an automated archive made by the Lemmit Bot.
The original was posted on /r/homeassistant by /u/SquareAbroad1062 on 2026-08-01 16:01:14+00:00.
A little while ago, I posted about reverse-engineering my Oral-B iO after newer firmware stopped broadcasting live brushing data:
The first version solved that by connecting Home Assistant directly to the toothbrush. It worked, but exposed another limitation: the brush accepts only one Bluetooth client. While HA was connected, the iO Sense display and Oral-B app could not use the brush normally.
That bothered me, so I made the unnecessarily overengineered integration even more overengineered and decoded the local Bluetooth interface exposed by the iO Sense charger too.
The integration can now work like this:
Home Assistant <-- local BLE --> iO Sense charger <-- private BLE --> Toothbrush
The charger keeps its normal connection to the toothbrush, while Home Assistant reads the brushing data locally through the charger. HA no longer has to occupy the toothbrush’s connection slot.
Everything remains completely local, read-only and independent of the Oral-B cloud.
What is working now:
- Live brushing timer at approximately 1 Hz
- Live low, normal and high pressure
- Brushing mode
- Timed pacer sector and sector timer
- Persistent last-session history and sessions-today counter
- Retained session results with actual duration, mode, pressure events and ending battery
- Battery and brush-head diagnostics where supported
- A separate iO Sense device in HA with charger, display, clock, Wi-Fi, firmware and connection information
- Compatibility with the existing Home Assistant Toothbrush Card entities
There are still only two straightforward connection choices:
- Charger/app compatible - recommended when an iO Sense is available. HA reads through the charger and leaves the toothbrush connection alone.
- Home Assistant direct - HA connects straight to the toothbrush for its fastest notification stream, but temporarily owns the brush’s single connection.
The integration automatically handles the internal data sources and fallbacks; users do not need to choose between a collection of technical transport modes.
It has now also been accepted into the default HACS catalog, so you can install it directly by searching for Oral-B Live in HACS:
GitHub and installation instructions
I also moved the reverse-engineered protocol findings into a dedicated reference document, including both the direct toothbrush protocol and the charger bridge.
Currently tested most extensively with an iO Series 10 and iO Sense. Reports from other iO and charger models would be very helpful - especially whether live pressure, mode and completed-session results work correctly.
I’ve shared the useful protocol findings with the official oralb-ble and Home Assistant maintainers as well. Hopefully some of this work can eventually help improve the built-in integration too.
no comments (yet)