4

I have a Thinkpad X1 Carbon 7th Gen, running Fedora 30. My problem is that I cannot make bluetooth work. I have tried multiple approaches to solve this issue, but all remain effectless.

  • Via Settings GUI

When I go to "Settings / Bluetooth", I can turn bluetooth ON (top right toggle switch). However, the text doesn't change and tells me that bluetooth is turned off.

enter image description here

  • iwlwifi.conf

Of course, I have checked that the bluetooth is activated in the BIOS. Moreover, I've created /etc/modprobe.d/iwlwifi.conf as follows:

options iwlwifi bt_coex_active=0
  • TLP

Finally, I've set up /etc/default/tlp as (relevant excerpts only):

[…]

# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown      
# on system startup: 0=disable, 1=enable.                                        
# Note: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below       
#   are ignored when this is enabled.                                            
# Default: 0                                                                     
RESTORE_DEVICE_STATE_ON_STARTUP=0                                                

# Radio devices to disable on startup: bluetooth, wifi, wwan.                    
# Separate multiple devices with spaces.                                         
# Default: <none>                                                                
#DEVICES_TO_DISABLE_ON_STARTUP="bluetooth"                                       

# Radio devices to enable on startup: bluetooth, wifi, wwan.                     
# Separate multiple devices with spaces.                                         
# Default: <none>                                                                
DEVICES_TO_ENABLE_ON_STARTUP="wifi bluetooth"                                    

# Radio devices to disable on shutdown: bluetooth, wifi, wwan.                   
# (workaround for devices that are blocking shutdown).                           
# Default: <none>                                                                
DEVICES_TO_DISABLE_ON_SHUTDOWN="bluetooth wifi wwan"                             

# Radio devices to enable on shutdown: bluetooth, wifi, wwan.                    
# (to prevent other operating systems from missing radios).                      
# Default: <none>                                                                
#DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan"                                            

# Radio devices to enable on AC: bluetooth, wifi, wwan.                          
# Default: <none>                                                                
#DEVICES_TO_ENABLE_ON_AC="bluetooth wifi wwan"                                   

# Radio devices to disable on battery: bluetooth, wifi, wwan.                    
# Default: <none>                                                                
#DEVICES_TO_DISABLE_ON_BAT="bluetooth wifi wwan"                                 

# Radio devices to disable on battery when not in use (not connected):           
#   bluetooth, wifi, wwan.                                                       
# Default: <none>                                                                
#DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wifi wwan"

[…]

# ------------------------------------------------------------------------------ 
# tlp-rdw - Parameters for the radio device wizard                               
# Possible devices: bluetooth, wifi, wwan.                                       

# Notes:                                                                         
# - Parameters are disabled by default, remove the leading # to enable them      
# - Separate multiple radio devices with spaces                                  

# Default: <none> (for all parameters below)                                     

# Radio devices to disable on connect.                                           
DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"                                    
#DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan"                                       
#DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi"                                       

# Radio devices to enable on disconnect.                                         
DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi "                                      
#DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT=""                                         
#DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT=""                                         

# Radio devices to enable/disable when docked.                                   
#DEVICES_TO_ENABLE_ON_DOCK=""                                                    
#DEVICES_TO_DISABLE_ON_DOCK=""                                                   

# Radio devices to enable/disable when undocked.                                 
#DEVICES_TO_ENABLE_ON_UNDOCK="wifi"                                              
#DEVICES_TO_DISABLE_ON_UNDOCK=""
  • HCI config

I also tried to disable power optimisation for bluetooth, but powertop tries to run >> /usr/sbin/hciconfig hci0 up &> /dev/null & when I want to toggle

>> Good          Bluetooth device interface status

As I'm running Fedora (?), I have bin rather than sbin, so I ran sudo /usr/bin/hciconfig hci0 up &> /dev/null manually.

  • Turning bluetooth on via CLI
$ sudo hciconfig up                                                                                                                                        
hci0:   Type: Primary  Bus: USB
    BD Address: DC:71:96:99:3F:A8  ACL MTU: 1021:4  SCO MTU: 96:6
    DOWN 
    RX bytes:16660 acl:0 sco:0 events:2700 errors:0
    TX bytes:666973 acl:0 sco:0 commands:2698 errors:0
  • Checking rfkill status

It doesn't seem to be the issue here.

$ rfkill                                                                                                                                                    
ID TYPE      DEVICE                   SOFT      HARD
 0 bluetooth tpacpi_bluetooth_sw unblocked unblocked
 1 bluetooth hci0                unblocked unblocked
 2 wlan      phy0                unblocked unblocked
  • Investigating via dmesg I've added my manual events using # comments. Note that when I turn my computer on and go in the top left menu, I can "Turn off" Bluetooth… which state is "Off"!

enter image description here

