You are not logged in.
I cannot use wifi on lenovo flex 3 laptop. There is only lo and ethernet in ip link output.
Here is related sudo lspci -v
02:00.0 Network controller: Qualcomm Atheros Device 0041 (rev 20)
Subsystem: Lenovo Device 3545
Flags: bus master, fast devsel, latency 0, IRQ 255
Memory at e4200000 (64-bit, non-prefetchable) [size=2M]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/8 Maskable+ 64bit-
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [148] Virtual Channel
Capabilities: [168] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [178] Latency Tolerance Reporting
Capabilities: [180] L1 PM Substates
and here is related lsusb
Bus 002 Device 004: ID 0cf3:e300 Atheros Communications, Inc.
Under windows it is working normally and is displayed as QCA61x4 network adapter.
For now my uname -r is 4.2.5-1-ARCH
I have found very similar topic here, but solution was waiting new linux kernel, which I already use.
According to this article, I need ath10k firmware.
As I understand, linux-firmware should already contain firmware for my wireless card, but it doesn't for some reason.
I also tryed to manually modprobe ath10k_pci and ath10k_core and reboot, but with no success.
Also, I tried to download https://github.com/kvalo/ath10k-firmwar … CARMSWPZ-1
Note, that there is also https://github.com/kvalo/ath10k-firmwar … 0k/QCA6174 catalog, containing hw2.1 and hw3, but I did not use files from them. It by the way has strange numeration: hw3.0 contains older firmware than hw2.1.
So I renamed that firmware-5.bin_SW_RM.1.1.1-00157-QCARMSWPZ-1 to firmware-5.bin and tryed the following:
creating /lib/firmware/ath10k/QCA6174 and placed it there
placing it in /lib/firmware/ath10k/QCA988X/hw2.0
and in /lib/firmware/ath10k/QCA988X/hw2.1
After all tryes I rebooted, but nothing helped.
Can you please help me? What should I do to make wifi working?
Last edited by agent0 (2015-12-23 22:40:33)
Offline
Hi,
I was about to post the same but for the QCA9377 when I stumbled upon this thread:
http://askubuntu.com/questions/663745/n … 150#695150
with a solution by rinfinity. (Kudos chain must be maintained; I may even register in AskUbuntu just to thank him...)
Because your PCI relies as well on ath10k module, it should work the same just change the name wherever it is needed.
Mind that the second last line:
cp firmware-5.bin_WLAN.TF.1.0-00267-1 firmware-5.bin
should actually be a rename of the file so that .bin is the last part and it is properly recognized.
Good luck. (I am posting this using WiFi with the QCA9377. Yay!)
Offline
Hi, tharj!
Thanks for your advice.
I have never dealt with backports before, and as I understand, linux 4.3 release candidate should contain my firmware, so I decided to just install https://aur.archlinux.org/packages/linux-mainline/
But I still do not have wireless interface in ip link.
Is my suggestion about linux 4.3 correct? If yes, then are you sure, that it contains firmware for my wifi card?
Offline
You need firmware from another source
https://github.com/atondwal/ath10k-firmware.git
Then copy it as follows
sudo cp -r ath10k-firmware/ath10k/ /lib/firmware/
cd /lib/firmware/ath10k/QCA6164
sudo cp -r hw2.1/ /lib/firmware/ath10k/QCA6174/
I don't know why 6164 firmware needs to be in the 6174 folder though
Offline
jeremy31, thanks for your suggestion.
I followed your instructions, but it did not help. I have copied QCA6164 and QCA6174 from that repo to my /lib/firmware and also copied hw2.1 from QCA6164 to QCA6174. Then rebooted.
Also I have tried to manually load modules ath10k_core and ath10k_pci by placing them to /etc/modules-load.d/ath10k.conf but it did not helped also.
Maybe I should make any additional config? Where did you got these instructions (about copying hw2.1 to another folder)?
And I should say, that I even do not know what exactly model of wifi card I have. I have identified my card as QCA61x4 under windows. But I do not know what kind of it, I mean 6164 or 6174. Is there a way how I can determine it and maybe from Linux?
Thanks in advance for your help.
Offline
Your current kernel may not support the wireless card. I am a regular on ubuntuforums and found this thread. You can check to see if it is supported in the kernel with
modinfo ath10k_pci | grep 0041
If it is supported terminal should provide output of alias: pci with a bunch of characters but since you have to add the modules to modules-load.d I would say the kernel doesn't support it. I know the 4.2 kernel was problematic in Ubuntu with this chipset. The chipset is the QCA6164 and most of the info I have is from the ath10k kernel developers. I only have a USB with the arch linux ISO on it so I have limited experience. Can you update to a 4.3 kernel? You also need to load ath10k_core with option skip_otp=y, in Ubuntu it is done with
echo "options ath10k_core skip_otp=y" | sudo tee /etc/modprobe.d/ath10k_core.conf
If the 4.3 kernel isn't an option, kernel backports should work if you have the dependencies satisfied which I am not sure if Arch has them installed by default or what the package name is.
This download should have support for the QCA6164 wireless if you can install the backports https://www.kernel.org/pub/linux/kernel … 013.tar.gz
Offline
jeremy31, Thank you so much, it worked!
My modinfo ath10k_pci | grep 0041 output is
alias: pci:v0000168Cd00000041sv*sd*bc*sc*i*
so, it seems that it is supported, however I am corrently using 4.3.0-rc7-mainline kernel.
I think the real problem resolving was that I loaded ath10k_core with skip_otp=y option as you advised above.
I do not know what that option means and why wifi was not working without it, but it helped!
Once again, thank you!
EDIT: Interesting, but there is still no bluetooth controller in bluetoothctl and rfkill list says that it is not blocked. Oh, sorry, it is working, I have just modprobed btusb and started bluetooth.service.
Last edited by agent0 (2015-11-15 07:55:20)
Offline
Now it is not working again.
I have installed linux version 4.3.3-1, linux-firmware version 20151207.bbe4917-1 from [testing] repository.
I have noticed, that that version of linux-firmware already includes QCA6174 directory with following content:
...
usr/lib/firmware/ath10k/QCA6174/hw2.1/
usr/lib/firmware/ath10k/QCA6174/hw2.1/board.bin
usr/lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin
usr/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt
usr/lib/firmware/ath10k/QCA6174/hw3.0/
usr/lib/firmware/ath10k/QCA6174/hw3.0/board.bin
usr/lib/firmware/ath10k/QCA6174/hw3.0/firmware-4.bin
usr/lib/firmware/ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt
...
which was missing before. But my wifi was still not working. I got the following in my dmesg:
[ 4.486125] ath10k_pci 0000:02:00.0: pci irq msi-x interrupts 8 irq_mode 0 reset_mode 0
[ 4.740200] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/cal-pci-0000:02:00.0.bin failed with error -2
[ 4.756230] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/QCA6174/hw2.1/board-pci-168c:0041:17aa:3545.bin failed with error -2
[ 4.756233] ath10k_pci 0000:02:00.0: failed to load spec board file, falling back to generic: -2
[ 5.968577] ath10k_pci 0000:02:00.0: firmware crashed! (uuid 113961b2-5d4e-47b1-8aa5-3b9e17f6b528)
[ 5.968584] ath10k_pci 0000:02:00.0: qca6174 hw2.1 (0x05010000, 0x003405ff, 168c:0041:17aa:3545 fallback) fw WLAN.RM.1.1-00141 api 5 htt-ver 0.0 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1 features ignore-otp,no-4addr-pad
[ 5.968586] ath10k_pci 0000:02:00.0: debug 0 debugfs 1 tracing 0 dfs 0 testmode 0
[ 5.970927] ath10k_pci 0000:02:00.0: firmware register dump:
[ 5.970929] ath10k_pci 0000:02:00.0: [00]: 0x05010000 0x000015B3 0x000A012D 0x00955B31
[ 5.970930] ath10k_pci 0000:02:00.0: [04]: 0x000A012D 0x00060330 0x00000016 0x87705006
[ 5.970931] ath10k_pci 0000:02:00.0: [08]: 0x00000000 0x00400000 0x00400600 0x00000001
[ 5.970932] ath10k_pci 0000:02:00.0: [12]: 0x00000009 0x00000000 0x00931C61 0x00931C7D
[ 5.970932] ath10k_pci 0000:02:00.0: [16]: 0x0096BDBC 0x009286B6 0x00000000 0x00000000
[ 5.970933] ath10k_pci 0000:02:00.0: [20]: 0x400A012D 0x0040E2B0 0x00955A00 0x00404590
[ 5.970934] ath10k_pci 0000:02:00.0: [24]: 0x809287D9 0x0040E310 0x7A5089F8 0xC00A012D
[ 5.970935] ath10k_pci 0000:02:00.0: [28]: 0x809288D7 0x0040E340 0x00000000 0xFFF08040
[ 5.970936] ath10k_pci 0000:02:00.0: [32]: 0x809290FE 0x0040E360 0x00400000 0x00400600
[ 5.970936] ath10k_pci 0000:02:00.0: [36]: 0x80929205 0x0040E380 0x00000000 0x00400600
[ 5.970937] ath10k_pci 0000:02:00.0: [40]: 0x40928024 0x0040E3B0 0x0040D3D0 0x0040D3D0
[ 5.970938] ath10k_pci 0000:02:00.0: [44]: 0x00000000 0x0040E3D0 0x009BB001 0x00040020
[ 5.970939] ath10k_pci 0000:02:00.0: [48]: 0x00401BF0 0x00000001 0x00404B9C 0x00400000
[ 5.970939] ath10k_pci 0000:02:00.0: [52]: 0x40928024 0x0040E3B0 0x0040D3D0 0x0040D3D0
[ 5.970940] ath10k_pci 0000:02:00.0: [56]: 0x2B98FC00 0x9DF3B6A2 0x9B5F813A 0x25EE5A4D
[ 6.965343] ath10k_pci 0000:02:00.0: failed to receive control response completion, polling..
[ 7.966179] ath10k_pci 0000:02:00.0: ctl_resp never came in (-110)
[ 7.966728] ath10k_pci 0000:02:00.0: failed to connect to HTC: -110
[ 8.037276] ath10k_pci 0000:02:00.0: could not init core (-110)
[ 8.037780] ath10k_pci 0000:02:00.0: could not probe fw (-110)
[ 8.049620] ath10k_pci 0000:02:00.0: cannot restart a device that hasn't been started
I decided to make procedure which jeremy31 advised above. So I deleted all content from /usr/lib/firmware/ath10k/, then made a package with the following PKGBUILD and installed it:
# Maintainer: Human <some@site.com>
# https://github.com/atondwal/ath10k-firmware
_gituser=atondwal
_gitname=ath10k-firmware
_gitver=88fca85ef59d708b9874e5b7885416b58aef9ee7
pkgname=firmware_ath10k-qca61x4_0041
pkgbase=${pkgname}
pkgver=0.1
pkgrel=1
pkgdesc='firmware for Qualcomm Atheros Device 0041 (rev 20) QCA61?4 Wireless-AC [168c:0041]'
arch=('any')
url="https://github.com/$_gituser/$_gitname"
license=('GPL')
source=("https://github.com/$_gituser/$_gitname/archive/$_gitver.tar.gz"
"ath10k_core.conf" # this file simply contains "options ath10k_core skip_otp=y" inside.
#"https://github.com/atondwal/ath10k-firmware/blob/master/ath10k/QCA6164/hw2.1/board.bin?raw=true"
#"https://github.com/atondwal/ath10k-firmware/blob/master/ath10k/QCA6164/hw2.1/firmware-5.bin?raw=true"
)
md5sums=('SKIP'
'fce5dbe873ca616de7d519cb55af8e68'
#'SKIP'
#'SKIP'
)
package() {
cd "$srcdir/"
mkdir -p $pkgdir/etc/modprobe.d
cp ath10k_core.conf $pkgdir/etc/modprobe.d/ath10k_core.conf
cd "$_gitname-$_gitver/ath10k"
DESTDIR="$pkgdir/usr/lib/firmware/ath10k"
mkdir -p $DESTDIR
cp -r "." "$DESTDIR"
# And also hw2.1 from 6164 to 6174
DESTDIR="$pkgdir/usr/lib/firmware/ath10k/QCA6174"
mkdir -p $DESTDIR
cp -r "QCA6164/hw2.1" "$DESTDIR"
}
Then I removed and probed modules again:
$ sudo rmmod ath10k_pci
$ sudo modprobe -v ath10k_pci
After that, I had my wireless interface appeared in "ip link" output, but it could not work still.
Offline
I have also found this topic, where Atondwal (author of patched firmware) solved issue on the same hardware as mine 168c:0041
http://lists.infradead.org/pipermail/at … 04842.html I really shouldn't have wiped windows so quickly... Apparently this is just the 1x1 version of 168c:003e, so if we had the firmware it would be a trivial change. But there's no mention of this since on the mailing list.
Can anybody explain what does "1x1" and "2x2" version means?
How can I determine which version I have?
I have still Windows installed on my PC. Does it mean, that I can extract the blob and also build a patched kernel? Can anybody please instruct me what should I do?
Atondwal,
Which Lenovo laptop do you have? Are you still able to use your firmware version with 4.3.3 kernel?
If so, could you please correct PKGBUILD, that I provided above and push it to AUR?
Thanks in advance.
Offline
What does
ls /lib/firmware/QCA6174/hw2.1/
result in
Offline
Maybe you mean ls /lib/firmware/ath10k/QCA6174/hw2.1/ ?
There are two files there: board.bin and firmware-5.bin
I believe, that my laptop needs some correct firmware files in this directory, because of message "ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/QCA6174/hw2.1/board-pci-168c:0041:17aa:3545.bin failed with error -2" and also because in lspci it is displayed as "(rev 20)", so I think it belongs to hw2.1.
As I said above, I removed files from here which were installed with linux-firmware package. Then I put here files from atondwal's repository but from QCA6164/hw2.1
Offline
By the way, in Arch Linux "/lib" is symlink to "/usr/lib".
I do not know if firmware files need to have executable rights, so I gave that rights to check:
$ sudo chmod +x /usr/lib/firmware/ath10k/QCA6174/hw2.1/*
$ ls -l /usr/lib/firmware/ath10k/QCA6174/hw2.1/
total 496
-rwxr-xr-x 1 root root 8124 Dec 20 20:57 board.bin
-rwxr-xr-x 1 root root 496432 Dec 20 20:57 firmware-5.bin
$ sudo rmmod ath10k_pci
$ sudo modprobe -v ath10k_pci
insmod /lib/modules/4.3.3-1-ARCH/kernel/drivers/net/wireless/ath/ath10k/ath10k_pci.ko.gz
But still not working.
Offline
Is the firmware dump still happening in the dmesg results?
Do a md5sum and the board.bin and firmware-5.bin and compare it to a fresh download from Atondwals github
Offline
With atondwal's firmware it does not crashes immediately. My wireless interface wlp2s0 is shown in ip link, but it could not be up. It does not support scanning neither via NetworkManager nor via wifi-menu.
$ sudo wifi-menu
[sudo] password for user:
Scanning for networks... Could not read interface p2p-dev-wlp2s0 flags: No such device
nl80211: Could not set interface 'p2p-dev-wlp2s0' UP
p2p-dev-wlp2s0: Failed to initialize driver interface
failed
No networks found
But I was surprised that it reported that it has connected to previously configured (when I was on other kernel) wireless network.
If I understand that dump is what is going after "firmware register dump" then yes, it is appeared in dmesg. My full dmesg output I put here.
In lsmod I noticed that ath10k_pci have value 0 in Used by field. Is it normal?
$ lsmod | grep ath
Module Size Used by
ath10k_pci 40960 0
ath10k_core 245760 1 ath10k_pci
ath 28672 1 ath10k_core
mac80211 647168 1 ath10k_core
cfg80211 466944 3 ath,mac80211,ath10k_core
And about md5sums of my files:
Here is md5sums of atondwal's repository files:
$ md5sum ~/build/ath10_atondwal/ath10k-firmware-master/ath10k/QCA6164/hw2.1/*
e6adc90ecaf55edc656990c6c50193ac /home/user/build/ath10_atondwal/ath10k-firmware-master/ath10k/QCA6164/hw2.1/board.bin
efdc519119f49892e16053bc5db47436 /home/user/build/ath10_atondwal/ath10k-firmware-master/ath10k/QCA6164/hw2.1/firmware-5.bin
Here is md5sums of files which are currently installed in my system:
$ md5sum /usr/lib/firmware/ath10k/QCA6174/hw2.1/*
e6adc90ecaf55edc656990c6c50193ac /usr/lib/firmware/ath10k/QCA6174/hw2.1/board.bin
efdc519119f49892e16053bc5db47436 /usr/lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin
Last edited by agent0 (2015-12-22 03:24:20)
Offline
I have just checked if it would work with files from kvalo's repo (because it was updated since I wrote the first post: ath10k catalog was moved). And I also compared them with files included in linux-firmware.
Md5sums of kvalo's repository files (commit ea0c8f9bce87e8a143dd66dd27dc959769c5748f):
$ md5sum QCA6174/hw2.1/*
461e7f4b2f32f1c4ef50d26f76b715eb /usr/lib/firmware/ath10k/QCA6174/hw2.1/board.bin
944ef57488e09e708222d4fb49c3ab73 /usr/lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin (renamed)
bf9ec5483ed37fb00e52e04831084061 /usr/lib/firmware/ath10k/QCA6174/hw2.1/notice.txt_SW_RM.1.1.1-00157-QCARMSWPZ-1
md5sums of files in linux-firmware (version 20151207.bbe4917-1):
$ md5sum /usr/lib/firmware/ath10k/QCA6174/hw2.1/*
461e7f4b2f32f1c4ef50d26f76b715eb /usr/lib/firmware/ath10k/QCA6174/hw2.1/board.bin
8f5303e4b1afc818798425a700139133 /usr/lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin
520e814a78b09b4e29c65ba3ddac5631 /usr/lib/firmware/ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt
Neither of this variants work.
Offline
i am beginning to wonder if the ath10k drivers are in some unstable state in the latest kernels. The latest backports don't have an option for ath10k like it has in the past
Offline
My wifi is working for now with atondwals files. Do not know if it is due to the fact that I have installed crda package and uncommented WIRELESS_REGDOM="RU" in /etc/conf.d/wireless-regdom.
But in dmesg there are still error messages about direct firmware loading failed.
$ dmesg --color=always | grep ath
[ 6.446783] ath10k_pci 0000:02:00.0: pci irq msi-x interrupts 8 irq_mode 0 reset_mode 0
[ 6.772610] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/cal-pci-0000:02:00.0.bin failed with error -2
[ 6.835339] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/QCA6174/hw2.1/board-pci-168c:0041:17aa:3545.bin failed with error -2
[ 6.835342] ath10k_pci 0000:02:00.0: failed to load spec board file, falling back to generic: -2
[ 8.158533] ath10k_pci 0000:02:00.0: qca6174 hw2.1 (0x05010000, 0x003405ff, 168c:0041:17aa:3545 fallback) fw atheros-12.0.0.102-fw api 5 htt-ver 3.25 wmi-op 4 htt-o raw 0 hwcrypto 1 features
[ 8.158537] ath10k_pci 0000:02:00.0: debug 0 debugfs 1 tracing 0 dfs 0 testmode 0
[ 8.228064] ath: EEPROM regdomain: 0x6c
[ 8.228067] ath: EEPROM indicates we should expect a direct regpair map
[ 8.228068] ath: Country alpha2 being used: 00
[ 8.228069] ath: Regpair used: 0x6c
[ 8.285586] ath10k_pci 0000:02:00.0 wlp2s0: renamed from wlan0
[ 34.018202] ath10k_pci 0000:02:00.0: no channel configured; ignoring frame(s)!
[ 34.070183] ath10k_pci 0000:02:00.0: no channel configured; ignoring frame(s)!
[ 85.999585] ath: EEPROM regdomain: 0x8283
[ 85.999587] ath: EEPROM indicates we should expect a country code
[ 85.999589] ath: doing EEPROM country->regdmn map search
[ 85.999590] ath: country maps to regdmn code: 0x3
[ 85.999590] ath: Country alpha2 being used: RU
[ 85.999591] ath: Regpair used: 0x3
[ 85.999592] ath: regdomain 0x8283 dynamically updated by country IE
Offline
Those firmware errors are normal as those firmware files don't exist yet but could in future kernels depending on new Atheros wifi cards.
Offline
Thank you for information and big thanks for your help.
I will mark topic as solved.
Offline