Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.17.6-1-ARCH There is no controller in bluetoothctl #18

Open
laptander opened this issue Dec 20, 2014 · 37 comments
Open

3.17.6-1-ARCH There is no controller in bluetoothctl #18

laptander opened this issue Dec 20, 2014 · 37 comments

Comments

@laptander
Copy link

Hello.
I am using ArchLinux now with 3.17.6-1 kernel and Lenovo yoga 13 ideapad.
My bluetooth is not working. As I explained here lwfinger/rtl8723au#53 about wifi, I have blacklisted r8723au, and then probed 8723au. My /etc/modprobe.d/mywifi.conf is the following

#blacklisting kernel's wifi
blacklist r8723au

#probing aur's wifi
8723au

Now I am trying to get bluetooth work.
I have git cloned this repo, made it and installed. By the way, it says

[root@yoga ~]# modprobe btusb 
libkmod: kmod_config_parse: /etc/modprobe.d/mywifi.conf line 5: ignoring bad line starting with     '8723au'

for some reason...
If I run #bluetoothctl there are not any controllers shown.
Please, help me.

@lwfinger
Copy link
Owner

You need to run 'sudo make install' in the repo for 8723au, and delete that line of mywifi.conf. Blacklisting r8723au is needed, but that is enough. When the kernel scans the USB system, it will find the USB ID and load 8723au.

For the BT, I suggest you use the "new" branch, rather than "master", and again make and sudo make install. After I do that and reboot,bluetoothctl finds the controller, and entering "scan on" shows my cell phone, which has BT enabled for use in the car.

@laptander
Copy link
Author

Thanks for quick reply.
I have already installed AUR package https://aur.archlinux.org/packages/dkms-8723au-git/ which I believe is the same as make, sudo make install 8723au.
Thanks for advice, I deleted probing line.
In rtl8723au_bt directory I run

make clean
git checkout new
make

And here what I got:

yoga% LANG=en_US.UTF-8 make
make -C /lib/modules/3.17.6-1-ARCH/build M=/home/ndr/builds/rtl8723au_bt modules
make[1]: Entering directory '/usr/lib/modules/3.17.6-1-ARCH/build'
  CC [M]  /home/ndr/builds/rtl8723au_bt/btusb.o
/home/ndr/builds/rtl8723au_bt/btusb.c:478:12: error: static declaration of ‘hci_recv_fragment’ follows non-static declaration
 static int hci_recv_fragment(struct hci_dev *hdev, int type, void *data,
        ^
In file included from /home/ndr/builds/rtl8723au_bt/btusb.c:29:0:
include/net/bluetooth/hci_core.h:928:5: note: previous declaration of ‘hci_recv_fragment’ was here
 int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count);
     ^
scripts/Makefile.build:263: recipe for target '/home/ndr/builds/rtl8723au_bt/btusb.o' failed
make[2]: *** [/home/ndr/builds/rtl8723au_bt/btusb.o] Error 1
Makefile:1373: recipe for target '_module_/home/ndr/builds/rtl8723au_bt' failed
make[1]: *** [_module_/home/ndr/builds/rtl8723au_bt] Error 2
make[1]: Leaving directory '/usr/lib/modules/3.17.6-1-ARCH/build'
Makefile:15: recipe for target 'all' failed
make: *** [all] Error 2
yoga% 

I cannot make it. Is it my mistake or code error?
You got 8723au hardware?

By the way, when I am running sudo wifi-menu

Scanning for networks... ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
done

Maybe this is the problem? I just do not know, but want to provide full information.

@lwfinger
Copy link
Owner

I had failed to push my latest changes. It should build now after a git pul.

I have no idea what the AUR package does.

@laptander
Copy link
Author

I have completely remove my local repo folder, than I git cloned this repo again (rtl8723au_bt). Nothing changed, as I can see. While I run make I got the same error as desribed above.
Are you talking about this #8 pull?
Maybe I can do such changes in rtk_btusb.c manually in cloned repo? But there are several candidates to change in branch 'new' and I do not know what file to change:

rtl8723au_bt/btusb.c
rtl8723au_bt/Linux_BT_USB_2.11.20140423_8723BE/btusb.c
rtl8723au_bt/Linux_BT_USB_2.11.20140423_8723BE/rtk_btusb.c
rtl8723au_bt/Linux_BT_USB_2.11.20140423_8723BE/bluetooth_usb_driver/rtk_btusb.c

