# Bluetooth with Ralink RT3290 on HP ProBook 4740s

## Xificurk

Hello,

I've recently bought HP ProBook 4740s and I'm having trouble getting bluetooth working.

The piece of hardware in question is Ralink combo wifi+BT card:

```
04:00.0 Network controller [0280]: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe [1814:3290]

        Subsystem: Hewlett-Packard Company Device [103c:18ec]

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

        Memory at d0610000 (32-bit, non-prefetchable) [size=64K]

        Capabilities: [40] Power Management version 3

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

        Capabilities: [70] Express Endpoint, MSI 00

        Capabilities: [100] Advanced Error Reporting

        Capabilities: [140] Device Serial Number 00-00-6d-0e-2d-e2-b7-f4

        Kernel driver in use: rt2800pci

04:00.1 Bluetooth [0d11]: Ralink corp. RT3290 Bluetooth [1814:3298]

        Subsystem: Hewlett-Packard Company Device [103c:18ec]

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

        Memory at d0600000 (32-bit, non-prefetchable) [size=64K]

        Capabilities: [40] Power Management version 3

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

        Capabilities: [70] Express Endpoint, MSI 00

        Capabilities: [100] Advanced Error Reporting

        Capabilities: [140] Device Serial Number 00-00-6e-0e-2d-e2-b7-f4
```

I've successfully got the wifi part working with rt2800pc module and rt32900.bin firmware from linux-firmware package, but bluetooth is not working. I've tried enabling anything remotely related to BT with no luck... rfkill list shows only wifi card, so it's not a problem of BT being simply blocked.

I'm running latest stable amd64 with kernel 3.7.10.

Any suggestions how to get it working?

Google search revealed that users have similar problems on other distros as well, but I think there must be a solution to this, since HP sells laptops with this card with SLED (and HP support told me that presumably Arch Linux has it working as well).

----------

## aphirst

I'm an Arch user, but I thought I'd register here to share with you what I know.

I did some research on this last month when I got my new computer (an HP dm1-4341sa) with the same wireless/BT chip, and I could not get the Bluetooth working. My research at the time suggested that there was some patent-related reason that there is no supported linux driver.

In trying to find that page again I also found this page on the Ubuntu forums where someone claims to have found a Bluetooth driver which actually works for this chip.

What I myself did to 'solve' the problem was look up the service manual for my model on the HP website, locate the (small!) list of compatible (i.e. on their hardware whitelist) wifi chips, and swap out the Ralink for one of those with linux support.

Hopefully I've been able to give you something useful. Good luck.  :Smile: 

----------

## sjorna

I am interested to see if some resolution can come from this other than to replace the hardware, as I have a HP dm-1 with the rt3290 chipset.

The wireless device seems to work perfectly fine using the kernel-based rt2800pci driver, however bluetooth seems to be lacking.

In addition to the Ubuntu forum link above, I have also found this one which provides a link to some drivers to be compiled for both the wireless and bluetooth functionality of this chipset.

The problem, however, is that from what I've been able to garner from the limited sources of information on it, these drivers have a problem with newer versions of the kernel.  They won't compile.  And, unfortunately, this sort of programming is beyond me for now...

Anyone think they could have a look?

----------

## Havin_it

 *sjorna wrote:*   

> I am interested to see if some resolution can come from this other than to replace the hardware, as I have a HP dm-1 with the rt3290 chipset.
> 
> The wireless device seems to work perfectly fine using the kernel-based rt2800pci driver, however bluetooth seems to be lacking.
> 
> In addition to the Ubuntu forum link above, I have also found this one which provides a link to some drivers to be compiled for both the wireless and bluetooth functionality of this chipset.
> ...

 

Subscribin'...

I tried building the Zotac-originated source distro from the link above, but didn't get far:

