Repository navigation
Properly fixing the Surface Go wifi board.bin issue #542
Description
Activity
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.
- added a commit that references this issue
on Oct 20, 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=4d74f4dec175363fa24c95702dd86f477cef232cSo this issue can be closed now.
Reacted by Blaž Hrastnik- added a commit that references this issue
on Nov 24, 2021
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
Note that the board.bin linked from the Surface Go wiki page is actually not the right one for the Surface Go:
https://web.archive.org/web/20201111213909/http://www.killernetworking.com/support/K1535_Debian/board.bin
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