ath10k installation
Solution 1
Ubuntu 16.04 users with internet access (e.g. ethernet) should just have to install updates and reboot:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
For those without internet, download the firmware drivers from here. Choose the latest version for your architecture. For example, version 1.157.5 (newest as of 29/11/16) for amd64 is here.
Once you have the .deb
package, install as usual. For our example, it is:
sudo dpkg -i linux-firmware_1.157.5_all.deb
Reboot, and now it should be working.
It might be easier to install backports than trying to use github
sudo apt-get install build-essential linux-headers-generic
wget https://www.kernel.org/pub/linux/kernel/projects/backports/2015/03/13/backports-20150313.tar.xz
tar xvfJ backports-20150313.tar.xz
cd backports-20150313
make defconfig-ath10k
make
sudo make install
Then reboot when it is finished. Your wifi is fairly new to Linux so it might not be fully functional even with this
Solution 2
I've had a number of issues with my Acer Aspire V17 Nitro Black Edition and Ubuntu 15.10, but I managed to solve the Wi-Fi. I had to do a combination of things the answers from above, namely:
- Copy the QCA6174 directory from https://github.com/kvalo/ath10k-firmware into /lib/firmware/ath10k/. I already had an older version of QCA6174 in that directory, so I renamed the old folder to QCA6174.orig.
- Download the file from Comment 2 here: https://bugzilla.redhat.com/show_bug.cgi?id=1294263#c2 and save it as /lib/firmware/ath10k/QCA6174/hw3.0/board.bin (backing up the old board.bin as board.bin.orig)
- Reboot.
I'm posting this comment from my new internet connection over Wi-Fi. So far it seems to be working fine.
Solution 3
I had similar problem with my new laptop Asus Aspire V3-371-51 after installing the new Ubuntu (15.10) which has 4.2 kernel (so no backport is needed).
$ uname -r
4.2.0-16-generic
lspci showed the following data:
$ lspci
02:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 20)
$ lspci -n
02:00.0 0280: 168c:003e (rev 20)
Checking dmesg, I realized that in my case the firmware is missing.
[ 2.360584] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/cal-pci-0000:02:00.0.bin failed with error -2
[ 2.362523] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/QCA6174/hw2.1/board-pci-168c:003e:11ad:0804.bin failed with error -2
[ 2.362527] ath10k_pci 0000:02:00.0: failed to load spec board file, falling back to generic: -2
[ 2.362536] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/QCA6174/hw2.1/board.bin failed with error -2
[ 2.362538] ath10k_pci 0000:02:00.0: failed to fetch generic board data: -2
[ 2.362540] ath10k_pci 0000:02:00.0: failed to fetch board file: -2
[ 2.362541] ath10k_pci 0000:02:00.0: could not fetch firmware files (-2)
[ 2.362543] ath10k_pci 0000:02:00.0: could not probe fw (-2)
Copying an appropriate firmware from https://github.com/kvalo/ath10k-firmware/archive/master.zip to /lib/firmware/ath10k/QCA6174/hw2.1
did the trick - after reboot.
BTW I had to create the that path, because only QCA988X
subdirectory was in /lib/firmware/ath10k
before.
Solution 4
Not a complete answer (similar situation - ath10k/QCA6174 on a Fedora 22, 4.0 kernel), but more resources:
https://wireless.wiki.kernel.org/en/users/drivers/ath10k points to: https://github.com/kvalo/ath10k-firmware.
Looking at dmesg, I can get firmware-4.bin loaded (albeit untested), when place at:
/lib/firmware/ath10k/QCA6174/hw2.1
However, I also get:
Direct firmware load for ath10k/cal-pci-0000:03:00.0.bin failed with error -2
invalid firmware magic
Direct firmware load for ath10k/QCA6174/hw2.1/firmware-3.bin failed with error -2
could not fetch firmware file 'ath10k/QCA6174/hw2.1/firmware-3.bin': -2
So something still appears to be missing in this setup. Next step is to rename a long filename firmware-3.bin_xxxxxx to firmware-3.bin
PS (reload ath10k kernel module):
sudo rmmod ath10k_pci
sudo modprobe -v ath10k_pci
Then take your pick of iwconfig
or NetworkManager
.
So the steps to a complete installation are:
Download drivers in https://github.com/kvalo/ath10k-firmware.
sudo cp -r QCA6174 /lib/firmware/ath10k/
cd /lib/firmware/ath10k/QCA6174/hw2.1
-
sudo cp firmware-5.bin.SW_xxxxxx firmware-5.bin
This step may change as driver is developed.
xxxx
and-5
are evolving. sudo rmmod ath10k_pci
sudo modprobe -v ath10k_pci
After these steps I could connect to a WPA2 WiFi router and everything is working okay in an Acer v5 vn7-591g black nitro.
Solution 5
I was able to get my Qualcomm Atheros 61x4 running on a ubuntu 15.04 clean install. Actually not for the Lenovo model but for an Acer Aspire VN7 Nitro 791G These are the steps I accomplished:
- install kernel sources: apt-get install linux-headers-(uname -r)
-
downloaded the athk master sources from kvalo:
git clone https://github.com/kvalo/ath.git
-
downloaded the backports tree:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/backports/backports.git
- built the new backport tree according to the instructions found on linux-wireless: https://wireless.wiki.kernel.org/en/users/drivers/ath10k/backports
-
downloaded the firmware from sumdog and copied it to
/lib/firmware/ath10k/QCA6174/hw2.1/
:(Sorry I am not allowed to post more than two links)
-
wget github.com/sumdog/ath10k-firmware/raw/5faf5bb7c7413f9bbde54cca6fff58e/ath10k/QCA6174/hw2.1/board.bin
and
wget github.com/sumdog/ath10k-firmware/raw/5faf5bb7c7413f9bbde54cca6fff58e/ath10k/QCA6174/hw2.1/firmware-4.bin
-
created athk10 config file as described in this post before:
sudo echo "options ath10k_core skip_otp=y" > /etc/modprobe.d/ath10k.conf
- copied
firmware-4.bin
tofirmware-5.bin
as dmesg claimed about not findingfirmware-5.bin
Related videos on Youtube
Jagdish Raika
Updated on September 18, 2022Comments
-
Jagdish Raika over 1 year
I am working on a spring-boot multi-module application where we are creating a single custom fatty jar to bind all the third parties dependencies. The
Spring cloud stream
is also part of this fatty jar. Our application was running onspring-cloud-stream
version2.1.3.RELEASE
(spring-boot 2.1.6.RELEASE
) and we are upgrading it to3.0.2.RELEASE
(spring-boot 2.2.4.RELEASE
). We are experiencing here an issue. If a particular module where there is no use of thespring-cloud-stream
, but thespring-cloud-stream
is on classpath so the spring-bootauto-configuration
is looking for adefault binder
.{"mdc":{},"timestamp":"2020-03-20 12:53:04.150","level":"ERROR","logger":"org.springframework.boot.SpringApplication", "message":"Application run failed", "exception":"\r\norg.springframework.context.ApplicationContextException: Failed to start bean 'outputBindingLifecycle'; nested exception is java.lang.IllegalArgumentException: <b>A default binder has been requested, but there is no binder available</b>\r\n\ org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:185)\r\n\ org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53)\r\n\ org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360)\r\n\ org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158)\r\n\ org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122)\r\n\ org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:894)\r\n\ org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162)\r\n\ org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553)\r\n\ org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)\r\n\ org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)\r\n\ org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)\r\n\ org.springframework.boot.SpringApplication.run(SpringApplication.java:315)\r\n\ org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:126)\r\n\ org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal (DefaultCacheAwareContextLoaderDelegate.java:99)\r\n\ org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)\r\n\ org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123)\r\n\ org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.outputConditionEvaluationReport (SpringBootDependencyInjectionTestExecutionListener.java:53)\r\n\ org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance (SpringBootDependencyInjectionTestExecutionListener.java:46)\r\n\ org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244)\r\n\ org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\r\n\ org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\r\n\ org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\ org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\r\n\ org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\r\n\ org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\r\n\ org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\r\n\ org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\r\n\ org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\r\n\ org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\r\n\ org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\r\n\ org.springframework.test.context.junit4.s ements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\r\n\ org.springframework.test.context.junit4.s ements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\r\n\ org.junit.runners.ParentRunner.run(ParentRunner.java:363)\r\n\ org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\r\n\ org.junit.runner.JUnitCore.run(JUnitCore.java:137)\r\n\ org.junit.runner.JUnitCore.run(JUnitCore.java:115)\r\n\ org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:40)\r\n\ java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)\r\n\ java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\ java.util.Iterator.forEachRemaining(Unknown Source)\r\n\ java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)\r\n\ java.util.stream.AbstractPipeline.copyInto(Unknown Source)\r\n\ java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)\r\n\ java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)\r\n\ java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)\r\n\ java.util.stream.AbstractPipeline.evaluate(Unknown Source)\r\n\ java.util.stream.ReferencePipeline.forEach(Unknown Source)\r\n\ org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80)\r\n\ org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:71)\r\n\ org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229)\r\n\ org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197)\r\n\ org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211)\r\n\ org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191)\r\n\ org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:137)\r\n\ org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:89)\r\n\ org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)\r\n\ org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)\r\n\ org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)\r\n\ org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)\r\n\ org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)\r\nCaused by: java.lang.IllegalArgumentException: A default binder has been requested, but there is no binder available\r\n\ org.springframework.util.Assert.notEmpty(Assert.java:549)\r\n\ org.springframework.cloud.stream.binder.DefaultBinderFactory.doGetBinder(DefaultBinderFactory.java:144)\r\n\ org.springframework.cloud.stream.binder.DefaultBinderFactory.getBinder(DefaultBinderFactory.java:134)\r\n\ org.springframework.cloud.stream.binding.BindingService.getBinder(BindingService.java:362)\r\n\ org.springframework.cloud.stream.binding.BindingService.bindProducer(BindingService.java:257)\r\n\ org.springframework.cloud.stream.binding.AbstractBindableProxyFactory.createAndBindOutputs(AbstractBindableProxyFactory.java:136)\r\n\ org.springframework.cloud.stream.binding.OutputBindingLifecycle.doStartWithBindable(OutputBindingLifecycle.java:58)\r\n\ java.util.LinkedHashMap$LinkedValues.forEach(Unknown Source)\r\n\ org.springframework.cloud.stream.binding.AbstractBindingLifecycle.start(AbstractBindingLifecycle.java:57)\r\n\ org.springframework.cloud.stream.binding.OutputBindingLifecycle.start(OutputBindingLifecycle.java:34)\r\n\ org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182)\r\n\t... 59 common frames omitted\r\n\r\n"}
There are two approaches we can use:-
- There is no use of
spring-cloud-stream
so either I can excludespring-cloud-stream
from that fatty jar so it will not look for any binder. - Below dependency provides a test-binder so without having the implementation of real binder we can test our application by using it.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-test-support</artifactId> <version>3.0.2.RELEASE</version> <scope>test</scope> </dependency>
I would like to know if there is any other method or configurable property that I can use in the application so that I can stop looking for the default binder.
-
Admin almost 9 yearsI'm just preparing to install on a the same PC. Did you solve this eventually?
-
Admin almost 9 yearspossible duplicate of Ubuntu 14.04 Wireless not working: no network interface
- There is no use of
-
pybynumbers about 9 yearsThanks, though this doesn't seem to do the trick. Card still not doing anything. lspci | grep Network gives: "07:00.0 Network controller: Qualcomm Atheros Device 003e (rev 20)". modprobe ath10k gives: "modprobe: FATAL: Module ath10k not found".
-
Jeremy31 about 9 yearsI think the module name is ath10k_pci
-
Jacklynn almost 9 years@diablo666 If it doesn't work, please don't "accept" the answer.
-
s.froehlich over 8 yearsI can confirm this. My QCA6147 works after copying the windows firmware to /lib/firmware/ath10k/QCA6147/hw3.0/board-2.bin and copying the firmware from ath10k-firmware to /lib/firmware/ath10k/QCA6147/hw3.0/firmware-5.bin
-
NumesSanguis about 8 yearsStep 2 doesn't seem necessary anymore (tested on Ubuntu 16.04)
-
NumesSanguis about 8 yearsIf this doesn't work, rename QCA6174 (if previously existing) and copy the whole QCA6174 folder from the mentioned Github page (both hw2.1 and hw3.0). Then inside both folders rename firmware-x.bin_WLAN.etc to firmware-x.bin.
-
tgkprog almost 8 years2016 June update - the wget and intall worked for me on acer aspire e 15 (E5-573G-34QR). Thank you! Had to follow this and the UEFI boot steps at askubuntu.com/a/630662/165511
-
sasha_trn almost 8 yearsIt works for my Acer Aspire V 17 Nitro with Ubuntu 16.04 (kernel 4.4.0-28-generic). Thanks.
-
binaryanomaly almost 8 yearsAll I needed was a 'modprobe ath10k_pci' on 16.04 ...
-
Agustin Baez almost 7 yearsWow man, thanks! I can confirm that this is working on OpenSuse Leap 42.1 (kernel 4.4), in a Dell Latitude E5570 (same QCA6174 chip)