21

I'm having issues connecting my Logitech K810 Bluetooth keyboard in Debian Jessie with BlueZ version 5.23-1, kernel 3.16.0-4.

The keyboard works fine most of the time but sometimes it doesn't work at all and bluetoothctl gives me the error that the controller is unavailable.

When this occurs, hciconfig still recognizes the device and I get this output:

# hciconfig hci0 up 
# hciconfig
hci0:   Type: BR/EDR  Bus: USB
    BD Address: 40:2C:F4:68:02:CA  ACL MTU: 1021:8  SCO MTU: 64:1
    UP RUNNING PSCAN 
    RX bytes:21820 acl:1132 sco:0 events:68 errors:0
    TX bytes:1182 acl:11 sco:0 commands:53 errors:0

But no devices are shown in the bluetoothctl prompt and it gives me this output:

[bluetooth]# power on
No default controller available
[bluetooth]# scan on
No default controller available

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 relevant output from lspci -v, I guess would be this:

03:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000 [Condor Peak]
        Subsystem: Intel Corporation Centrino Wireless-N 1000 BGN
        Flags: bus master, fast devsel, latency 0, IRQ 43
        Memory at f0400000 (64-bit, non-prefetchable) [size=8K]
        Capabilities: <access denied>
        Kernel driver in use: iwlwifi

I didn't have this problem with the same hardware in Debian Wheezy.

What could it be the bluetooth controller to be unavailable at times?

Evan Carroll
  • 30,763
  • 48
  • 183
  • 315
MajorBriggs
  • 1,241
  • I have the same problem in OSMC running in Raspberry Pi. Did you find a solution? Share it if you have one, please. – user2109718 Jun 19 '15 at 00:21
  • No, haven't found a solution ... – MajorBriggs Jun 27 '15 at 08:39
  • 1
    I have encountered the same issue with OSMC on a Raspberry Pi. The keyboard shows up when scanning with hcitool. Bluetoothctl commands result in 'No default controller available'. – Dallas Aug 30 '15 at 15:10
  • 3
    After coming across this question during my investigations several times now: There still seems to be no answer, however, sometimes removing (modprobe -r btusb) and adding (modprobe btusb) the kernel module helps to get the controller back (so you can avoid doing a full reboot). – Marcus May 22 '17 at 14:39
  • @Dallas see my answer. You just need to run it as sudo and it works fine. – james-see Dec 14 '18 at 02:35
  • @MajorBriggs please accept my answer. Thanks – james-see Feb 14 '19 at 05:18

7 Answers7

9

I have been struggling with the same problem for months now, and none of the above solutions worked for me.

After a lot of research I found this solution on an old forum that worked for me

https://bbs.archlinux.org/viewtopic.php?id=271459

rmmod btusb
rmmod btintel

modprobe btintel modprobe btusb

Lpkr
  • 103
  • Welcome to the site, and thank you for your contribution. Please edit your post to add a link to the "old forum" where you found this solution. – AdminBee Jun 28 '22 at 14:14
  • 2
    tysm! I was going nuts with this and this solved it. – TheMechanic Jul 01 '22 at 10:58
  • Using ubuntu 22.04.3, I had this issue after a power cut off, tried everything but only this worked for me too! – user980085 Aug 27 '23 at 00:46
  • I had the same issue, this solution worked. I have the Intel AX200, using Debian (6.1.0-10-amd64). My dmesg -k | grep -i bluetooth reported this error: Bluetooth: hci0: Reading Intel version command failed (-110). – Yeti Oct 24 '23 at 08:48
6

I believe the answer is simply to run bluetoothctl with sudo.

Thus, sudo bluetoothctl. Then every command works fine power on, agent on etc. with no errors.

Confirmed working on Raspian Stretch.

james-see
  • 168
4

This is a long-standing issue, but it doesn't affect all distributions equally. My experience with it is limited to the Debian derivative for Raspberry Pi - Raspberry Pi OS (née Raspbian). In particular, the "Lite" version of the RPiOS distro is afflicted, but the "Full" version is not.

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.

A patch for that is easy enough: add the user to the bluetooth group

$ sudo usermod -G bluetooth -a pi

Or perhaps this as @Pablo has suggested below:

$ sudo adduser $USER bluetooth

Once this is done (and after a reboot IIRC), bluetoothctl becomes effective, and the Controller becomes responsive. sudo was not required afterwards.

While this patch is easy, a permanent solution would be far better - this is very confusing, and has been so for at least 7-8 years. I'd submit a bug report, but in my experience with Debian and Raspbian, that's a further waste of time.

Seamus
  • 2,925
0

Is kernel update an option?

Have you tried the latest linux-firmware package?

Also you can try the suggestions in secion "About iwldvm support and known issues" in here https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi

gat1
  • 163
0

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.
  • Restarted into Windows. (Bluetooth is now working)
  • Reboot back into Ubuntu.
-1

First enable bluetooth manually with the GUI. this is how it worked for me. i know this post is old, but it worked for me. Just search in your main menu for "bluetooth" (On my current mint 18 sarah it is like that)

You can then come back and try the commands with "power off"

  • 1
    What GUI? What exact steps? How would powering it off help establish a connection? – Jeff Schaller Feb 10 '17 at 12:08
  • This worked for me after upgrading from Debian Buster to Bullseye: sudo systemctl restart bluetooth then open bluetoothctl in a terminal, enable bluettooth via the top bar menu and see the "new controller" message appear in bluetoothctl. – snakecharmerb Oct 09 '21 at 16:26
-1

Maybe try systemctl start hciuart