After updating to this kernel, this adapter:
$ lspci | grep Net
02:00.0 Network controller: Qualcomm Technologies, Inc WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800] (rev 01)
stopped working. By “stopped working,” I mean that the adapter itself was not recognized by the kernel anymore and therefore there was no wireless connectivity. I unfortunately didn’t save the dmesg
output showing the details, but the gist of the problem is that the ath12k
kernel module was not loading properly.
This definitely needs to be handled upstream; my workaround is the exact opposite of best practices, but going without a working wireless adapter is not an option. Read on for the horrifying workaround.
Complications
I’m running a custom build of Bluefin and couldn’t seem to find a way to switch back to a known-good kernel using rpm-ostree
.
Workaround
In the end, I was able to get the adapter working again by creating an rpm package from the upstream ath12k-firmware. The steps were as follows:
- Clone the upstream firmware repository
mkdir -p ~/build/system && cd ~/build/system
git clone https://git.codelinaro.org/clo/ath-firmware/ath12k-firmware
- Create the necessary directory structure for the package
mkdir -p ~/build/system/wifi-patch/ath12k/WCN7850/hw2.0
- Copy the firmware files into the package directory
cp ~/build/system/ath12k-firmware/WCN7850/hw2.0/board-2.bin ~/build/system/wifi-patch/ath12k/WCN7850/hw2.0
cp ~/build/system/ath12k-firmware/WCN7850/hw2.0/1.0/**/{amss.bin,m3.bin} ~/build/system/wifi-patch/ath12k/WCN7850/hw2.0
- Confirm that the structure is correct
tree ~/build/system/wifi-patch
.
└── ath12k
└── WCN7850
└── hw2.0
├── amss.bin
├── board-2.bin
└── m3.bin
- Set up a distrobox container to build the package
distrobox create -i fedora:42 -n wifi-patch && distrobox enter wifi-patch
- Install the necessary build tools (run in box from step 5.)
sudo dnf install -y ruby rpm-build
gem install fpm
- Find out where ruby installed fpm (run in box from step 5.)
gem environment
... output elided
For me the path was ~/.local/share/gem/ruby/gems/fpm-1.16.0/bin/fpm
- Build the rpm package (run in box from step 5.)
cd ~/build/system/wifi-patch
~/.local/share/gem/ruby/gems/fpm-1.16.0/bin/fpm -s dir -t rpm -n wifi7_patch -v 1.0 ath12k=/lib/firmware/
If this succeeds you should have a file called wifi7_patch-1.0-1.x86_64.rpm
in the current directory after running the command.
- Install the package (run in your host terminal, not the distrobox)
rpm-ostree install --force-replacefiles ./wifi7_patch-1.0-1.x86_64.rpm
Be aware that this is now a layered package, which means you will probably have issues when updating the next time. I don’t know enough about the consequences of that to give good advice, but I need wireless, so I have to do this for now.
- Reboot your system