I just got a new Lenovo U31 laptop for work, and was surprised to see that WiFi was not working out of the box. The laptop has a 168c:0041 wlan card, which looks like a Qualcomm Atheros QCA6164 chipset. The posting https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1436940/comments/26 leads me to believe a driver exists in the 4.2-rc series, and would only need to be backported into the F22 kernel. As of now, dmesg does not containg any strings containing anything to do with ath(eros) or wlan.
*** Bug 1257499 has been marked as a duplicate of this bug. ***
The change in question is already in the 4.1.6 kernel, which is already available in Fedora 22. If you load the module with skip_otp=y set, does it work with 4.1.6?
Hm, that doesn't even seem to be the issue. Still nothing after adding $ cat /etc/modprobe.d/ath10k.conf options ath10k_core skip_otp=y and reboot. $ iwconfig enp2s0 no wireless extensions. virbr0-nic no wireless extensions. virbr0 no wireless extensions. lo no wireless extensions. $ rfkill list 0: ideapad_wlan: Wireless LAN Soft blocked: no Hard blocked: no 1: ideapad_bluetooth: Bluetooth Soft blocked: no Hard blocked: no 2: hci0: Bluetooth Soft blocked: no Hard blocked: no
Created attachment 1067886 [details] dmesg output
Created attachment 1067887 [details] lshw output
$ lspci -nn 00:00.0 Host bridge [0600]: Intel Corporation Broadwell-U Host Bridge -OPI [8086:1604] (rev 09) 00:02.0 VGA compatible controller [0300]: Intel Corporation Broadwell-U Integrated Graphics [8086:1616] (rev 09) 00:03.0 Audio device [0403]: Intel Corporation Broadwell-U Audio Controller [8086:160c] (rev 09) 00:14.0 USB controller [0c03]: Intel Corporation Wildcat Point-LP USB xHCI Controller [8086:9cb1] (rev 03) 00:16.0 Communication controller [0780]: Intel Corporation Wildcat Point-LP MEI Controller #1 [8086:9cba] (rev 03) 00:1b.0 Audio device [0403]: Intel Corporation Wildcat Point-LP High Definition Audio Controller [8086:9ca0] (rev 03) 00:1c.0 PCI bridge [0604]: Intel Corporation Wildcat Point-LP PCI Express Root Port #1 [8086:9c90] (rev e3) 00:1c.2 PCI bridge [0604]: Intel Corporation Wildcat Point-LP PCI Express Root Port #3 [8086:9c94] (rev e3) 00:1c.3 PCI bridge [0604]: Intel Corporation Wildcat Point-LP PCI Express Root Port #4 [8086:9c96] (rev e3) 00:1d.0 USB controller [0c03]: Intel Corporation Wildcat Point-LP USB EHCI Controller [8086:9ca6] (rev 03) 00:1f.0 ISA bridge [0601]: Intel Corporation Wildcat Point-LP LPC Controller [8086:9cc3] (rev 03) 00:1f.2 SATA controller [0106]: Intel Corporation Wildcat Point-LP SATA Controller [AHCI Mode] [8086:9c83] (rev 03) 00:1f.3 SMBus [0c05]: Intel Corporation Wildcat Point-LP SMBus Controller [8086:9ca2] (rev 03) 02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15) 03:00.0 Network controller [0280]: Qualcomm Atheros Device [168c:0041] (rev 20)
Also doesn't work with kernel-4.2.0-0.rc6.git0.2.fc23.x86_64.
So the problem is that the patch that introduces the support for this specific card https://github.com/kvalo/ath/commit/36582e5d4daeccf68a8a3cef9bc37b60fb7d45b9 is still not in the kernel, even in 4.2-rc8.
It is in the linux-next tree, though https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/drivers/net/wireless/ath/ath10k/pci.c?id=refs/tags/next-20150901
Thanks for doing the research. I'm guessing it was scheduled for 4.3 instead of 4.2 which is why it didn't get pulled. If you verify that the patch actually works we can make a decision about pulling this in.
I'm not sure how to do that since that patch would also need a more up-to-date ath10k tree.
I'm missing something: what does the ath10k tree need? Is there something else in the ath10k tree that isn't present in linux-next?
I mean the patch against the drivers/net/wireless/ath/ath10k/ directory is based on a more recent version of the kernel than the 4.1 series. I'll check if I can draft up a minimal patch along the lines of the ubuntu ticket.
Created attachment 1069561 [details] Quasiworking patch to kernel-4.1.6-200 With this patch the kernel sees the card, but I haven't been able to get it to work yet due to firmware trouble.
So, installing the firmware as guided in https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1436940/comments/39 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1436940/comments/40 didn't yet yield success. dmesg from the patched kernel gives [ 2520.459854] ath10k_pci 0000:03:00.0: Direct firmware load for ath10k/cal-pci-0000:03:00.0.bin failed with error -2 [ 2521.604247] ath10k_pci 0000:03:00.0: firmware crashed! (uuid 067189e6-3aa7-421e-a659-9e0b9246fa65) [ 2521.604257] ath10k_pci 0000:03:00.0: qca6174 hw2.1 (0x05010000, 0x003405ff) fw atheros-12.0.0.102-fw api 4 htt 0.0 wmi 4 cal otp max_sta 32 [ 2521.604260] ath10k_pci 0000:03:00.0: debug 0 debugfs 1 tracing 0 dfs 0 testmode 0 The ubuntu thread at https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1436940/comments/44 suggests that it works in kernel 4.1.0 but failed to work in 4.2... so maybe something in 4.1.6 is not compatible?
Well, I grabbed a snapshot of linux-next, compiled and installed it, and the card works perfectly. In case anyone else wants to replicate my success, here's what you need to do. 1. Get the kernel development tree, linux-next with $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 2. Grab the Fedora kernel config that matches your machine from http://pkgs.fedoraproject.org/cgit/kernel.git/tree/ which is 99% likely config-x86_64-generic. 3. Copy the config obtained in step 2 to linux-next/.config 4. Configure the development kernel with $ cd linux-next $ make oldconfig (I just pressed enter in all the queries to choose the default values) 5. Build the kernel $ make -j $(/usr/bin/getconf _NPROCESSORS_ONLN) 5. Continue from step 5 with the directions at http://radek.io/2012/02/12/custom-kernel-on-fedora/ but add a "sudo" to every command. ** In addition you need the firmware to get the card to work. Just grab the board.bin and firmware-5.bin files from https://github.com/atondwal/ath10k-firmware/commit/88fca85ef59d708b9874e5b7885416b58aef9ee7 and install them into /lib/firmware/ath10k/QCA6174/hw2.1/ Boot into the new kernel, and the card should work flawlessly.
I have no idea why the firmware doesn't load with the 4.1 series kernel, and don't have the time to dig out how the firmware insertion works. If someone here has time to look at it, I'll gladly test a patched kernel.
I'm only seeing a 1Mbps connection, though, even with the linux-next kernel.
Works with 4.3.0-0.rc1.git0.1.fc22.x86_64 kernel. The connection speed is actually not a problem, it is just reported incorrectly by NetworkManager.
*********** MASS BUG UPDATE ************** We apologize for the inconvenience. There is a large number of bugs to go through and several of them have gone stale. Due to this, we are doing a mass bug update across all of the Fedora 22 kernel bugs. Fedora 22 has now been rebased to 4.2.3-200.fc22. Please test this kernel update (or newer) and let us know if you issue has been resolved or if it is still present with the newer kernel. If you have moved on to Fedora 23, and are still experiencing this issue, please change the version to Fedora 23. If you experience different issues, please open a new bug report for those.
Bug persists on Fedora 23 as well, just need the update to kernel 4.3 (and the firmware).
fc23 4.2.6-300.fc23.x86_64, destop edition, firmware crash after coming out of suspend on cafe network: [root@enzlaptop gartim]# cat wifi_crash.txt Nov 20 06:47:32 enzlaptop kernel: wlp1s0: RX AssocResp from 8a:15:14:b1:bf:e0 (capab=0x1101 status=0 aid=1) Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: firmware crashed! (uuid 71c60df3-8ded-415c-9b79-76a3374a54f0) Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: qca6174 hw2.1 (0x05010000, 0x003405ff, 168c:003e:144d:4125 fallback) fw WLAN.RM.1.1-00141 api 5 htt 3.1 wmi 4 cal otp max_sta 32 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: debug 0 debugfs 1 tracing 0 dfs 0 testmode 0 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: firmware register dump: Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [00]: 0x05010000 0x000015B3 0x00939797 0x00955B31 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [04]: 0x00939797 0x00060330 0x00000000 0x00000000 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [08]: 0x00413980 0x0000FFFF 0x00000000 0x00000000 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [12]: 0x00000009 0xFFFFFFFF 0x0096C09C 0x0096C0A7 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [16]: 0x0096BDBC 0x009287BD 0x00000000 0x009287BD Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [20]: 0x40939797 0x0041A700 0x00407124 0x00000000 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [24]: 0x8093D6C4 0x0041A760 0x004059D0 0xC0939797 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [28]: 0x8094777F 0x0041A780 0x0046D5D8 0x00000001 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [32]: 0x800AA427 0x0041A7B0 0x0046D5D8 0x00000001 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [36]: 0x800AA58E 0x0041A7D0 0x00424824 0x00000001 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [40]: 0x80994D90 0x0041A7F0 0x00424824 0x0041A838 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [44]: 0x80996DC6 0x0041A820 0x0046F888 0x00412984 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [48]: 0x800B43F5 0x0041A860 0x004222F8 0x00005008 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [52]: 0x809A6ACC 0x0041A8F0 0x0042930C 0x0042CA00 Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: [56]: 0x809A6120 0x0041A930 0x0041A958 0x00427110 Nov 20 06:47:32 enzlaptop NetworkManager[702]: <info> (wlp1s0): supplicant interface state: authenticating -> associating Nov 20 06:47:32 enzlaptop kernel: ath10k_pci 0000:01:00.0: failed to poke peer 8a:15:14:b1:bf:e0 param for ps workaround on vdev 0: -108 Nov 20 06:47:32 enzlaptop kernel: wlp1s0: associated 01:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 20) Subsystem: Samsung Electronics Co Ltd Device 4125 Flags: bus master, fast devsel, latency 0, IRQ 48 Memory at f7000000 (64-bit, non-prefetchable) [size=2M] Capabilities: <access denied> Kernel driver in use: ath10k_pci Kernel modules: ath10k_pci want me to provide more...working clean at home, but dont see the N sid, just the G sid.
(In reply to g. artim from comment #22) > fc23 4.2.6-300.fc23.x86_64, destop edition, firmware crash after coming out > of suspend on cafe network: Please don't hijack this bug. This is QC6164, not QCA6174.
sorry about that!
OK, works with kernel-4.3.3-200.fc23 which is currently in updates-testing. Still need to manually replace the firware as in comment #16, though...
Even with the latest kernel and manually replacing the firmware, it's still not working for me (Lenovo U31-70).
One Failed Case after following procedure updated on Jan 10, 2016 ; http://paste.fedoraproject.org/310947/14528024 [root@mypc ~]# modprobe ath10k_pci [root@mypc ~]# dmesg [ 578.424257] ath10k_pci 0000:03:00.0: pci irq msi-x interrupts 8 irq_mode 0 reset_mode 0 [ 578.625658] ath10k_pci 0000:03:00.0: Direct firmware load for ath10k/cal-pci-0000:03:00.0.bin failed with error -2 [ 578.625673] ath10k_pci 0000:03:00.0: Direct firmware load for ath10k/QCA6174/hw2.1/board-pci-168c:0041:17aa:3545.bin failed with error -2 [ 578.625675] ath10k_pci 0000:03:00.0: failed to load spec board file, falling back to generic: -2 [ 578.704754] ath10k_pci 0000:03:00.0: otp calibration failed: 3 [ 578.704758] ath10k_pci 0000:03:00.0: failed to run otp: -22 [ 578.704759] ath10k_pci 0000:03:00.0: could not init core (-22) [ 578.704786] ath10k_pci 0000:03:00.0: could not probe fw (-22) [root@mypc ~]# cd /lib/firmware/ath10k/QCA6174/hw2.1/ [root@mypc hw2.1]# md5sum *.bin e6adc90ecaf55edc656990c6c50193ac board.bin efdc519119f49892e16053bc5db47436 firmware-5.bin [root@mypc hw2.1]#
I am pleased to report the QCA6164 device in my Lenovo Yoga 3 11-inch laptop works well with the current 4.3.3-300.fc23.x86_64 kernel, after the firmware.bin and board.bin files referenced in Comment #16 are installed and /etc/modprobe.d/ath10k_core.conf is created with: options ath10k_core skip_otp=y More work may be needed to package the necessary parts so that different hardware configurations work "out of the box" but it is good to have an easy formula to get the native wifi hardware in this platform to operate.
(In reply to Richard Ryniker from comment #28) > I am pleased to report the QCA6164 device in my Lenovo Yoga 3 11-inch > laptop works well with the current 4.3.3-300.fc23.x86_64 kernel, after > the firmware.bin and board.bin files referenced in Comment #16 are > installed and /etc/modprobe.d/ath10k_core.conf is created with: > > options ath10k_core skip_otp=y > > More work may be needed to package the necessary parts so that > different hardware configurations work "out of the box" but it is > good to have an easy formula to get the native wifi hardware in > this platform to operate. Thank you very much! It works for me as well on my Lenovo U31-70. Creating ath10k_core.conf did the trick for me.
The wifi card stopped working for me since the update to kernel-4.3.5-300.fc23. The recent version kernel-4.4.2-301.fc23 has the same problem.
4.3.5-300 worked for me as of UTC 0100 hrs, 2nd March 2016 - Fedora23 x64 - This firmware failed at first ; [root@mypc hw2.1]# md5sum *.bin e6adc90ecaf55edc656990c6c50193ac board.bin efdc519119f49892e16053bc5db47436 firmware-5.bin [root@mypc hw2.1]# Can you please post ; - md5sum /lib/firmware/ath10/QCA6174/hw2.1/*.bin - cat /etc/selinux/config - ls -Z /etc/modprobe.d/ath10k_core.conf - ls -Z /lib/firmware/ath10/QCA6174/hw2.1/*.bin This means I have to avoid updates at all costs now.
I don't have a folder /lib/firmware/ath10/ but I have the folder /lib/firmware/ath10k/ md5sum /lib/firmware/ath10k/QCA6174/hw2.1/*.bin: 461e7f4b2f32f1c4ef50d26f76b715eb /lib/firmware/ath10k/QCA6174/hw2.1/board.bin 8f5303e4b1afc818798425a700139133 /lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin cat /etc/selinux/config: SELINUX=enforcing SELINUXTYPE=targeted ls -Z /etc/modprobe.d/ath10k_core.conf: unconfined_u:object_r:modules_conf_t:s0 /etc/modprobe.d/ath10k_core.conf ls -Z /lib/firmware/ath10k/QCA6174/hw2.1/*.bin: system_u:object_r:lib_t:s0 /lib/firmware/ath10k/QCA6174/hw2.1/board.bin system_u:object_r:lib_t:s0 /lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin
I am not an expert. Will wait to learn. But ; (1) My md5sums are different board.bin = e6adc90ecaf55edc656990c6c50193ac firmware-5.bin = efdc519119f49892e16053bc5db4743 (2) My ath10k_core.conf also has systerm_u
and I can confirm that i have default/old firmware files matching your md5sum ; $ md5 board.bin MD5 (board.bin) = 461e7f4b2f32f1c4ef50d26f76b715eb $ md5 firmware-5.bin MD5 (firmware-5.bin) = 8f5303e4b1afc818798425a700139133
@Yuan Thank you for your help! I have now downloaded board.bin and firmware-5.bin from here: https://github.com/atondwal/ath10k-firmware/tree/master/ath10k/QCA6164/hw2.1 And they seem to be the same as you have. After replacing them with the ones in /lib/firmware/ath10k/QCA6174/hw2.1/ and a restart, the wifi card is now working again.
Not me. Problem solved by Comment #16. Cheers.
I've pinged the upstream firmware maintainer to see if there are plans to update the ath10k firmware in the linux-firmware repository soon.
Can i get it to work with CentOS 7? sorry newbie to linux..
Works out of the box in Fedora 24.