Ubuntu on 2022 Razer Blade 14'' with 3070 Ti | Razer Insider

Ubuntu on 2022 Razer Blade 14'' with 3070 Ti


Userlevel 1
I've recently bought the new [2022 Razer Blade 14'' with 3070 Ti](https://mysupport.razer.com/app/answers/detail/a_id/5924/~/at-a-glance:-razer-blade-14-(2022)-|-rz09-0427x).

Unfortunately after installing Ubuntu 22.04 Desktop I've quickly come to realize that neither WiFi nor BT are working.

Information below:

```
uname -a
Linux surveily-wt-04 5.18.0-051800-generic #202205222030 SMP PREEMPT_DYNAMIC Sun May 22 20:33:46 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

```

```
sudo lspci -vqk -s 02:00
02:00.0 Network controller: Qualcomm Atheros QCNFA765 (rev 01)
Subsystem: Lite-On Communications Inc Device a82d
Flags: bus master, fast devsel, latency 0, IRQ 106, IOMMU group 13
Memory at fc200000 (64-bit, non-prefetchable) [SIZE=2M]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=32/32 Maskable+ 64bit-
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [148] Secondary PCI Express
Capabilities: [158] Transaction Processing Hints
Capabilities: [1e4] Latency Tolerance Reporting
Capabilities: [1ec] L1 PM Substates
Kernel driver in use: ath11k_pci
Kernel modules: ath11k_pci

```
```
sudo dmesg | grep ath
[ 0.000000] Linux version 5.18.0-051800-generic (kernel@kathleen) (gcc (Ubuntu 11.3.0-3ubuntu1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #202205222030 SMP PREEMPT_DYNAMIC Sun May 22 20:33:46 UTC 2022
[ 2.287214] ath11k_pci 0000:02:00.0: BAR 0: assigned [mem 0xfc200000-0xfc3fffff 64bit]
[ 2.287231] ath11k_pci 0000:02:00.0: enabling device (0000 -> 0002)
[ 2.287642] ath11k_pci 0000:02:00.0: MSI vectors: 32
[ 2.287658] ath11k_pci 0000:02:00.0: wcn6855 hw2.1
[ 3.459225] ath11k_pci 0000:02:00.0: chip_id 0x12 chip_family 0xb board_id 0xff soc_id 0x400c1211
[ 3.459229] ath11k_pci 0000:02:00.0: fw_version 0x110d8c35 fw_build_timestamp 2022-01-27 04:01 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
[ 3.466553] 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
[ 3.466588] ath11k_pci 0000:02:00.0: failed to fetch board-2.bin or board.bin from WCN6855/hw2.1
[ 3.466599] ath11k_pci 0000:02:00.0: qmi failed to fetch board file: -2
[ 3.466599] ath11k_pci 0000:02:00.0: failed to load board data file: -2

```

Can anyone help me with resolving this issue?

Edit: I tried Ubuntu 18.x, 20.x, 21.x, 22.x and fedora 36 with all various kernels and it all shows the same errors. Looks like only Windows has the drivers for the recent hardware.

Edit: I tried copying the drivers from https://github.com/kvalo/ath11k-firmware but its for WCN6855 and not the WCN6856 in my Blade 14''.

35 Replies

surveily
Any chance of you letting me know how to apply this?

i'll see if i can provide a dkms script and instructions this week. depending on your distro, manual patching of modules and swapping them in can be a burden.
Userlevel 1
I just need a general idea of what needs to be done. The exact steps I can probably Google. Unless you want to make me a gift for Christmas 😉
surveily
I just need a general idea of what needs to be done. The exact steps I can probably Google. Unless you want to make me a gift for Christmas ;)

in general you want to download your kernel sources, and rebuild module snd_soc_acp6x_mach with the above patch. i assume you do not compile your own kernel, but use the one shipped with your distro. you should be on a fairly recent kernel, and the above module should already be loaded (verify by running command 'lsmod | grep acp6x'), so the only thing we need to do is replace it :)

depending on your distribution this might be tricky. if you build a module from vanilla source code, even if the version matches your kernel, it will fail loading as the signing will be slightly different from the kernel shipped with your OS.

on fedora, the easiest way to build out of tree modules, or patch and replace in tree ones, i find is using dkms.
code:
sudo dnf install dkms

