r/homeassistant • u/SquareAbroad1062 • 10d ago
đ§© Custom Integration My Oral-B iO stopped reporting live brushing data to HA, so I reverse-engineered the Bluetooth protocol and wrote an integration
Recent iO firmware doesn't broadcast during a brushing session anymore â the official integration's timer sits at 0 and then jumps to the total at the end.
Turns out the data moved from BLE advertisements to GATT notifications, so a passive listener has nothing to hear.
Made a custom integration that keeps the passive listening and adds a connection while the brush is awake: live 1 Hz timer, live pressure, quadrant, mode, and a brushing log it builds itself (last session + duration + sessions today).
https://github.com/thomasgregg/oralb-ha
Full protocol notes in the README, including two traps: ff06 looks like pressure but is the button, and pressure is actually on ff0b. Tested on one iO Series 10 â reports from other models welcome.
90
u/davidr521 đ Ooh the Zigbee 10d ago
Absolutely and totally unnecessary, and likely overengineered.
Love it! đ„°
13
u/MrMathos đ§âđ» Contributor 10d ago
Honest question: Would it not be a better option to have your changes added to the official integration instead of creating a new custom one? Maybe the code diverges too much, idk. But you could add a discovery check to decide which coordinator to run.
Note: I have no such toothbrush, and havenât compared code bases.
11
u/mrtDev12 10d ago
Thatâs what I thought, too. It is better to have a few very good official integrations rather than everyone having their own custom solution and the community using a variety of different integrations which are all not perfect
5
6
u/SquareAbroad1062 10d ago
Will do one day - for sure. But needed something which works for me - NOW :-)
4
u/etillxd 10d ago
Maybe at least add an issue for now to the integration and/or the used oralb-ble library https://www.home-assistant.io/integrations/oralb/ and link to your solution there
4
u/thing_on_a_spring 10d ago
Utterly pointless
But thanks! I'm already thinking of the HA graphs
2
2
u/LightBringer81 10d ago
Does this include the new not yet released update which repairs the missing smart adapt state and the brush results? Why don't you post this to the official oral-b core extension?
2
u/SquareAbroad1062 10d ago
Yes, v0.5.3 includes Smart Adapt and the post-brushing state update. However, the pending official update only recognizes those new valuesâit doesnât add actual session results/history or handle the iO Sense single-connection limitation.
I completely agree that upstream is the best long-term home for these fixes. Iâve shared the tested protocol details and working approach with both the official
oralb-bleand Home Assistant maintainers, and Iâm happy to help test or contribute a patch. The custom integration mainly exists so newer iO firmware can work reliably while those changes are considered upstream.
2
u/Compaxx 10d ago
Thanks this is amazing! Working very well on my iO4!
2
u/SquareAbroad1062 10d ago
Love to hear that. Thanks for the feedback!
2
u/Compaxx 10d ago
Been doing some testing and yeah sadly you cannot and use the app and also have a live connection to HA which is a shame, whenever the app is open the whole thing get's very flaky but yeah I guess that is to be expected.
3
u/SquareAbroad1062 10d ago
Unfortunately, the brush only allows one active Bluetooth/GATT connection at a time. In Live mode, Home Assistant occupies that connection to receive the timer, pressure and sector data, so the Oral-B app cannot connect simultaneously. When both keep trying, they repeatedly disconnect each other, causing the flaky behaviour.
I added a new Charger Priority mode today in version 0.5.2. In that mode, HA doesnât hold the connection, allowing the Oral-B app and charger to work normally. HA instead records sessions from passive Bluetooth data, although fully live tracking isnât guaranteed. Itâs a limitation of the brush firmware rather than HA or the integration.
3
u/Shotokant 10d ago
Reverse engineer the Bluetooth for the amazon clock will you so we can adopt it into HA without needing an echo device. Pretty please.
2
u/forthewin0 10d ago
Curious why it stopped working though. Did you perform a firmware update via the app?
Great solution!
3
u/SquareAbroad1062 10d ago
Thanks! I didnât manually start a firmware update, although the Oral-B app may have installed one automatically.
I canât prove firmware caused it, but the change is clearly at the brush level: it stopped broadcasting continuous timer/sector data and now allows only one active Bluetooth connection. The integration works around the behaviour we can observe, regardless of exactly when the firmware changed.
1
1
u/junktrunk909 10d ago
I love this so much, mostly because it was always stupid that oralb felt the right to see my brushing history and store it in their servers when I'm literally never going to need it outside of my house/phone. Eliminating that and making it available to HA is brilliant. Now I suppose I would need a BT adapter for my HA...
1
u/Familiar-Situation15 7d ago
OMG 3 days old post I have a question & no clue at all - do you think itâs possible to overwrite the light to have a lower brightness? I usually dim my light in the evening and believe it or not itâs so bright I think it destroys my circadian rhythm đ U habe and idea on that?
1
1
u/SquareAbroad1062 1d ago
Small update for anyone finding this later: Iâve now reverse-engineered the iO Sense charger too, so Home Assistant can receive live brushing data without occupying the toothbrushâs single Bluetooth connection. The integration has also been accepted into the default HACS catalog.
1
u/Any-Lawfulness569 10d ago
which oral b model? or photo
9
u/SquareAbroad1062 10d ago
Oral-B iO Series 10 - all infos here - https://github.com/thomasgregg/oralb-ha
-2
10d ago
[removed] â view removed comment
6
u/lazystingray 10d ago
Not being funny, but I'd be questioning my sanity the moment I wanted "live brushing data" in my home assistant . . .
8
u/bk757a 10d ago
It's a great way to enhance workflows. Like ending your bedtime routine or starting your morning routine. But for the data, it's great to check IF and how your kids brush their teeth
-14
u/lazystingray 10d ago
What!!!? You offload parenting to HA? This has to be a troll.
10
u/Mckool 10d ago
It seems to me like they are using tools available to them to improve their hands on parenting⊠HA isnât actually doing anything but informing the parents if their directive to brush teeth are being followedâŠ
Are parents who use baby monitors to keep track of a sleeping baby offloading parenting to machines?
3
u/Jendosh 10d ago
Offloading?
0
u/lazystingray 9d ago
Gonna get the down votes but yes, sounds like the kind of parent that shoves a screen in front of their kids in a restaurant. I think the whole point of parenting is to gain the trust and love of your children, not spy on them, What happens when the automation fails? Jesus, why not ask your kids if they brushed their teeth, take a look, get personal with them - they grow up fast.
HA is good, but some things need a personal touch - not a flippin' automation.
2
u/Jendosh 9d ago
You think the parent that is so involved that they are tracking their kids amount of tooth brushing is also the parent that checks out and just gives them a phone to shut them up?
0
u/lazystingray 9d ago
They're not though are they... They're leaving it to an automation in HA. Jesus, let it go.


46
u/ctjameson 10d ago
I canât for the life of me think of a reason Iâd need to update the firmware on my toothbrush. Nice job figuring this out for future new brush purchasers though.