BPI-R2 with QCA9984 mPCIe WiFi card

Hello, I compiled a kernel for the BPI-R2 with atheros cards support, and the ath10k module (ath10k_core and ath10k_pci). The kernel compiled successfully, I updated the SD card for the BPI-R2 sucessfully, it boots just fine, but when I load the ath10k module, the kernel module is not loaded to the device. Any tips would be much appreciated. Thank You! dmesg spits out nothing about the atheros module, even when loaded.

I ran this command, and it did not load the kernel module for the device: sudo modprobe ath; sudo modprobe ath10k_core; sudo modprobe ath10k_pci

Here’s the relevant diagnostic info: sudo lsmod Module Size Used by hci_uart 20479 1 ath10k_pci 38471 0 ath10k_core 343752 1 ath10k_pci mac80211 552756 1 ath10k_core ath 21812 1 ath10k_core ipt_MASQUERADE 1363 1 nf_nat_masquerade_ipv4 2881 1 ipt_MASQUERADE nf_conntrack_netlink 26103 0 nfnetlink 7022 2 nf_conntrack_netlink iptable_nat 2144 1 nf_conntrack_ipv4 15603 2 nf_defrag_ipv4 1821 1 nf_conntrack_ipv4 nf_nat_ipv4 5877 1 iptable_nat xt_addrtype 3151 2 iptable_filter 1933 1 ip_tables 13040 2 iptable_filter,iptable_nat xt_conntrack 3467 1 x_tables 17730 5 ip_tables,ipt_MASQUERADE,xt_conntrack,iptable_filter,xt_addrtype nf_nat 15897 2 nf_nat_ipv4,nf_nat_masquerade_ipv4 nf_conntrack 99741 6 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4 br_netfilter 14448 0 bridge 117619 1 br_netfilter stp 2300 1 bridge llc 5349 2 stp,bridge mtk_thermal 5801 0 mtk_cir 3671 0

sudo lspci -vvvknn -s 01:00.0
01:00.0 Network controller [0280]: Qualcomm Atheros Device [168c:0046]
	Subsystem: Qualcomm Atheros Device [168c:cafe]
	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 67
	Region 0: Memory at 60000000 (64-bit, non-prefetchable) [disabled] [size=2M]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 5GT/s, Width x1, ASPM not supported, Exit Latency L0s <4us, L1 <64us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
		AERCap:	First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
	Capabilities: [148 v1] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [158 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [160 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- L1_PM_Substates-

Please format your commands/output as code with the <>-Button and show your syslog/messages.

Maybe you need Firmware for this device…in most linux distributions you can install this over a package.

Which kernel/image do you use?

sorry about that, i wasn’t sure how to format the output, I figured out it is not allocating the required PCI memory required for the device, is there a way to disable SATA?

if you use my kernel pcie should work…i have also a pcie-card working on the slot…

sata is not defined in dts and pcie#2 which should be the sata-controller is disabled in dts…but works :stuck_out_tongue:

if you use debian stretch you can try to install this firmware-package:


I am going to try using your Ubuntu distro, thanks!

you have to enable ath-driver (i have mt76 running on pcie)

and don’t forget firmware

Where do I get the kernel source for 4.14.80-bpi-r2-main from to build ath10k?

code is on github…4.14-main is your source (currently 4.14.101) simply

./build.sh importconfig
./build.sh config

You can also go back to 4.14.80 using git,but i recommend to update kernel…build.sh can install kernel if you put in sdcard after build…you have to use same filename or change uenv.txt

I wasn’t sure if i was supposed to use 4.14.80, the latest version will make it much easier.

I have included ath9k+10k in my automatic builds for 4.14+4.19…please test if i have added all needed options