$ sudo dmesg | grep -E 'Bluetooth|hci0|intel/ibt|iwl|usb 1-10'                                                                                             
[    3.038389] usb 1-10: new full-speed USB device number 5 using xhci_hcd
[    3.166272] usb 1-10: New USB device found, idVendor=8087, idProduct=0aaa, bcdDevice= 0.02
[    3.166273] usb 1-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   12.560006] Bluetooth: Core ver 2.22
[   12.560023] Bluetooth: HCI device and connection manager initialized
[   12.560025] Bluetooth: HCI socket layer initialized
[   12.560027] Bluetooth: L2CAP socket layer initialized
[   12.560031] Bluetooth: SCO socket layer initialized
[   12.591904] iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)
[   12.614868] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[   12.615864] Bluetooth: hci0: Device revision is 2
[   12.615865] Bluetooth: hci0: Secure boot is enabled
[   12.615865] Bluetooth: hci0: OTP lock is enabled
[   12.615865] Bluetooth: hci0: API lock is enabled
[   12.615866] Bluetooth: hci0: Debug lock is disabled
[   12.615866] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[   12.617782] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[   12.624703] iwlwifi 0000:00:14.3: Found debug destination: EXTERNAL_DRAM
[   12.624704] iwlwifi 0000:00:14.3: Found debug configuration: 0
[   12.624901] iwlwifi 0000:00:14.3: loaded firmware version 46.93e59cf4.0 op_mode iwlmvm
[   12.750348] iwlwifi 0000:00:14.3: Detected Intel(R) Wireless-AC 9560 160MHz, REV=0x318
[   12.756808] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[   12.756956] iwlwifi 0000:00:14.3: Allocated 0x00400000 bytes for firmware monitor.
[   12.803914] iwlwifi 0000:00:14.3: base HW address: dc:71:96:99:3f:a4
[   12.888770] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[   12.892885] iwlwifi 0000:00:14.3 wlp0s20f3: renamed from wlan0
[   14.288430] Bluetooth: hci0: Waiting for firmware download to complete
[   14.288852] Bluetooth: hci0: Firmware loaded in 1635914 usecs
[   14.288894] Bluetooth: hci0: Waiting for device to boot
[   14.301955] Bluetooth: hci0: Device booted in 12769 usecs
[   14.302307] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-17-16-1.ddc
[   14.305022] Bluetooth: hci0: Applying Intel DDC parameters completed
[   30.630541] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[   30.745533] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[   30.810557] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
[   30.843148] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[   30.957796] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[   31.022390] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
[   34.449002] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[   34.566179] iwlwifi 0000:00:14.3: Applying debug destination EXTERNAL_DRAM
[   34.633419] iwlwifi 0000:00:14.3: FW already configured (0) - re-configuring
# In the top-left menu, I "Turn off" the Bluetooth… that is already off (see picture)
[  136.308722] usb 1-10: USB disconnect, device number 5
# In "Settings/Bluetooth", I click on the toggle button to switch it on.
[  157.642145] usb 1-10: new full-speed USB device number 6 using xhci_hcd
[  157.771145] usb 1-10: New USB device found, idVendor=8087, idProduct=0aaa, bcdDevice= 0.02
[  157.771151] usb 1-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  157.775067] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[  157.776096] Bluetooth: hci0: Device revision is 2
[  157.776098] Bluetooth: hci0: Secure boot is enabled
[  157.776100] Bluetooth: hci0: OTP lock is enabled
[  157.776103] Bluetooth: hci0: API lock is enabled
[  157.776104] Bluetooth: hci0: Debug lock is disabled
[  157.776107] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[  157.776872] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[  159.727328] Bluetooth: hci0: Waiting for firmware download to complete
[  159.727931] Bluetooth: hci0: Firmware loaded in 1907957 usecs
[  159.728175] Bluetooth: hci0: Waiting for device to boot
[  159.740907] Bluetooth: hci0: Device booted in 12575 usecs
[  159.741009] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-17-16-1.ddc
[  159.743971] Bluetooth: hci0: Applying Intel DDC parameters completed

All this remained effectless.

How to make bluetooth actually work?

8
  • probably all those settings are masked behind rfkill. What is the output of rfkill? – mattia.b89 Sep 14 '19 at 11:23
  • @mattia.b89 thanks for the idea. Unfortunately, bluetooth doesn't seems blocked by rfkill: $ rfkill // ID TYPE DEVICE SOFT HARD // 0 bluetooth tpacpi_bluetooth_sw unblocked unblocked // 2 wlan phy0 unblocked unblocked // 3 bluetooth hci0 unblocked unblocked – ebosi Sep 14 '19 at 11:29
  • please @ebosi try: 1. removeiwlwifi.conf 2. disable TLP 3. post a full dmesg – mattia.b89 Sep 14 '19 at 16:40
  • @mattia.b89 Done → you can checkout the result on Pastebin (message is too long otherwise). – ebosi Sep 14 '19 at 18:20
  • 1
    maybe this is the problem! you should look there and as my last idea, here: superuser.com/questions/924559/… – mattia.b89 Sep 14 '19 at 21:05
1

The iwlwifi driver indicates you probably have an Intel WiFi+Bluetooth module in your laptop. To work correctly, it requires firmware: both the WiFi and the Bluetooth parts of the module have their own firmwares.

Run sudo dmesg after trying to activate the Bluetooth feature. If there is a message like Direct firmware load for intel/ibt-<something> failed with error ..., you are missing a firmware file for Intel Bluetooth. The error message will identify the exact pathname under /lib/firmware the kernel is expecting the firmware file to be in.

For example, if the pathname in the error message is intel/ibt-20-1-4.sfi, then the firmware file must be placed in /lib/firmware/intel/ibt-20-1-4.sfi.

You'll find the firmwares for most Intel WiFi+Bluetooth modules (and some other Intel system components too) here in the Linux firmware git repository. Find the firmware files your system is requesting on that page, then click on the link labeled plain on the right-most column to download the firmware file. Then copy it to the appropriate directory on your system with:

sudo cp <wherever you downloaded the file to> /lib/firmware/intel/

Note that there may be multiple files you'll need. If there is a *.ddc file and a *.sfi file with the same name, download both of them: once the driver gets the first one of them loaded, it will attempt to load the other file also. You may have to do multiple attempts to make sure all the firmware file requests are satisfied.

1
  • Thanks for pointing out this possible solution. (Un)fortunately, it seems that I already have the firmware correctly installed. (I've added an excerpt of dmesg in my question.) – ebosi Sep 14 '19 at 15:42
0

Well, I feel a bit stupid but… the bluetooth deamon was simply not running!

So I've solved it via:

systemctl enable bluetooth

Voilà!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.