Ubuntu – RT3290 Bluetooth Not Working


I have an HP Envy H8-1437c system and my bluetooth is not working. I am running Ubuntu 13.04 with kubuntu-desktop installed. This is a UEFI system, but legacy boot is turned on.

I have a Ralink RT3290 wireless and bluetooth card, and the wireless works fine. When I go to the bluetooth settings in KDE, I am told that no bluetooth adapters were found.

Here is one part of the output of lspci -v:

03:00.1 Bluetooth: Ralink corp. RT3290 Bluetooth
Subsystem: Hewlett-Packard Company Device 18ec
Flags: fast devsel, IRQ 11
Memory at f7200000 (32-bit, non-prefetchable) [disabled] [size=64K]

And rfkill list:

0: phy0: Wireless LAN

  Soft blocked: no
  Hard blocked: no

As you can see, bluetooth simply does not show up. I know that my computer is capable of using bluetooth; it worked before I wiped Windows and it is clearly advertised on the box that the computer came in.

I tried downloading the driver for the bluetooth card from http://downloads.zotac.com/mediadrivers/mb/download/NB087_Ubuntu.zip. When I follow the instructions from here, I get stuck at the first step. Here is the output of the make command when I am in ~/Downloads/rtbth_v3.9.3/rtbth_v3.9.3:

make -C /lib/modules/3.8.0-19-generic/build M=/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3 modules
make(1): Entering directory /usr/src/linux-headers-3.8.0-19-generic'
CC [M] /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.o
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:38:44: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__devinitdata’
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘rtbt_pci_suspend’:
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:60:43: error: ‘struct hci_dev’ has no member named ‘driver_data’
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘rtbt_pci_resume’:
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:87:46: error: ‘struct hci_dev’ has no member named ‘driver_data’
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: At top level:
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:101:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtbt_pci_probe’
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:228:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtbt_pci_remove’
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:288:14: error: ‘rtbt_pci_ids’ undeclared here (not in a function)
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:290:11: error: ‘rtbt_pci_probe’ undeclared here (not in a function)
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:292:2: error: implicit declaration of function ‘__devexit_p’ [-Werror=implicit-function-declaration]
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:292:24: error: ‘rtbt_pci_remove’ undeclared here (not in a function)
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘BthIsr’:
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:346:40: error: ‘struct hci_dev’ has no member named ‘driver_data’
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: At top level:
/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:42:1: error: ‘__mod_pci_device_table’ aliased to undefined symbol ‘rtbt_pci_ids’
cc1: some warnings being treated as errors
make[2]: *** [/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.o] Error 1
make[1]: *** [_module_/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3] Error 2
make[1]: Leaving directory
make: *** [all] Error 2

I do not know why I cannot build the package. Based on other people's reports, the driver works once you build it. I need the rtbth.ko file to put into /etc/Wireless/RT3290. Please help me get my bluetooth working… Thanks!

Edit: I just read another AskUbuntu post about this, with the same problem as me. Please see here. I am wondering if I can somehow download the rtbth.ko file from somewhere, since that is really all I need to get bluetooth working… I appreciate any help on this topic. I know I could switch back to Ubuntu 12.04 LTS, but I really can't because there is software on Ubuntu 13.04 that I need for work… Thanks again!

Best Answer

  • There's a fix to this problem which I will explain here (source)

    modify rtbth_core_bluez.c line 406 and just comment out this line.

    //hdev->ioctl = rtbt_hci_dev_ioctl;

    then change rtbth_core_bluez.c line #216 and comment out the original line, replacing it with:

    //status = hci_recv_frame(skb);
    status = hci_recv_frame(hdev, skb);

    after that, you need to change rtbth_core_bluez.c in line 86 and make these changes (is it clear?)

    //int rtbt_hci_dev_send(struct sk_buff *skb)
    int rtbt_hci_dev_send(struct hci_dev *hdev, struct sk_buff *skb)
            //struct hci_dev *hdev = (struct hci_dev *)skb->dev;

    after making these changes you should be able to compile and add your BT devices, although I never managed to add a device myself.

    by the way, the patch provided inside the link does not work and you have to do this by yourself.

  • Related Question