Kinoite/SilverBlue -- How to install custom firmware?

I know this flies in the face of the whole point of these read only systems, but unfortunately my wifi card (Qualcomm WCN7850 Wi-Fi 7 soldered into a Gigabyte Aero D TRX50 MB) is not supported by the shipped firmware for beta-40 Kinoite (or earlier, of course).

I swapped over to a mutable workstation install and was pretty easily able to get it working by pulling down a testing branch from one of the kernel maintainers. To get it working though I need to delete /lib/firmware/ath12k and replace it with some files from that repo, broadly following the directions laid out here. These files are write-protected in the atomic versions of Fedora though.

How could I most sustainably go about overlaying these changes? Brand-new to this immutable world so some hand holding would be appreciated. Sadly losing wifi is not a valid option so if the answer is just “You shouldn’t be doing that” then I guess I just have to fallback to workstation…


Edit: I posed my full solution below, but wanted to mark the source of the solution appropriately–just scroll down a bit for the solution steps.

1 Like

On Fedora Atomic Desktops (the new and very needed name for all rpm-ostree variants) every file you add to such directories needs to be installed with a RPM.

So if you dont get RPM packages, you can build an RPM placing exactly the needed files in the right directories.

This is not that hard I think, but never did it myself yet.

But there are multiple things like boot targets or SDDM themes that need to be converted to RPM packages, which can then be layered with rpm-ostree install package.rpm

This is actually a good scenario for a guide or more information regarding adding such software.

1 Like

I was able to get it working following these steps:

  1. Set up a copy of the ath12k directory in my home space with the updated firmware. Here I included both uncompressed (as per the guide posted above) and compressed (.xz) versions to ensure they would supersede the baked versions.

  2. Used FPM to create an RPM: fpm -s dir -t rpm -n wifi7_patch ath12k=/lib/firmware/

  3. Installed it with rpm-ostree with a forced overwrite of existing files: rpm-ostree install --force-replacefiles ./wifi7_patch-1.0-1.x86_64.rpm

  4. Rebooted

And I’ve now got wireless! I’m not sure what I would have done if it were the case that I, for some reason, needed to delete a file as opposed to simply replace it, but this got me over the line in any case.


Thank you very much for sharing this solution!
It works fine for me as well.

Added fpm, qualcomm, rpm, rpm-ostree, wifi and removed beta, silverblue, workstation

FPM looks really useful. Easily creating RPMs containing files you need somewhere is a key process when customizing rpm-ostree distros.

Yes it may be effort currently, but it is a clean way. Transparent, with rpm-ostree status and resettable.

Btw do you still need that mod? Or is it upstream already?

1 Like