you also need your kernel-devel or whatever equivalent development package your distro provides as prereqs.

i put the above patch in a source folder, create some dkms scrips to pull the kernel sources from vanilla, patch the sources, but build against the OS installed kernel headers. below scripts might need to be adjusted for your kernel version. (make sure to make patch.sh executable)

code:
[wim@fedora snd_soc_acp6x_mach-0.1]$ pwd
/usr/src/snd_soc_acp6x_mach-0.1
[wim@fedora snd_soc_acp6x_mach-0.1]$ ls
acp6x-mach.patch dkms.conf patch.sh
[wim@fedora snd_soc_acp6x_mach-0.1]$ cat acp6x-mach.patch
--- acp6x-mach.c.ori 2022-12-12 09:45:40.076477587 +0100
+++ acp6x-mach.c 2022-12-12 09:47:30.727483991 +0100
@@ -213,6 +213,13 @@
DMI_MATCH(DMI_PRODUCT_NAME, "Alienware m17 R5 AMD"),
}
},
+ {
+ .driver_data = &acp6x_card,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Razer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Blade 14 (2022) - RZ09-0427"),
+ }
+ },
{}
};
[wim@fedora snd_soc_acp6x_mach-0.1]$ cat patch.sh
#!/bin/bash
vers=(${kernelver//./ }) # split kernel version into individual elements
major="${vers[0]}"
minor="${vers[1]}"
version="$major.$minor" # recombine as needed
subver=$(grep "SUBLEVEL =" /usr/src/kernels/${kernelver}/Makefile | tr -d " " | cut -d "=" -f 2)

echo "Downloading kernel source $version.$subver for $kernelver"
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.1.tar.xz


echo "Extracting original source"
tar -xf linux-6.1.tar.* linux-6.1/$1 --xform=s,linux-6.1/$1,.,

for i in `ls *.patch`
do
echo "Applying $i"
patch < $i
done
[wim@fedora snd_soc_acp6x_mach-0.1]$ cat
acp6x-mach.patch dkms.conf patch.sh
[wim@fedora snd_soc_acp6x_mach-0.1]$ cat dkms.conf
PACKAGE_NAME="snd_soc_acp6x_mach"
PACKAGE_VERSION="0.1"
BUILT_MODULE_NAME[0]="snd_soc_acp6x_mach"
DEST_MODULE_LOCATION[0]="/updates/dkms/"
AUTOINSTALL="no"
REMAKE_INITRD="no"
PRE_BUILD="patch.sh sound/soc/amd/yc"
[wim@fedora snd_soc_acp6x_mach-0.1]$


when set up, build the module using
code:
sudo dkms build snd_soc_acp6x_mach/0.1

it should create the built module in /var/lib/dkms/snd_soc_acp6x_mach/0.1/build

find the .ko file, locate the original one in /lib/modules/<kernelver> and replace it, update initramfs (on fedora run 'dracut -f') reboot and you should be good to go. keep in mind that as soon as you update your kernel, you need to redo all of this (dkms offers a way to automate that, but this is the part that still requires time on my end to set it up this way).
if you are on gentoo, or you compile your own kernel, the above process is just insane 🙂 but i assume you are on something more mainstream that does not easily allow messing about with the kernel.
Userlevel 1
Right, so I will now figure it out how to do the same on Ubuntu/Debian. Thanks!
surveily
Right, so I will now figure it out how to do the same on Ubuntu/Debian. Thanks!

i mostly based the fedora stuff on this article https://www.collabora.com/news-and-blog/blog/2021/05/05/quick-hack-patching-kernel-module-using-dkms/ which was written for ubuntu 🙂
Userlevel 1
Awesome thanks!
fyi, the patch for the digital mic was upstreamed and at least on Fedora 38 (prerelease) with kernel 6.2.0-0.rc4 it works out of the box.
i assume this will be the same for any system running a 6.2 kernel.
enjoy
Userlevel 1
Will check it out as soon as possible on Ubuntu 22.10
Userlevel 1

Ubuntu 22.10 + kernel 6.1 and 6.2 the mike works fine!

Userlevel 1

Did anyone get Linux to detect USB4 after the optional Razer firmware update? Windows works fine.

Reply