# [solved] Intel Bluetooth 8087:0a2b (Intel 8265) disappearing

## tbart

Hi there!

I have a strange problem:

This is a Thinkpad T470s (though I found at least the T460s to have the same wifi/bluetooth device, probably a lot more notebooks have it, Lenovo Y520, Dell Precision 5520m, etc..).

I am unable to get bluetooth working. The device shortly appears after either unblocking with rfkill or using the keyboard shortcut with the bluetooth sign.

This is kernel 4.15.1-gentoo.

The wifi device (don't know whether this is relevant):

```

3a:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)

   Subsystem: Intel Corporation Dual Band Wireless-AC 8265

   Flags: bus master, fast devsel, latency 0, IRQ 130

   Memory at dc100000 (64-bit, non-prefetchable) [size=8K]

   Capabilities: [c8] Power Management version 3

   Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+

   Capabilities: [40] Express Endpoint, MSI 00

   Capabilities: [100] Advanced Error Reporting

   Capabilities: [140] Device Serial Number 00-e1-8c-ff-ff-9f-97-82

   Capabilities: [14c] Latency Tolerance Reporting

   Capabilities: [154] L1 PM Substates

   Kernel driver in use: iwlwifi

   Kernel modules: iwlwifi

```

The USB device that appears shortly:

```

Bus 001 Device 031: ID 8087:0a2b Intel Corp. 

Couldn't open device, some information will be missing

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass          224 Wireless

  bDeviceSubClass         1 Radio Frequency

  bDeviceProtocol         1 Bluetooth

  bMaxPacketSize0        64

  idVendor           0x8087 Intel Corp.

  idProduct          0x0a2b 

  bcdDevice            0.10

  iManufacturer           0 

  iProduct                0 

  iSerial                 0 

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength          177

    bNumInterfaces          2

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0xe0

      Self Powered

      Remote Wakeup

    MaxPower              100mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           3

      bInterfaceClass       224 Wireless

      bInterfaceSubClass      1 Radio Frequency

      bInterfaceProtocol      1 Bluetooth

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x02  EP 2 OUT

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x82  EP 2 IN

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       0

      bNumEndpoints           2

      bInterfaceClass       224 Wireless

      bInterfaceSubClass      1 Radio Frequency

      bInterfaceProtocol      1 Bluetooth

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x03  EP 3 OUT

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0000  1x 0 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0000  1x 0 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       1

      bNumEndpoints           2

      bInterfaceClass       224 Wireless

      bInterfaceSubClass      1 Radio Frequency

      bInterfaceProtocol      1 Bluetooth

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x03  EP 3 OUT

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0009  1x 9 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0009  1x 9 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       2

      bNumEndpoints           2

      bInterfaceClass       224 Wireless

      bInterfaceSubClass      1 Radio Frequency

      bInterfaceProtocol      1 Bluetooth

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x03  EP 3 OUT

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0011  1x 17 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0011  1x 17 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       3

      bNumEndpoints           2

      bInterfaceClass       224 Wireless

      bInterfaceSubClass      1 Radio Frequency

      bInterfaceProtocol      1 Bluetooth

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x03  EP 3 OUT

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0019  1x 25 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0019  1x 25 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       4

      bNumEndpoints           2

      bInterfaceClass       224 Wireless

      bInterfaceSubClass      1 Radio Frequency

      bInterfaceProtocol      1 Bluetooth

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x03  EP 3 OUT

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0021  1x 33 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0021  1x 33 bytes

        bInterval               1

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       5

      bNumEndpoints           2

      bInterfaceClass       224 Wireless

      bInterfaceSubClass      1 Radio Frequency

      bInterfaceProtocol      1 Bluetooth

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x03  EP 3 OUT

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0031  1x 49 bytes

        bInterval               1

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            1

          Transfer Type            Isochronous

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0031  1x 49 bytes

        bInterval               1

```

rfkill before:

```
localhost ~ # rfkill list

0: tpacpi_bluetooth_sw: Bluetooth

   Soft blocked: yes

   Hard blocked: no

1: phy0: Wireless LAN

   Soft blocked: no

   Hard blocked: no

```

rfkill after using unblock all at least twice:

```
localhost ~ # rfkill unblock all && sleep 2 && rfkill list

0: tpacpi_bluetooth_sw: Bluetooth

   Soft blocked: no

   Hard blocked: no

1: phy0: Wireless LAN

   Soft blocked: no

   Hard blocked: no

22: hci0: Bluetooth

   Soft blocked: no

   Hard blocked: no

```

(If just used once, hci0 and tpacpi_bluetooth_sw remain soft blocked)

That just looks about right, but after some time, I'm back at square one (tpacpi_bluetooth_sw softblocked, no hci0)

dmesg shows this:

```
[ 5101.168619] usb 1-7: new full-speed USB device number 28 using xhci_hcd

[ 5101.298550] Bluetooth: hci0: Bootloader revision 0.0 build 26 week 38 2015

[ 5101.298736] usb 1-7: USB disconnect, device number 28

[ 5103.311499] Bluetooth: hci0: command 0xfc0d tx timeout

[ 5111.695363] Bluetooth: hci0: Reading Intel boot parameters failed (-110)

```

sometimes (different command)

```

[ 5081.406057] usb 1-7: new full-speed USB device number 25 using xhci_hcd

[ 5081.536519] usb 1-7: USB disconnect, device number 25

[ 5083.536002] Bluetooth: hci0: command 0xfc05 tx timeout

[ 5083.536019] Bluetooth: hci0: Reading Intel version information failed (-110)

```

and rarely

```

[ 4159.923341] usb 1-7: new full-speed USB device number 20 using xhci_hcd

[ 4160.051498] Bluetooth: hci0: Bootloader revision 0.0 build 26 week 38 2015

[ 4160.052496] Bluetooth: hci0: Device revision is 16

[ 4160.052500] Bluetooth: hci0: Secure boot is enabled

[ 4160.052502] Bluetooth: hci0: OTP lock is enabled

[ 4160.052504] Bluetooth: hci0: API lock is enabled

[ 4160.052505] Bluetooth: hci0: Debug lock is disabled

[ 4160.052508] Bluetooth: hci0: Minimum firmware build 1 week 10 2014

[ 4160.056340] usb 1-7: USB disconnect, device number 20

[ 4160.058671] Bluetooth: hci0: Found device firmware: intel/ibt-12-16.sfi

[ 4160.058704] Bluetooth: hci0: sending frame failed (-19)

[ 4162.094297] Bluetooth: hci0: command 0xfc09 tx timeout

[ 4170.157898] Bluetooth: hci0: Failed to send firmware header (-110)

```

That seems legit, sending firmware to a device that disappears is somewhat.. problematic to say the least!

These errors just seem to be variations of race conditions depending on when the device disappears.

Other people seem to be able to get it working:

https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_T460s (no mention whatsoever, but marked as working)

https://ubuntuforums.org/showthread.php?t=2354736&p=13618690#post13618690 (Missing firmware was the problem, that's not the case here, obviously)

I am pretty clueless. Could this be some power saving issue? Where should I try to change things?

The kernel says USB disconnect, this really looks low-level, so I don't think anything more than kernel or firmware should be relevant..

Which parts of the kernel config could be of interest?

```
localhost ~ # grep CONFIG_BT /usr/src/linux/.config

CONFIG_BT=m

CONFIG_BT_BREDR=y

CONFIG_BT_RFCOMM=m

CONFIG_BT_RFCOMM_TTY=y

# CONFIG_BT_BNEP is not set

CONFIG_BT_HIDP=m

CONFIG_BT_HS=y

CONFIG_BT_LE=y

# CONFIG_BT_LEDS is not set

# CONFIG_BT_SELFTEST is not set

CONFIG_BT_DEBUGFS=y

CONFIG_BT_INTEL=m

CONFIG_BT_HCIBTUSB=m

# CONFIG_BT_HCIBTUSB_BCM is not set

# CONFIG_BT_HCIBTUSB_RTL is not set

# CONFIG_BT_HCIBTSDIO is not set

# CONFIG_BT_HCIUART is not set

# CONFIG_BT_HCIBCM203X is not set

# CONFIG_BT_HCIBFUSB is not set

# CONFIG_BT_HCIDTL1 is not set

# CONFIG_BT_HCIBT3C is not set

# CONFIG_BT_HCIBLUECARD is not set

# CONFIG_BT_HCIBTUART is not set

# CONFIG_BT_HCIVHCI is not set

# CONFIG_BT_MRVL is not set

# CONFIG_BT_ATH3K is not set

# CONFIG_BTRFS_FS is not set
```

lsmod:

```
localhost ~ # lsmod | egrep "(bt.*|blue.*|iwl.*|Used)"

Module                  Size  Used by

btusb                  40960  0

btintel                16384  1 btusb

bluetooth             405504  2 btintel,btusb

ecdh_generic           24576  1 bluetooth

iwlmvm                266240  0

mac80211              430080  1 iwlmvm

iwlwifi               176128  1 iwlmvm

cfg80211              319488  3 iwlmvm,iwlwifi,mac80211

rfkill                 24576  5 bluetooth,thinkpad_acpi,cfg80211

```

I'll see whether it works in the preinstalled spyware with a GUI.Last edited by tbart on Sun Feb 18, 2018 2:54 pm; edited 1 time in total

----------

## roarinelk

try with the kernel bt stack completely builtin instead of modular.    I do have a system with this bt+wifi device, and it works quite flawlessly this way.  You probably also need to add the 2 firmware files to the in-kernel firmware list as well (intel/ibt-12-16.sfi  and intel/ibt-12-16.ddc ).

----------

## tbart

Thanks, but that did not help either.

It works with sysresccd on kernel 4.9.60.

I went through all the hoops to get to the same kernel version (as it is not in portage anymore) and still it wouldn't work.

So I went back to searching in user space.

And guess what, it is no kernel problem. I have an enlightenment desktop with (e)connman which works perfectly (for wired/wifi). However, it also takes control of bluetooth, and it's disabled by default. So whenever connman sees a new bluetooth device it disables it at once. No mention whatsoever in the logs, this is kinda mean.

So, to solve this, either enable bluetooth in econnman (the GUI), do it on the CLI:

```
localhost ~ # connmanctl

connmanctl> enable bluetooth

Enabled bluetooth
```

or disable connman's bluetooth handling altogether:

```
localhost ~ # grep OPTS /etc/conf.d/connman

CONNMAN_OPTS="-P bluetooth"
```

and restart connman

```
localhost ~ # /etc/init.d/connman restart
```

Strangely though, it works with connman in the disabled/default config and the thinkpad_acpi module not loaded (or not loaded before the firmware download has finished! But then only once, till the first disabling event; enabling again does not work anymore). It seems connman somehow needs the ACPI control, though an rfkill interface is available before as well..

Now the hotkey also works as intended.

Thanks everyone for watching/helping!

----------

