Home Assistant Brings the Watch Battery Down
It all leads back many months ago when I started seeing my Garmin fēnix watch dead every morning. I mean ALMOST every morning. Normally it can run for 1-2 weeks on a charge and suddenly every morning it was dead, despite being fully charged on the day before. I tried different things - software/firmware update of course, changing some parameters (but it had been working fine before) - no lasting improvement.
Until this June (after having extensive travel period - US West Coast, twice to China and then Europe), when I realized that it did not lose the battery when I was away from home. I started thinking on what was so special at home that the watch, left for the night on my bedside table, was losing the charge completely.
There was one idea that came to mind: Home Assistant. And to be precise: Home Assistant Bluetooth Proxy:
Remote adapters (Bluetooth proxies)
The Bluetooth integration supports receiving advertisement data from external adapters for devices and sensors that do not need an active connection, as well as establishing active connections. The number of remote scanners is limited only by the performance of the host system.
I have four of them and they are pretty neat. The hardware I described briefly in February 2025. On the software side they scan for any Bluetooth data and if they find anything they can recognize and interpret, and the data shows in Home Assistant. That includes a number of temperature sensors and similar devices.
So the quick verification would be: disable the Bluetooth proxies and see what happens. Guess what: the watch has not lost its charge. For couple of days in a row now.
One winter evening I will need to sit down with a Bluetooth scanner to figure out what exactly was happening between the watch and the Home Assistant proxies. They either do active scanning (send a scan request packet to the watch forcing it to respond) or try to start a connection (which the watch would probably reject), But in either case the repeated requests may simply prevent the watch from entering a deep sleep mode. If it keeps the microprocessor running all the time, the battery is drained quickly.
Who is to blame then? Too early to say without hard evidence. But clearly Garmin is the main suspect. Firstly - it should be resilient to a denial of service attack over Bluetooth - simply ignore repeated scan / connection requests. Because if not Home Assistant, then another device may start doing something similar. Secondly - it is not the first time I see the Garmin firmware is poorly designed, being even vulnerable to itself (when it runs out of memory),
Comments
Post a Comment