- every BlueZ call runs off the asyncio thread with a timeout; if bluetoothd
stays unresponsive for 30 s the collector restarts bluetooth.service and
exits for a clean re-registration
- Type=notify + WatchdogSec for buttontask-collector, never give up restarting
- bluetooth.service drop-in: Restart=always (BlueZ 5.55 crashes on assert/SEGV),
installed by device-install.sh and OTA (bt-update)
- bt-service: bluez-restart action for the collector
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>