Bug 1651779

Summary: Surface Go - QCA6174 wifi card not correctly recognized and therefore not working
Product: [Fedora] Fedora Reporter: fedora_45sg
Component: linux-firmwareAssignee: David Woodhouse <dwmw2>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 29CC: dwmw2, fedora_45sg, hdegoede, jforbes, jwboyer, kernel-maint, labbott, pbrobinson, pikachu.2014, qxscio, stefan.nigma
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: linux-firmware-20190213-93.git710963fe.fc29 linux-firmware-20190213-93.git710963fe.fc28 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-02-19 14:02:36 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description fedora_45sg 2018-11-20 19:42:11 UTC
Description of problem:

After booting, the wifi card is not properly recognized.

Version-Release number of selected component (if applicable):

firmware version can be seen in dmesg output.

"[ 4.242132] ath10k_pci 0000:01:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 168c:3370
[ 4.242138] ath10k_pci 0000:01:00.0: kconfig debug 0 debugfs 1 tracing 1 dfs 0 testmode 0
[ 4.243006] ath10k_pci 0000:01:00.0: firmware ver WLAN.RM.4.4.1-00079-QCARMSWPZ-1 api 6 features wowlan,ignore-otp crc32 fd869beb
[ 4.308059] ath10k_pci 0000:01:00.0: failed to fetch board data for bus=pci,vendor=168c,device=003e,subsystem-vendor=168c,subsystem-device=3370 from ath10k/QCA6174/hw3.0/board-2.bin
[ 4.309354] ath10k_pci 0000:01:00.0: board_file api 1 bmi_id N/A crc32 ed5f849a"

How reproducible:

Insert usb-pen, boot Fedora 29 Workstation, open terminal, get dmesg output


Steps to Reproduce:
1. Boot
2. get dmesg output

Actual results:

dmesg output:



Wifi/bluetooth card not properly recognized and therefore not working

Expected results:

Wifi/bluetooth working.


Additional info:

I added some more results here:

https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1804028

Comment 1 fedora_45sg 2018-11-20 22:18:44 UTC
In the .zip from https://www.killernetworking.com/killersupport/item/killer-drivers-inf in the file ./Killer-Ethernet-Wireless_INF/Production/Windows10-x64/11AC/netathr10x.inf I finally found one matching subsystem-device=3370 entry, which leads to:

"
%ATHR.DeviceDesc.6320_3%   = ATHR_DEV_OS63_988x_TX8.ndi,        PCI\VEN_168C&DEV_003E&SUBSYS_3370168C&REV_32; WiFi Only SKU
"

about this special .ndi there are some entrys later:

"
[ATHR_DEV_OS63_988x_TX8.ndi.NTamd64]
Characteristics = 0x84
BusType         = 5
AddReg          = atheros_os63.reg, atheros11n.reg, smpsDynamic.reg, qca_utf.reg, D0PC.reg, roam.reg, wmmac.reg, FW_3X.reg, BD_TX8.reg, enableTxbfee.reg, wowEnable.reg, ForceWowSleep.reg, fastDlBinary.reg, enableSmbios.reg, Ch1213_options_SingleSKU.reg   
CopyFiles       = atheros.CopyFiles, atheros_FW_3X.CopyFiles, atheros_BD_TX8.CopyFiles, service.CopyFiles
*IfType         = 71        ; IF_TYPE_IEEE80211
*MediaType      = 16        ; NdisMediumNative802_11
*PhysicalMediaType = 9      ; NdisPhysicalMediumNative802_11
Include         = machine.inf, netvwifibus.inf
Needs           = VWiFiBus.CopyFiles

[ATHR_DEV_OS63_988x_TX8.ndi.NTamd64.Services]
AddService = Qcamain10x64, 2, atheros.Service, atheros.EventLog
Include    = netvwifibus.inf
Needs      = VWiFiBus.Services
AddService = QcomWlanSrv, 0x00000800, wlanService

[ATHR_DEV_OS63_988x_TX8.ndi.NTamd64.HW]
AddReg  = MSI.reg
Include = netvwifibus.inf
Needs   = PciASPMOptIn.Hw, VWiFiBus.PnPFilterRegistration.Hw, PciD3ColdSupported.Hw
"

I am just a bit confused because it just says "Wifi Only SKU" and I know from the Windows Device Manager that also bluetooth is done with the same chip, see https://www.reddit.com/r/Surface/comments/9386l7/surface_go_wifi_qualcomm_qca61x4a/e3bbi1b/ but maybe there are two different build-in, one for wifi and one for bluetooth?

Anyway, from the quote there is one interesting line:

"
CopyFiles       = atheros.CopyFiles, atheros_FW_3X.CopyFiles, atheros_BD_TX8.CopyFiles, service.CopyFiles
"

It seems that there exist just one file with "TX8" in it: "eeprom_ar6320_3p0_TX8_clpc.bin"

