I fixed the problem thusly:
# /etc/systemd/system/bluetooth-restart.service
[Unit]
Description=Restart misbehaving Bluetooth
[Service]
ExecStart=/bin/sh -c 'sleep 5; rfkill unblock bluetooth || exit 1; sleep 5; systemctl restart bluetooth || exit 1;'
[Install]
WantedBy=graphical.target
Enable.
I also disabled bluetooth.service
but I believe that’s optional (cleaning up redundancy).
This has been working reliably for months now after a year of trying every solution out here.
Caveat: I do not boot with Android enabled. Many people claim a systemctl restart bluebinder
is required after the above, but for me it has the opposite effect - an already working bluetooth stops working again.