Please, help. What exactly should I do?

@lwfinger
Copy link
Owner

Here is my sequence of steps:

finger@linux:> git clone http://github.com/lwfinger/rtl8723au_bt.git temp
Cloning into 'temp'...
remote: Counting objects: 143, done.
remote: Total 143 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (143/143), 324.46 KiB | 475.00 KiB/s, done.
Resolving deltas: 100% (67/67), done.
Checking connectivity... done.
finger@linux:
> cd temp
finger@linux:/temp> git checkout new
Branch new set up to track remote branch new from origin.
Switched to a new branch 'new'
finger@linux:
/temp> make
make -C /lib/modules/3.18.0-wd+/build M=/home/finger/temp modules
make[1]: Entering directory '/home/finger/wireless-drivers'
CC [M] /home/finger/temp/btusb.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/finger/temp/btusb.mod.o
LD [M] /home/finger/temp/btusb.ko
make[1]: Leaving directory '/home/finger/wireless-drivers'
finger@linux:~/temp>

I am using a 3.18 kernel, but it should work with 3.17 unless ARCH is messing around with kernel sources the way that Ubuntu has been doing lately.

@laptander
Copy link
Author

Hmm, strange... My sequence is the same. But when run make I still got error.
Then, what should I do to make package?
Are you running Arch?
I have tried to build it on other PC (needed to install linux-headers), but the errer is still there.

@lwfinger
Copy link
Owner

The part of the code that is erroring is inside the compiler directives:

#ifndef hci_recv_fragment

#endif

I have no idea why that code is being compiled if one of your headers is defining hci_recv_fragment. There is something wrong with you kernel headers. No, I do not use Arch.

I just pushed a change that might help.

@laptander
Copy link
Author

Oh, thanks for quick reply. And thanks for fix. It is buildable now.
I run make, then sudo make install, then reboot. But there are still not any controller in bluetoothctl prompt.
Do I need some additional steps, such as blacklisting original btusb or something?
After reboot, I have the following:

[root@yoga ~]# lsmod |grep btusb
btusb                  29911  0 
rtk_btusb              21697  0 
bluetooth             402850  11 bnep,btusb,rtk_btusb,rfcomm
usbcore               199381  9      btusb,uvcvideo,rtsx_usb,rtk_btusb,ehci_hcd,ehci_pci,usbhid,8723au,xhci_hcd

@lwfinger
Copy link
Owner

When you did "sudo make install", you replaced the standard btusb. If you blacklist it, then nothing will load. On the other hand, rtk_btusb must not be loaded. Either blacklist it, or delete it from the /lib/modules/... tree. That is what is screwing up your BT.

@laptander
Copy link
Author

Still not working. I have blacklisted module rtk_btusb, then reboot and here what I get:

[root@yoga ~]# lsmod |grep bt
[root@yoga ~]# lsmod |grep btusb
[root@yoga ~]# lsmod |grep bluetooth
bluetooth             402850  8 bnep,rfcomm
rfkill                 18867  4 ideapad_laptop,bluetooth
crc16                  12343  2 ext4,bluetooth
[root@yoga ~]# 
[root@yoga ~]# rfkill list
0: ideapad_wlan: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: ideapad_bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: no
[root@yoga ~]# rfkill unblock all
[root@yoga ~]# 
[root@yoga ~]# bluetoothctl 
[bluetooth]# list
[bluetooth]# quit
[root@yoga ~]# 

@laptander
Copy link
Author

Strange, for now I have btusb loaded, but still there is no controller in bluetooth prompt (I have checked, that bluetooth is not rfkilled) :

[root@yoga ~]# lsmod | grep btusb
btusb                  29911  0 
bluetooth             402850  9 bnep,btusb,rfcomm
usbcore               199381  8 btusb,uvcvideo,rtsx_usb,ehci_hcd,ehci_pci,usbhid,8723au,xhci_hcd
[root@yoga ~]# 
[root@yoga ~]# bluetoothctl 
[bluetooth]# quit
[root@yoga ~]# 

Have you any suggestions?

