You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Properly fixing the Surface Go wifi board.bin issue #542
This is not so much a bug report as a place intended to track the progress of getting a proper fix for the Surface Go wifi board.bin issue upstreamed.
I've spend a chunk of time on analysing this issue today. The issue is that like some other wifi cards the QCA6174 card seems to save money by not including an (external) eeprom to store various board settings (like GPIO pin usage, etc.). Instead there is only a tiny bit of internal flash which stores a PCI-subsystem vendor-id:product-id pair (168c:3370 in this case) and that is then used to lookup an eeprom-.bin file by the Windows drivers.
The Linux driver tries to make things work with a single default/generic /lib/firmware/ath10k/QCA6174/hw3.0/board.bin file. But that does not work on all systems, so there is a board-2.bin file which contains custom board.bin files matched on their PCI device subsystem vendor-id:product-id pair (168c:3370).
ATM this board-2.bin file does not contain a board.bin override for the 168c:3370 subsys-ids, so the ath10k driver falls back to the generic board.bin which does not work for the Surface Go. Adding new boards to boards-2.bin is documented here: https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles
This is for the killer networking 1535 card which has pci-subsys-ids of 1a56:1535 . I've dug up the right board.bin file (and tested it) from the Windows partition and submitted it upstream for inclusion into board-2.bin: https://lore.kernel.org/ath10k/[email protected]/T/#u
Note that while waiting for the proper fix to get accepted upstream and then find its way to various downstreams, the wiki page instructions should probably be updated.
The ath10k driver will automatically fall back to board.bin for pci-subsys-ids not listed in boards-2.bin, so removing boards-2.bin is not necessary. Also the wifi on the Surface Go is a hw3.2 version, so only the board.bin in the hw3.0 directory needs to be replaced.
And we should probably also replace the K1535_Debian/board.bin file with the eeprom_ar6320_3p0_TX8_clpc.bin file from the Windows driver for the 168c:3370 subsys-id.
Thanks! I've updated the wiki (for the Surface Laptop 3 as well which seems to use the same chip? At leas the same Killer Networking board worked...). There's also our (somewhat crude) hack for packaging this which will also need an update. I'll replace the board file there next and update that as well.
Chances are that the Surface Laptop 3 is supposed to use a different board.bin. Since the killer one has been working without issues so far I would wait a bit with updating the packages until we have a better idea of which models needs which board.bin. If different models are supposed to use different boards.bin then the current packaging won't work. Instead we may need to do our own board-2.bin with all the necessary boards.bin-s included.
So I found a hwprobe of the Surface Laptop 3: https://linux-hardware.org/?probe=7910582d7c And it has subsys ids of: 045e:0001 which is not listed in the netath10k.inf on the Surface Go Windows partition...
If different models are supposed to use different boards.bin then the current packaging won't work.
Right, fair point. I've added the board file you've posted to the workaround repo and updated the links in the wiki, but kept the Killer Networking one as well for now (for the workaround package and SL3).
I have the feeling that the upstream ath10k maintainer does not really has the time to actually deal with board2.bin updates, so once I've also confirmed that I have the right eeprom.bin file for the Surface Laptop 3, see #41, then I will prepare an updated board2.bin myself and after I get positive test feedback on that, submit that upstream to linux-firmware myself.
Activity
jwrdegoede commentedon Aug 24, 2021
Note that while waiting for the proper fix to get accepted upstream and then find its way to various downstreams, the wiki page instructions should probably be updated.
The ath10k driver will automatically fall back to board.bin for pci-subsys-ids not listed in boards-2.bin, so removing boards-2.bin is not necessary. Also the wifi on the Surface Go is a hw3.2 version, so only the board.bin in the hw3.0 directory needs to be replaced.
And we should probably also replace the K1535_Debian/board.bin file with the eeprom_ar6320_3p0_TX8_clpc.bin file from the Windows driver for the 168c:3370 subsys-id.
qzed commentedon Aug 24, 2021
Thanks! I've updated the wiki (for the Surface Laptop 3 as well which seems to use the same chip? At leas the same Killer Networking board worked...). There's also our (somewhat crude) hack for packaging this which will also need an update. I'll replace the board file there next and update that as well.
jwrdegoede commentedon Aug 24, 2021
Chances are that the Surface Laptop 3 is supposed to use a different board.bin. Since the killer one has been working without issues so far I would wait a bit with updating the packages until we have a better idea of which models needs which board.bin. If different models are supposed to use different boards.bin then the current packaging won't work. Instead we may need to do our own board-2.bin with all the necessary boards.bin-s included.
jwrdegoede commentedon Aug 24, 2021
So I found a hwprobe of the Surface Laptop 3: https://linux-hardware.org/?probe=7910582d7c And it has subsys ids of: 045e:0001 which is not listed in the netath10k.inf on the Surface Go Windows partition...
qzed commentedon Aug 24, 2021
Right, fair point. I've added the board file you've posted to the workaround repo and updated the links in the wiki, but kept the Killer Networking one as well for now (for the workaround package and SL3).
jwrdegoede commentedon Sep 6, 2021
I have the feeling that the upstream ath10k maintainer does not really has the time to actually deal with board2.bin updates, so once I've also confirmed that I have the right eeprom.bin file for the Surface Laptop 3, see #41, then I will prepare an updated board2.bin myself and after I get positive test feedback on that, submit that upstream to linux-firmware myself.
Use board-2.bin file containing firmware data from Windows
jwrdegoede commentedon Nov 23, 2021
Good news, the updated board-2.bin file has landed in the official linux-firmware repo:
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=4d74f4dec175363fa24c95702dd86f477cef232c
So this issue can be closed now.
Update ath10k/QCA6174/hw3.0/board-2.bin