tisdag 4 februari 2014

WB335 bluetooth finally supported

Atheros QCWB335 is a so called combo card including both WLAN and Bluetooth function.

This combo-card has until recently only been partially supported by popular distro's.

Fedora 20 with a current kernel 3.12.9-something does not support this card's Bluetooth features.

The Bluetooth is somehow recognized as it is possible to launch the bluetooth device-discovery (Buetooth new device setup).
Although the search runs forever, no other devices are found, nor is it discovered by other bluetooth devices.

Good news is that recently kernel 3.13.1 was released and with that kernel installed, the bluetooth will now behave as expected.
Devices are found, and the QCWB335-equipped PC is being spotted by other Bluetooth devices. File-transfers works back and forth...

If your distro does not yet ship kernel 3.13.1 as an update (none I looked at does), maybe you're lucky, and the fix may be backported and delivered as a minor kernel update.

If not, and you wish to get the Bluetooth to work, you may wish to download, set up and compile kernel 3.13.1 yourself.

For Fedora users it's quite easy.

In short:

- Download and extract the kernel sources.

- Install necessary tools for compiling (done once only!)

- Copy your current kernel configuration-file - used as a base for your new kernel.

- Configure the kernel

- compile the kernel & modules

- install the kernel

First download the current kernel from kernel.org

Extract it to some folder of choice. There will be a lot of files!.

Example ~/Downloads/linux-3.13.1

Install the development group. It contains some necessary tools to configure and compile the kernel.

From a terminal, if you're not in SUDO'ers group type (note the ending '):

su -c 'yum groupinstall "Development tools"'

A long set of packages may be listed to be installed.


Copy the current kernel configuration-file to the downloaded directory.

First, we want to figure out which which kernel we're running so we can get the proper config-file. In the terminal, type

uname -r

You will be prompted with your current kernel version.

In my case it is


That's the actual kernel-version and will also be part of the name of the config-file we want to copy.

Open a filemanager and go to /boot

You should find a number of files, and one with the name (in my case)


As you may notice, the running kernel version we got previously is a part of the file-name above. That's how we can locate the proper file.

Copy that one to your folder where your downloaded kernel was extracted.



Move over to that folder and rename the file config-3.12.9-201.fc19.i686 to


Note that we're adding a . in front of the file and use no extension.

Don't be surprised if your filemanager don't display your .config file after the rename.

The leading . tells many filemanagers that the file should be hidden.

Configure the new kernel

Now, if you're lazy like me, you can configure only the NEW features of the kernel.
This method will look at your current kernels features, and stop only at the new features which have been added since.
This will save a lot of work but also take away some fun.


su -c 'make oldconfig'

As I am lazy (ok I mentioned that before), I "ENTER my way" through most questions.
This will use the recommended settings for the choices that come up.
That is what I would consider the safe way through most kernel-settings.

Depending on your current kernel-version, the number of questions will vary.
If there were many releases in between, there will be more questions...I got around 40-50 perhaps.

When done, most of the manual labour is over.

Compiling and installing the kernel

Now it's time for compilation and this goes on forever! (at least that's how it feels) Depending on CPU it will take a couple of hours to more than half a day.
Before starting, you may want to check how many cores your CPU has.
If you don't need to use your PC while compiling, you can speed it up a lot by using all cores for the job.

Starting "make" with a -j# (# = number of cores) will enable more jobs running simultaneously.
I know my brief description does not come near to explain, or utilize the -j option for make, but it's enough for me.

So when ready, in a terminal type (replace # with your number of cores, and if you don't want to use more than 1 core, leave out the -j# option)

su -c 'make -j#'

When this is done, continue with the faster job:

su -c 'make modules'

and when that's done
su -c 'make modules_install'


su -c 'make install'

Finallly do

su -c 'grub2-mkconfig -o /boot/grub2/grub.cfg'

And that should be it.

Your kernel should now be set up, compiled and installed.

Reboot your machine and look for available kernels when GRUB has loaded.
Normally the latest kernel is the topmost one and the default choice.

If everything runs well, your unit should boot and run kernel 3.13.1 (or whatever you downloaded and installed).

If the system does not boot properly with the new kernel, don't panic.
The previous, original kernels are still there.
If necessary, just force off the computer and start it again.
Choose your previous kernel.

Good luck & have fun

Inga kommentarer:

Skicka en kommentar