@lwfinger
Copy link
Owner

No. I do not have any RTL8723AU devices, but it works fine with RTL8723AE and RTL8723BE.

What does 'hcitool dev' show?

@laptander
Copy link
Author

Nothing:

[root@yoga ~]# hcitool dev
Devices:
[root@yoga ~]# 

@lwfinger
Copy link
Owner

What does the command lsusb show?

@laptander
Copy link
Author

Here is my lsusb

[root@yoga ~]# lsusb
Bus 004 Device 004: ID 5986:029c Acer, Inc 
Bus 004 Device 003: ID 2047:0855 Texas Instruments Invensense Embedded MotionApp HID Sensor
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 006: ID 04f3:000a Elan Microelectronics Corp. Touchscreen
Bus 003 Device 005: ID 0bda:1724 Realtek Semiconductor Corp. RTL8723AU 802.11n WLAN Adapter
Bus 003 Device 004: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@yoga ~]# 

I see here Realtek Semiconductor Corp. RTL8723AU 802.11n WLAN Adapter. Is it for wifi and bluetooth at the same time or no? If no, does it means that my bluetooth usb device is missing?

Also, I have checked if some options in UEFI interface can cause problem. I have disabled DPTF (Dynamic Platform and Thermal Framework), disabled Intel Virtual Technology and disabled Secure boot.
Result is the same: all is the same as described above.

@lwfinger
Copy link
Owner

Apparently, Realtek only has created a single USB ID for the two devices. At the moment, I am not sure if there is any way to have both wifi and BT at the same time.

As a test, please try the following:

sudo modprobe -rv 8723au
sudo modprobe -rv btusb
sudo modprobe -v btusb

Does bluetoothctl or hcidev show a BT controller now?

@laptander
Copy link
Author

Negative

[root@yoga ~]# sudo modprobe -rv 8723au
rmmod 8723au
[root@yoga ~]# sudo modprobe -rv btusb
rmmod btusb
[root@yoga ~]# sudo modprobe -v btusb
insmod /lib/modules/3.17.6-1-ARCH/kernel/drivers/bluetooth/btusb.ko.gz reset=1 
[root@yoga ~]# 
[root@yoga ~]# hcidev
-bash: hcidev: command not found
[root@yoga ~]# 
[root@yoga ~]# hcitool dev
Devices:
[root@yoga ~]# bluetoothctl 
[bluetooth]# power on
No default controller available
[bluetooth]# quit
[root@yoga ~]# 

Rfkill is not causing, because I checked, that neither wifi nor bluetooth was soft or hard blocked.
After that, I again modprobed 8723au to be able to write this comment. Do I need to reboot for this test?

@lwfinger
Copy link
Owner

A reboot was not needed. Please post the output of

lsusb -v -d 0bda:1724

@laptander
Copy link
Author

Here you are

[root@yoga ~]# lsusb -v -d 0bda:1724