```
robin@happy ~/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3 $ make -k

make -C /lib/modules/3.11.0-gentoo/build M=/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3 modules

make[1]: Entering directory `/usr/src/linux-3.11.0-gentoo'

  CC [M]  /home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_init.o

  CC [M]  /home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.o

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:38:44: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__devinitdata’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘rtbt_pci_suspend’:

/home/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘rtbt_pci_resume’:

/home/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: At top level:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:101:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtbt_pci_probe’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:228:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtbt_pci_remove’

/home/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘BthIsr’:

/home/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: At top level:

/home/robin/src/NB087_BT_ubuntu_release/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/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.o] Error 1

  CC [M]  /home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.o

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c: In function ‘rtbt_hci_dev_send’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:89:60: error: ‘struct hci_dev’ has no member named ‘driver_data’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:139:36: error: ‘struct bt_skb_cb’ has no member named ‘tx_seq’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c: In function ‘rtbt_hci_dev_open’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:226:60: error: ‘struct hci_dev’ has no member named ‘driver_data’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c: In function ‘rtbt_hci_dev_close’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:254:60: error: ‘struct hci_dev’ has no member named ‘driver_data’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c: In function ‘rtbt_hps_iface_detach’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:298:5: error: implicit declaration of function ‘__hci_dev_hold’ [-Werror=implicit-function-declaration]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:307:2: error: void value not ignored as it ought to be

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:310:5: error: implicit declaration of function ‘__hci_dev_put’ [-Werror=implicit-function-declaration]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c: In function ‘rtbt_hps_iface_init’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:399:6: error: ‘struct hci_dev’ has no member named ‘driver_data’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:404:6: error: ‘struct hci_dev’ has no member named ‘destruct’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:407:6: error: ‘struct hci_dev’ has no member named ‘owner’

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c: At top level:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.c:83:20: warning: ‘pkt_type_str’ defined but not used [-Wunused-variable]

cc1: some warnings being treated as errors

make[2]: *** [/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_bluez.o] Error 1

  CC [M]  /home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.o

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c: In function ‘rtbth_us_unlocked_ioctl’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:1568:21: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:1575:21: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:1582:21: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:1725:21: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:1732:21: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:1733:21: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:1741:21: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c: In function ‘rtbth_us_read’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_us.c:768:17: warning: ignoring return value of ‘__kfifo_uint_must_check_helper’, declared with attribute warn_unused_result [-Wunused-result]

  CC [M]  /home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_hlpr_dbg.o

  CC [M]  /home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_hlpr_linux.o

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_hlpr_linux.c: In function ‘RtlCopyMemory’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_hlpr_linux.c:95:9: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_hlpr_linux.c: In function ‘ral_task_customize’:

/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_hlpr_linux.c:575:2: error: implicit declaration of function ‘daemonize’ [-Werror=implicit-function-declaration]

cc1: some warnings being treated as errors

make[2]: *** [/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_hlpr_linux.o] Error 1

make[2]: Target `__build' not remade because of errors.

make[1]: *** [_module_/home/robin/src/NB087_BT_ubuntu_release/rtbth_v3.9.3/rtbth_v3.9.3] Error 2

make[1]: Target `modules' not remade because of errors.

make[1]: Leaving directory `/usr/src/linux-3.11.0-gentoo'

make: *** [all] Error 2
```

This was against gentoo-sources-3.11.0 so I'm not that surprised it doesn't build, but I'm afraid I lack the C knowledge to say what's wrong. Probably some of the system calls have changed, but it'll take a better kernel expert than I to address that possibility too.

The C files are GPL2 licensed (with Ralink copyright notices) so I think that means modified code could be redistributed, but don't take my word for that either -- if that's so, I can't see anyone doing so currently, which seems odd if not totally inconceivable. Maybe it's worth a new-ebuild request?

Sidenote: YMMV, but if you're using the in-kernel driver for this chip's wifi, be warned: my wifi reception nosedived when upgrading to kernel 3.11  :Sad: 

----------

