Getting WiFi to work on a Razer Blade 14 (2022)
I just spent way too much time trying to get Linux to work with the wireless card of the newest Razer Blade 14, so thought that I would briefly document the process.
The issue was that the card, a Qualcomm Qtheros QCNFA765, was found using lspci
but was clearly not detected by the kernel, i.e. not showing as a network interface in ip a
etc.
I did try a few kernel versions between 5.10 and 5.18 but none of them worked. I then went back to the 5.17 version of the kernel.
A look at journalctl
gave these suspicious few lines:
ath11k_pci 0000:02:00.0: failed to fetch board data for
bus=pci,vendor=17cb,device=1103,subsystem-vendor=11ad,subsystem-device=a82d,qmi-chip-id=18,qmi-board-id=255
from ath11k/WCN6855/hw2.1/board-2.bin
ath11k_pci 0000:02:00.0: failed to fetch board-2.bin or board.bin from WCN6855/hw2.1
This brought me to the following two bugs from Linux kernel’s Bugzilla:
- https://bugzilla.kernel.org/show_bug.cgi?id=215625
- https://bugzilla.kernel.org/show_bug.cgi?id=215946
which seemed to indicate that for some cases, simply adding the unsupported device to the relevant file, board-2.bin
, might be enough.
The firmware for Qualcomm Atheros card can be found on GitHub and there is also a repository with some tools to manipulate the binary files in this firmware.
Here were the steps to generate the new version of board-2.bin
:
git clone https://github.com/kvalo/ath11k-firmware.git
git clone https://github.com/qca/qca-swiss-army-knife.git
./qca-swiss-army-knife/tools/scripts/ath11k/ath11k-bdencoder -e ath11k-firmware/WCN6855/hw2.0/board-2.bin -o board.json
Then, I edited the JSON file to add the device a device for the given card, shown in the error above.
I added the following object to the board
array:
{
"names": [
"bus=pci,vendor=17cb,device=1103,subsystem-vendor=11ad,subsystem-device=a82d,qmi-chip-id=18,qmi-board-id=255"
],
"data": "bus=pci,vendor=17cb,device=1103,subsystem-vendor=11ad,subsystem-device=a82d,qmi-chip-id=18,qmi-board-id=255.bin"
}
and then copied one of the existing binary files to match the name under the data
key, in my case:
cp bus=pci,vendor=17cb,device=1103,subsystem-vendor=105b,subsystem-device=e0c4,qmi-chip-id=18,qmi-board-id=255.bin \
bus=pci,vendor=17cb,device=1103,subsystem-vendor=11ad,subsystem-device=a82d,qmi-chip-id=18,qmi-board-id=255.bin
I picked slightly randomly one of the existing binaries that had a similar qmi-chip-id and qmi-board-id, which is obviously not ideal but worked for this particular case.
Finally, using the ath11k-bdencoder
tool, I generated the new board-2.bin
file, copied it to the desired location, and reloaded the driver:
./qca-swiss-army-knife/tools/scripts/ath11k/ath11k-bdencoder -c board.json -o board-2.bin
sudo cp board-2.bin /lib/firmware/ath11k/WCN6855/hw2.0/board-2.bin
sudo modprobe -r ath11k_pci
sudo modprobe ath11k_pci
After this, ip a
would show the card as a network interface properly.
This is clearly all a bit flaky and hopefully, the support should out of the box come soon but at least for now, it is better than no wifi.
comments powered by Disqus