It's a bit wired here.
I have a problem is bluetoothctl always said "No default controller available". I found there are many people had same problem with me. But the situation is a bit different from them.
I can see my hciconfig -a have information like below
And hcitool dev seems no problem as well.
But I have no idea why my bluetoothctl always said "No default controller available"
Even when I turn down and turn up hci0 several times. It always in the same problem.
BTW, my BlueZ is 5.39. And I tried this experiment on buildroot. Kernel is 3.10
Rebooting or sometimes suspending/resuming fixes the issue: bluetoothctl will again recognize both the controller and the keyboard which works again. Bluetooth is consistently hard and soft unblocked according to rfkill.
The issue seems to be that the default user (and all users I suspect) are not included in the secondary group named bluetooth in the "Lite" version of RaspOS as they are in the "Full" version. Once this is done (and after a reboot IIRC), bluetoothctl becomes effective, and the Controller becomes responsive. sudo was not required afterwards.
Some of bluetooth devices firmware are not available in the new linux libraries right out of the box and you need to find. for this problem you can refer to the following repo. In readme it's well documented what you should do. basically you 'd download and copy the frimware in for Broadcom Bluetooth devices.
I have Lenovo Ideapad Gaming 3 with dual boot enabled (Ubuntu 20.04 and Windows 10). After trying all the above solution. Just boot into Windows. (Bluetooth is also not working in Windows) Update the Bluetooth drivers from there.
Had the same problem. Use: $ sudo bluetoothctl
Then the controller was found automatically. I also tried https://www.raspberrypi.org/forums/viewtopic.php?t=207025 before. Maybe this effected the solution.
Also happens if rfkill switch is blocking Bluetooth (for some inadvertent reason, in my case):
$ rfkill list all 0: tpacpi_bluetooth_sw: Bluetooth Soft blocked: yes Hard blocked: no
To unblock, pass the ID for your Bluetooth device from the list above to the unblock
subcommand:
$ rfkill unblock 0
Then controller should be back:
$ bluetoothctl list Controller .... [default]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With