Bus 003 Device 005: ID 0bda:1724 Realtek Semiconductor Corp. RTL8723AU 802.11n WLAN Adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x1724 RTL8723AU 802.11n WLAN Adapter
  bcdDevice            2.00
  iManufacturer           1 Realtek
  iProduct                2 802.11n WLAN Adapter
  iSerial                 3 00e04c000001
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          222
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass        224 Wireless
      bFunctionSubClass       1 Radio Frequency
      bFunctionProtocol       1 Bluetooth
      iFunction               4 Bluetooth Radio
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              4 Bluetooth Radio
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
  bDescriptorType         4
  bInterfaceNumber        1
  bAlternateSetting       0
  bNumEndpoints           2
  bInterfaceClass       224 Wireless
  bInterfaceSubClass      1 Radio Frequency
  bInterfaceProtocol      1 Bluetooth
  iInterface              4 Bluetooth Radio
  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               4
  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               4
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        1
  bAlternateSetting       1
  bNumEndpoints           2
  bInterfaceClass       224 Wireless
  bInterfaceSubClass      1 Radio Frequency
  bInterfaceProtocol      1 Bluetooth
  iInterface              4 Bluetooth Radio
  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               4
  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               4
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        1
  bAlternateSetting       2
  bNumEndpoints           2
  bInterfaceClass       224 Wireless
  bInterfaceSubClass      1 Radio Frequency
  bInterfaceProtocol      1 Bluetooth
  iInterface              4 Bluetooth Radio
  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               4
  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               4
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        1
  bAlternateSetting       3
  bNumEndpoints           2
  bInterfaceClass       224 Wireless
  bInterfaceSubClass      1 Radio Frequency
  bInterfaceProtocol      1 Bluetooth
  iInterface              4 Bluetooth Radio
  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               4
  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               4
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        1
  bAlternateSetting       4
  bNumEndpoints           2
  bInterfaceClass       224 Wireless
  bInterfaceSubClass      1 Radio Frequency
  bInterfaceProtocol      1 Bluetooth
  iInterface              4 Bluetooth Radio
  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               4
  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               4
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        1
  bAlternateSetting       5
  bNumEndpoints           2
  bInterfaceClass       224 Wireless
  bInterfaceSubClass      1 Radio Frequency
  bInterfaceProtocol      1 Bluetooth
  iInterface              4 Bluetooth Radio
  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               4
  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               4
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        2
  bAlternateSetting       0
  bNumEndpoints           4
  bInterfaceClass       255 Vendor Specific Class
  bInterfaceSubClass    255 Vendor Specific Subclass
  bInterfaceProtocol    255 Vendor Specific Protocol
  iInterface              2 802.11n WLAN Adapter
  Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x84  EP 4 IN
    bmAttributes            2
      Transfer Type            Bulk
      Synch Type               None
      Usage Type               Data
    wMaxPacketSize     0x0200  1x 512 bytes
    bInterval               0
  Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x05  EP 5 OUT
    bmAttributes            2
      Transfer Type            Bulk
      Synch Type               None
      Usage Type               Data
    wMaxPacketSize     0x0200  1x 512 bytes
    bInterval               0
  Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x06  EP 6 OUT
    bmAttributes            2
      Transfer Type            Bulk
      Synch Type               None
      Usage Type               Data
    wMaxPacketSize     0x0200  1x 512 bytes
    bInterval               0
  Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x87  EP 7 IN
    bmAttributes            3
      Transfer Type            Interrupt
      Synch Type               None
      Usage Type               Data
    wMaxPacketSize     0x0040  1x 64 bytes
    bInterval               3
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered
[root@yoga ~]# 

@lwfinger
Copy link
Owner

OK, your device has more USB end points than does the BT part of my RTL8723BE. We need to see why it is being rejected in the probe step. Please pull from the repo, and rebuild with make and ;sudo make install'. After that, do the following:

sudo modprobe -rv btusb
sudo modprobe -v btusb

There should be some entries at the end of the dmesg output, starting with

btusb_probe intf ....

Post that line and those that follow.

@laptander
Copy link
Author

Did this several times. But I cannot see any string in dmesg output containing "btusb_probe"
The are only lines with information about probe or remove

[ndr@yoga rtl8723au_bt]$ sudo make install
[sudo] password for ndr: 
depmod -a /lib/modules/3.17.6-1-ARCH
installed revised btusb
[ndr@yoga rtl8723au_bt]$ 
[ndr@yoga rtl8723au_bt]$ sudo modprobe -rv btusb
rmmod btusb
[ndr@yoga rtl8723au_bt]$ sudo modprobe -r btusb
[ndr@yoga rtl8723au_bt]$ dmesg > ~/out.txt
[ndr@yoga rtl8723au_bt]$ 

There was such line[ 429.224967] usbcore: deregistering interface driver btusb
Oops, sorry... There are something there... Do not know it appears because of I rfkilled unblock all of because dmesg was written to file... (Wait a minute, I will provide needed lines. There was strings beginning with RTL8723AU: ERROR saying that I still have disconnections wifi, but they are quickly restores back. That is wifi driver problem, not relevant to this bluetooth issue).
EDIT: Please, sorry, I did modprobe -r instead of modprobe -v. In the comment below I did probe properly.
By the way, is there a way to always automatically rfkill unblock all after reboot?

@laptander
Copy link
Author

Now I again removed and probed btusb. I have

usbcore: registered new interface driver btusb

line in dmesg output. So, I think problem is not in probing.
By the way, if you are about why btusb is not probing automatically: as you can remember, I have blacklisted rtk_btusb. After that even btusb is not loaded automatically.

