How I got QCA6164 Wireless card to work with linux

After months of bashing my head around , I finally found a way to make to make Qualcomm Atheros QCA61x4 or QCA6164 to work with linux (I Tested it on ubuntu 15.4 with 3.19.0-15 kernel )

What’s the problem ?

By default (at the time of writing this post) wifi on laptops with Atheros wifi 168c:0041(QCA6164) doesn’t works. Why? Because there is no firmware and driver for this particular chip by default.This affects several lenovo laptops.

What’s the solution ?

Solution is rather simple but for some reasons it took me a while to finally get my wifi working. I tried it initially on a different kernel and on a different different distro.

Get the latest backport

1
~$ wget https://www.kernel.org/pub/linux/kernel/projects/backports/2015/09/03/backports-20150903.tar.gz

Uncompress it

1
~$ tar -xf backports-20150903.tar.gz

then do

1
2
3
~$ cd backports-20150903
~$ make defconfig-ath10k
~$ make

and finally seal the deal

1
~$ sudo make install

if you get any errors then make you have kernel headers and build-essential package installed

1
~$ sudo apt-get install build-essential linux-headers-$(uname -r)

now that we have backports installed we just need firmware

1
2
3
4
~$ git clone https://github.com/atondwal/ath10k-firmware.git
~$ sudo cp -r ath10k-firmware/ath10k/ /lib/firmware/
~$ cd /lib/firmware/ath10k/QCA6164
~$ sudo cp -r hw2.1/ /lib/firmware/ath10k/QCA6174/

and finally

1
~$ sudo echo "options ath10k_core skip_otp=y" > /etc/modprobe.d/ath10k_core.conf

Reboot and see the magic ;)
if it still does’t works then try

1
~$ sudo modprobe ath10k_pci

Note that you’ll need to reinstall backports if you upgrade or change the kernel.
There’s also another method that is , install dkms from backports but it did not work for me. :/ , with DKMS you’ll no longer need to reinstall backports everytime you upgrade kernel.

What works?

As far as I know , everything works fine and also airodump also works pretty much :] . Altough , I did not test aircrack.