I'm running a Debian 8 system with an Atheros ath10k chipset. My wireless drivers won't activate, forcing me to use a USB dongle.

It appears the drivers included with my kernel don't support my device ID: lspci -nn | grep -i net returns

02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 10)
03:00.0 Network controller [0280]: Qualcomm Atheros Device [168c:0041] (rev 20)

and modinfo ath10k_pci only lists 168c:003c and 168c:003e as device IDs, not the 168c:0041 listed next to my wireless card.

How do I get my card to work?

I'm using a Lenovo G50-80 laptop.

uname -a:

Linux hamming 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64 GNU/Linux

This should also work for 168c:0040 and 168c:0042.

You need to grab backported drivers and firmware for your card.

First, the drivers. Download the latest stable release of the backported wireless compatibility drivers; grab the .tar.xz version from the latest subfolder on the list (doesn't matter if it's more recent than your kernel). Put it in a directory of your choice, and then run

tar Jxvf backports-<whatever>.tar.xz

cd into the resulting directory and run

make defconfig-ath10k
sudo make install

and then

sudo reboot

to reboot.

On startup (when the screen is showing black and white monospace text; i.e. before the desktop environment shows up), you'll notice some error messages which contain paths. The paths will contain the letters QCA, a four-digit number, followed by /hw and a decimal. Write down those two numbers. (If you miss them, run dmesg | grep QCA to see them again.) We'll say the path contains QCA6174/hw2.1.

Next, the firmware. You'll need to clone the Github repository housing the updated firmware:

git clone https://github.com/kvalo/ath10k-firmware.git

cd into the resulting directory (ath10k-firmware). Then cd into the directories on that path you noted earlier (say QCA6174/hw2.1).

Now, this directory will contain a few files, one of which will start with firmware. (Let's say it's firmware-5.bin_<garbage>.) You'll copy that into /lib/firmware/QCA6174/hw2.1 (again, substitute the paths you noted), removing the garbage:

sudo cp firmware-5.bin_<garbage> /lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin

(You might need to sudo mkdir the directories along the destination path if they don't already exist. If /lib/firmware/ath10k/QCA6174 exists, you should probably rename it to QCA6174.old to preserve it.)

If there are any other files in the directory (other than notice.txt_<garbage>), copy them over as well. In my case, I had to copy two files, board.bin and board-2.bin:

sudo cp board* /lib/firmware/ath10k/QCA6174/hw2.1/

Then reboot. You should be done! (Your system might complain about missing some cal-pci file on startup, but that hasn't caused issues for me.)

  • It would be much easier to just download and install an updated linux-image and firmware-atheros package from debian testing or unstable. You can even add testing and/or unstable to your sources.list and (as long as you have APT::Default-Release "stable"; in /etc/apt/apt.confor file in /etc/apt/apt.conf.d) there is no risk of accidentally installing stuff from them - apt will only install from them when you explicitly tell it to, with -t testing or -t unstable. Also, there's always backports.debian.org – cas Mar 26 '16 at 1:55
  • It must be the board-2.bin with the newest stable backports that allows that firmware to work. Back when I got this card going we used backports-20151120 with firmware from github.com/atondwal/ath10k-firmware/tree/master/ath10k/QCA6164/… @cas I doubt debian has the board-2.bin as it has only been a month since Kalle put it on his github and the firmware-5 file is probably an older version – Jeremy31 Mar 26 '16 at 13:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.