I copied the .bin file as board.bin to /lib/firmware/ath10k/QCA6174/hw3.0/ and it finally works! Wifi is directly working and no error messages anymore in dmesg! :-)

So eeprom_ar6320_3p0_TX8_clpc.bin, or the informations of that .bin file have to be added to https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles and this should be a clean solution, because the subsystem-device=3370 ID is matching.

Can someone please double check if this is the correct solution which could go upstream?

Comment 2 fedora_45sg 2018-11-20 22:41:25 UTC
Did some additional tests with "eeprom_ar6320_3p0_TX8_clpc.bin":

The copied and renamed as board.bin file also works with the latest firmware-6.bin from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/ath10k/QCA6174/hw3.0/ and also with the one from https://github.com/kvalo/ath10k-firmware/tree/master/QCA6174/hw3.0 which was released one week ago. The reception with the seven day old one firmware is a bit weaker but it is also working fine with no erros in dmesg!

Comment 3 Peter Robinson 2019-02-14 12:18:35 UTC
The inux-firmware-20190213-93.git710963fe has a new firmware for QCA6174 so please test

Comment 4 Fedora Update System 2019-02-14 12:26:33 UTC
linux-firmware-20190213-93.git710963fe.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2019-42cbff0fd6

Comment 5 Fedora Update System 2019-02-14 12:26:45 UTC
linux-firmware-20190213-93.git710963fe.fc28 has been submitted as an update to Fedora 28. https://bodhi.fedoraproject.org/updates/FEDORA-2019-f27089e66c

Comment 6 Fedora Update System 2019-02-15 01:31:11 UTC
linux-firmware-20190213-93.git710963fe.fc28 has been pushed to the Fedora 28 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-f27089e66c

Comment 7 Fedora Update System 2019-02-15 02:57:11 UTC
linux-firmware-20190213-93.git710963fe.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-42cbff0fd6

Comment 8 Fedora Update System 2019-02-19 14:02:36 UTC
linux-firmware-20190213-93.git710963fe.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.

Comment 9 Fedora Update System 2019-02-24 04:08:28 UTC
linux-firmware-20190213-93.git710963fe.fc28 has been pushed to the Fedora 28 stable repository. If problems still persist, please make note of it in this bug report.

Comment 10 Ruggero Marchei 2019-03-07 12:20:33 UTC
I've installed latest linux-firmware (and all other possible updates) in Fedora 29 and wifi is still not working on a Surface Go

Comment 11 stefan.nigma 2019-04-06 15:53:26 UTC
I can confirm that a freshly installed Fedora 30 with linux-firmware-93.git710963fe.fc30 does not recognize the QCA6174 on Surface Go. I'm willing to help any way I can.

Comment 12 stefan.nigma 2019-07-23 20:32:13 UTC
Using the currently latest version (linux-firmware-20190717-99) on Fedora 30, the Wifi network adapter is still not recognized:


Jul 23 11:37:54 kernel: ath10k_pci 0000:01:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
Jul 23 11:37:54 kernel: ath10k_pci 0000:01:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 168c:3370
Jul 23 11:37:54 kernel: ath10k_pci 0000:01:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 0 testmode 0
Jul 23 11:37:54 kernel: ath10k_pci 0000:01:00.0: firmware ver RM.4.4.1.c2-00057-QCARMSWP-1 api 6 features wowlan,ignore-otp,no-4addr-pad,raw-mode crc32 e061250a
Jul 23 11:37:54 kernel: ath10k_pci 0000:01:00.0: failed to fetch board data for bus=pci,vendor=168c,device=003e,subsystem-vendor=168c,subsystem-device=3370 from ath10k/QCA6174/hw3.0/board-2.bin
Jul 23 11:37:54 kernel: ath10k_pci 0000:01:00.0: board_file api 1 bmi_id N/A crc32 ed5f849a

I'm more than happy to help if I can.

Comment 13 Hans de Goede 2021-08-24 17:40:07 UTC
fedora45_sg, thank you for your analysis of this. The issue indeed is that the QCA6174 card in the Surface Go does not work with the default/generic /lib/firmware/ath10k/QCA6174/hw3.0/board.bin file.

A solution for this is to add a board-specific "override" board.bin to the board-2.bin file which contains custom board.bin files matched on their PCI device subsystme vendor-id:product-id pair (168c:3370 in this case).

You are also right that the correct board.bin to use on the Surface Go is the eeprom_ar6320_3p0_TX8_clpc.bin file. I checked the .inf file from the driverstore directory from the original Windows install on the Surface Go and that indeed points to that file and the eeprom_ar6320_3p0_TX8_clpc.bin file is the only eeprom...bin file under Windows\System32\Drivers (where as the driverstore directory contains many eeprom...bin files) indicating that that is indeed the file being used by Windows.

I've submitted a request upstream to get this file added to boards-2.bin:
https://lore.kernel.org/ath10k/226790d7-75d8-bac3-9991-d73fa5b7df5b@hansg.org/T/#u