@lwfinger
Copy link
Owner

If it is not probing, then it will never work!

@laptander
Copy link
Author

I mean, when I blacklist rtk_btusb, then btusb is not AUTOMATICALLY loading. If I probe it manually it probes.
What do you mean If it is not probing, then it will never work? It should work after I modprobe btusb?
What I should do? I can delete rtk_btusb from the /lib/modules/... tree.

@lwfinger
Copy link
Owner

You can load it with modprobe, but the code will only start if the SB ID is recognized, and that is not happening. I do not know why. Module rtk_btusb has nothing to do with the problem.

I have written the maintainer of r8723au to see if he is using BT. Maybe he will have some info.

@laptander
Copy link
Author

Ok, thank you! I will wait for responding.

@lwfinger
Copy link
Owner

FYI, there is a new 'kernel' branch that has code that will be in kernel 3.21. It handles the Realtek devices just like any other kernel device. Thus far, no changes for older kernels have been included. As problems are reported, I will fix them.

@Erwyn
Copy link

Erwyn commented Apr 22, 2015

I have the same problem than @laptander . Wifi is working great but not bluetooth. I followed your sequence + sudo make install at the end. I've also tried the sudo modprobe btusb. The module is loaded without any error, I can see it in an lsmod | grep btusb but bluetoothctl does not seem to find any device.

Do you have any idea?

@laptander
Copy link
Author

@Erwyn, I did the following and it solved problem:

git clone https://github.com/lwfinger/rtl8723au_bt.git
git checkout kernel
make
sudo make install
sudo systemctl stop bluetooth
sudo modprobe -rv btusb
sudo modprobe -v btusb
sudo systemctl start bluetooth

After that bluetoothctl showed me my controller.
Make sure you removed and probed btusb again, because it did not worked without it for me.

@lwfinger
Copy link
Owner

Sometimes a cold reboot is necessary after the new driver and firmware are installed. These devices change the lmp_subver readout after firmware is loaded. Thus the device will not be recognized following a unload/reload of the driver or a warm reboot, and the firmware will not be reloaded.

@dkniffin
Copy link

dkniffin commented Jul 1, 2015

I'm having the same issue, and the commands @laptander posted don't work:

[repos]$ git clone https://github.com/lwfinger/rtl8723au_bt.git
Cloning into 'rtl8723au_bt'...
remote: Counting objects: 257, done.
remote: Total 257 (delta 0), reused 0 (delta 0), pack-reused 257
Receiving objects: 100% (257/257), 450.73 KiB | 225.00 KiB/s, done.
Resolving deltas: 100% (136/136), done.
Checking connectivity... done.
[repos]$ cd rtl8723au_bt/
[rtl8723au_bt]$ git checkout kernel
Branch kernel set up to track remote branch kernel from origin.
Switched to a new branch 'kernel'
[rtl8723au_bt]$ make
make -C /lib/modules/4.0.7-2-ARCH/build M=/home/dkniffin/repos/rtl8723au_bt modules
make[1]: Entering directory '/usr/lib/modules/4.0.7-2-ARCH/build'
make[1]: *** No rule to make target 'modules'.  Stop.
make[1]: Leaving directory '/usr/lib/modules/4.0.7-2-ARCH/build'
Makefile:24: recipe for target 'all' failed
make: *** [all] Error 2

@lwfinger
Copy link
Owner

lwfinger commented Jul 1, 2015

Your setup for building out-of-kernel drivers is wrong. As I do not use ARCH, I do not know the exact steps needed. Check on their forums for instructions.

@dkniffin
Copy link

dkniffin commented Jul 7, 2015

Woot! Got it working. I needed to install the linux-headers package.

@lwfinger
Copy link
Owner

lwfinger commented Jul 7, 2015

If /lib/modules/uname -r/build is not a link to the directory with your kernel headers, then the build will fail. That is true for all out-of-kernel drivers.

@raularmando
Copy link

Hi lwfinger,

I am trying to compile the branch Kernel. I am working in Ubuntu. Kernel : 3.13.0-76-generic
linux-headers are installed..... however i become the following error when i do make:

make -C /lib/modules/3.13.0-76-generic/build M=/home/raul/tmp/blueth/rtl8723au_bt modules
make[1]: Entering directory /usr/src/linux-headers-3.13.0-76-generic' CC [M] /home/raul/tmp/blueth/rtl8723au_bt/btusb.o /home/raul/tmp/blueth/rtl8723au_bt/btusb.c: In function ‘btusb_setup_csr’: /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:1364:11: error: ‘HCI_QUIRK_BROKEN_STORED_LINK_KEY’ undeclared (first use in this function) set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:1364:11: note: each undeclared identifier is reported only once for each function it appears in /home/raul/tmp/blueth/rtl8723au_bt/btusb.c: In function ‘btusb_intel_bootup’: /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:1769:3: error: implicit declaration of function ‘smp_mb__after_atomic’ [-Werror=implicit-function-declaration] smp_mb__after_atomic(); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c: In function ‘btusb_setup_intel_new’: /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2030:11: error: ‘HCI_QUIRK_INVALID_BDADDR’ undeclared (first use in this function) set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2143:2: error: implicit declaration of function ‘wait_on_bit_timeout’ [-Werror=implicit-function-declaration] err = wait_on_bit_timeout(&data->flags, BTUSB_DOWNLOADING, ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2224:2: error: implicit declaration of function ‘request_firmware_direct’ [-Werror=implicit-function-declaration] err = request_firmware_direct(&fw, fwname, &hdev->dev); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c: In function ‘btusb_probe’: /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2708:7: error: ‘struct hci_dev’ has no member named ‘shutdown’ hdev->shutdown = btusb_shutdown_intel; ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2709:7: error: ‘struct hci_dev’ has no member named ‘set_bdaddr’ hdev->set_bdaddr = btintel_set_bdaddr; ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2710:11: error: ‘HCI_QUIRK_STRICT_DUPLICATE_FILTER’ undeclared (first use in this function) set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2711:11: error: ‘HCI_QUIRK_SIMULTANEOUS_DISCOVERY’ undeclared (first use in this function) set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2717:7: error: ‘struct hci_dev’ has no member named ‘hw_error’ hdev->hw_error = btintel_hw_error; ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2718:7: error: ‘struct hci_dev’ has no member named ‘set_bdaddr’ hdev->set_bdaddr = btintel_set_bdaddr; ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2723:7: error: ‘struct hci_dev’ has no member named ‘set_bdaddr’ hdev->set_bdaddr = btusb_set_bdaddr_marvell; ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2726:11: error: ‘HCI_QUIRK_FIXUP_INQUIRY_MODE’ undeclared (first use in this function) set_bit(HCI_QUIRK_FIXUP_INQUIRY_MODE, &hdev->quirks); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2727:11: error: ‘HCI_QUIRK_BROKEN_LOCAL_COMMANDS’ undeclared (first use in this function) set_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks); ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2734:7: error: ‘struct hci_dev’ has no member named ‘set_bdaddr’ hdev->set_bdaddr = btusb_set_bdaddr_ath3012; ^ /home/raul/tmp/blueth/rtl8723au_bt/btusb.c:2741:7: error: ‘struct hci_dev’ has no member named ‘set_bdaddr’ hdev->set_bdaddr = btusb_set_bdaddr_ath3012; ^ cc1: some warnings being treated as errors make[2]: *** [/home/raul/tmp/blueth/rtl8723au_bt/btusb.o] Error 1 make[1]: *** [_module_/home/raul/tmp/blueth/rtl8723au_bt] Error 2 make[1]: Leaving directory/usr/src/linux-headers-3.13.0-76-generic'
make: *** [all] Error 2

do you have a tip for me?
I have a lenovo ideapad 11s .
Using the branch "new" i am able to use bluetooth...
however everytime i disconnect the bluetooth device ...
and try to reconnect it... i get some crash and i got to delete and
again setup the device.

@lwfinger
Copy link
Owner

lwfinger commented Feb 1, 2016

The "kernel" branch is only for kernels 4.1 or later. For 3.13, you probably need to switch to the "master" branch. If that does not work, then try the "troy" branch.

@ojdo
Copy link

ojdo commented Mar 11, 2016

Just to add a data point: the sequence above, posted by @laptander on 30 Jun 2015, worked for me on a Yoga 11s.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants