Bazzite F41 Update: New Kernel, MSI Claw Improvements, VRR Fixes, Better Changelogs, GNOME 47 & More


Bazzite based on Fedora 41 releases today alongside Fedora 41, bringing additional handheld support, a lot of backend improvements from our side, and goodies from upstream.

In this release, we debut our new kernel, kernel-bazzite, built directly on top of Fedora’s kernel-ark and 6.11 with a bunch of new handheld patches for Ayaneo, OneXPlayer, Ayn, basic controller support for the MSI Claw, new automatically generated changelogs to keep you in the know, Gamescope goodies for all devices, and GNOME 47 with accent colors and greater touch support.

Enhanced Handheld Support

In this release, we add speaker patches for Ayaneo Geek, Geek 1S, 1S, 2, 2S, Kun, Flip KB, Flip DS, and Ayn Loki MiniPro and display quirks for Ayaneo Flip DS, Neo 2S, GEEK, Founder edition, 2, by porting over the patches from ChimeraOS to our kernel (thanks guys). For the ones using the Awinic amplifier, unfortunately for now it’s Bring Your Own Firmware (see here) (all except Geek, Geek 1S, 2, 2S). Bear in mind, these devices may have other issues, but audio and screen orientation during boot are no longer a problem.

For the ROG Ally, we adopt Texas Instrument’s new amplifier patch from Baojun Xu that selects the correct firmware for the Ally speakers, offering superior performance for users that used the incorrect firmware previously.

Then, we expand the oxp-sensors driver with support for charge limiting and charge bypass for the OneXPlayer X1, X1 Mini (Handheld Daemon support and sending upstream pending; KDE charge limit works) and to allow control of its Turbo LED. We hope to expand that control to other OneXPlayer devices, so jump on our discord.

And finally, we add support for the controller of the MSI Claw to Handheld Daemon, where the front OEM buttons and the controller will work properly in Steam Gaming Mode now. Unfortunately, no TDP controls, back buttons, or Gyro yet. Sleep has issues too. We heard these can be found for cheap now though, so it might be worth it to you.

Gamescope / Steam Gaming Mode Changes

As promised, this release brings some optimizations to Gamescope. Namely, the framerate slider of the Ally will now work down to 12 Hz while VRR is enabled, where down to 48 Hz VRR will be used and below VRR will be automatically disabled. This affects low framerate compensation, so please use 120hz on heavy games that cannot reach 60hz.

Then, we disable VRR and limit the FPS on the Steam menu, which halves battery use while on SteamUI on the Ally, Legion Go, and any display that is 120 Hz or more, from 30-40W to 15-20W. Disabling VRR should also eliminate the perceived flashing certain sensitive users of VRR displays have, after Steam stops releasing frames due to inactivity.

GNOME 47

This release brings GNOME 47, which features accent colors (top 1 requested feature!). It also includes some nice small screen improvements for handheld devices, so perhaps it is time to take it for a spin on your favorite handheld. For KDE folks, Plasma 6.2.2 has already been available. You’re probably running it right now!

Better Changelogs

Automatic changelogs are finally here, allowing you to see exactly what changes between Bazzite versions, per package. You might not be aware, but there are 1-3 Bazzite stable updates per week (and around 5-20 testing builds). This has been obscure up to now. But not anymore!

Utilizing metadata left by our rechunk tool that brought you 2.5X smaller updates, we can now generate detailed and automated changelogs for each Bazzite build, that will reside in Github releases, which is also available as an RSS feed.

So you can now be aware of Bazzite updates 24/7.

Sneak preview:

New Kernel

One of our sticking points with our previous kernel setup was our slow iteration time (3-14 days) and lack of experimentation. When our second article on Ally X support comes out, you will hear more about it for sure.

A lot of you have asked for kernel patches for your devices and we have had to keep you waiting. Even worse, a bug in AutoUMA management introduced in kernel 6.10 caused crashes in handheld devices, which meant we had to skip it.

For Fedora 41, we knew we had to be based on kernel 6.11, and as part of that we did some spring cleaning, and moved the kernel from COPR to a new fancy setup on Github, kernel-bazzite.

In this new kernel, we use a two-stage repository setup, mirroring Fedora’s. We begin on a Linux kernel tree, placing our patches on top of Fedora’s kernel-ark. When the patches are ready, we git format-patch them and place them on a dist-git repository, which is forked from Fedora’s kernel rpm repository.

The benefits from this are clear: we can rebase to new kernel versions in 3-5 minutes, with the confidence that our patches will merge cleanly and compile. We can cherry-pick commits from lore.kernel.org, the kernel’s git repositories, and collaborate with other source based kernel distributions, such as ChimeraOS and CachyOS. Then, our kernel builds take only 2 hours, instead of 5-8, and we have a full backlog of kernel versions in case an issue is found. As part of this repo, we also publish Pacman packages. (btw)

And the benefits for you are clear as well: thanks to this kernel, we managed to fix the AutoUMA bug (still present on 6.11 and a total blocker), include the aforementioned speaker patches, and sneak in some Bluetooth patches for the new MinisForum AtomMan from 6.12. All in the last 2 weeks.

Universal Blue Growth

These were the noteworthy changes in this release so let us end with a sweet note. We have come a long way with Bazzite and Universal Blue. Our community is growing rapidly, and as part of this release we are happy to share some statistics.

In August, we changed the release IDs used in Universal Blue in order to be properly counted in Fedora’s “countme” system.

With a bit of data science and extrapolation, we are happy to bring you this chart, showcasing our growth over last year:

This chart showcases the number of Universal Blue users on Bazzite, Bluefin, and Aurora that ping Fedora’s package repository every week (these are hits, not users; i.e., not everyone is included: there is a degree of undercounting). We added Kinoite and Silverblue to be able to do the extrapolation.

For the extrapolation, we attributed excess growth from Kinoite and Silverblue to Universal Blue from this year until we changed the release IDs. The extrapolation lines up perfectly with the real data after we enabled statistics, so we are confident in that assumption.

Kinoite and Silverblue are doing great, featuring a 40% growth for Silverblue and 120% growth for Kinoite over the last year. Universal Blue’s batteries included Kinoite and Silverblue base images are still part of the base Kinoite and Silverblue stats, so we hope we helped a bit there as well. We expect continued growth as the OCI initiatives and bootc (rpm-ostree’s successor) continue to mature. bootc is also new in this release, and you can use it to rebase locally to your own custom images (sudo bootc update)!

As for us, we kicked off the year with a bang: a New Year’s Eve mention on Hacker News which added 2k starts to the Bazzite github repo and we have been exponential ever since.

For some more detail, here are the raw data with all of our flagship images (where you can clearly see when we changed the IDs):

These statistics show to us that there is a need out there for a Linux option that is batteries included and just works, as people begin to take control of which operating system they use.

We firmly believe that Linux should not be just for tinkerers and we are happy to play a part in a lot of you starting your Linux journey.

We are deeply thankful to all of you that joined our community this year!

And on this joyful note, we wrap up this update announcement. So tell us, what was the headline feature for you in this release (with ID 41-20240929)?

:warning: If you have layered packages, you might need to remove them to update properly:

sudo rpm-ostree reset
sudo rpm-ostree update

In case you missed it, Digital Foundry made a video about Bazzite recently, so have a look:

12 Likes

May I ask, why?

1 Like

This PKGBUILD is used right after the binaries are built in the action in the same security context. This would be the point you calculate the hash, so there is no point to doing so.

When we do AUR a hash will be included.

1 Like

i actually cant update through terminal I’m guessing that’s due to things being patched and fixed before the update is available? if i need to be patient let me know so that i don’t have to panic

Open an issue and post a full terminal output of your update attempt.

What’s the delta between the previous Fsync kernel and the new Bazzite kernel?

For a desktop experience should I expect something similar to the vanilla Fedora upstream kernel or is there still a different scheduler and HDR patches like Fsync had?

Do we need to fully reinstall the OS or can we simply update using ujust?

Just update as you would normally and reboot!

1 Like

Impressive growth, congrats guys! The accent color feature is nice. Really appreciate the continued work on this project.

This statement rings so true from my experience with Bazzite and Bluefin.

1 Like

When you say

so please use 120hz on heavy games that cannot reach 60hz.

Did you want to say “so please don’t use 120hz …” ?


That being said, really nice release!

got some error on lact and tailscale. is it expected?

$ ujust install-lact
No changes.
Installing LACT...
Nothing to do - goodbye
error: Updating deployment: Preparing D-Bus arguments: Handling argument /tmp/lact.rpm: No such file or directory (os error 2)
Failed to enable unit: Unit lactd.service does not exist
rm: cannot remove '/tmp/lact.rpm': No such file or directory
Complete.
# Health check:
#     - adding [-i tailscale0 -j MARK --set-mark 0x40000/0xff0000] in v6/filter/ts-forward: running [/usr/sbin/ip6tables -t filter -A ts-forward -i tailscale0 -j MARK --set-mark 0x40000/0xff0000 --wait]: exit status 2: Warning: Extension MARK revision 0 not supported, missing kernel module?
ip6tables v1.8.10 (nf_tables): MARK: bad value for option "--set-mark", or out of range (0-4294967295).

Try `ip6tables -h' or 'ip6tables --help' for more information.

There is no delta, other than some spring cleaning. All patches were carried over.

1 Like

Did you want to say “so please don’t use 120hz …” ?

*Please use a frame limit of 120hz so that you do not affect LFC.

LACT needs a few more days to release for F41. We will look into tailscale

1 Like

Edit: I found the cause - a disk wasn’t mounting and causing boot to fail

I’ve just had the 41 update come down, but it doesn’t boot for me, just goes into recovery mode, then complains the root account is locked so I can’t bypass it. I’m pretty sure I removed LACT by running rpm-ostree reset -l but maybe I need to do something more?

System info:

Summary
jtuckey@bazzite:~$ fastfetch
                                            jtuckey@bazzite
     %%%%%%====%%%%%%%%%%            
   %%%%%%%%    %%%%%%%%%%%%%%             󱋩  bazzite:stable 
  %%%%%%%%%    %%%%%%%%%%%%%%%%           󰣛  Bazzite 40 (FROM Fedora Kinoite)
  %%%%%%%%%    %%%%%%%%%%%%%%%###           Linux 6.9.12-205.fsync.fc40.x86_64
  %%%%%%%%%    %%%%%%%%%%%%%######        󰅐  12 mins
  ==                  =======######       󰔠  Spawned on Nov 02 2024
  ==                  =========##### 
  %%%%%%%%%    %%%%%%%####======#####     󰾰  MS-7C37 (3.0)
  %%%%%%%%%    %%%%%#######=====#####     󰻠  AMD Ryzen 5 3600 (12) @ 4.91 GHz
  %%%%%%%%%    %%%#########=====#####     󰍛  AMD Radeon RX 7700 XT [Discrete]
  %%%%%%%%%    %%##########=====#####       5.70 GiB / 31.26 GiB (18%)
  %%%%%%%%%====###########=====######       2.16 GiB / 931.51 GiB (0%) - btrfs
   %%%%%%%%====#########======######        22.56 GiB / 475.35 GiB (5%) - btrfs [Read-only]
    %%%%%%%=====#####========######       󰍹  3440x1440 @ 165 Hz (as 2752x1152) in 34″ [External] [HDR]
     %%%%###===============#######   
      %#######==========#########         󰕮  KDE Plasma 6.1.5
        #######################             KWin (Wayland)
          ###################               bash 5.2.26
              ###########                   Ptyxis 46.6
                                          󰏖  2747 (rpm), 12 (flatpak)

                                           ● ● ● ● ● ● ● ●

rpm-ostree status output:

Summary
Deployments:
  ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:stable
                   Digest: sha256:5bb32b035ce0678ada4b86f4899c7e237887c02038e077934b214f27866de14a
                  Version: 41.20241030 (2024-10-31T01:20:26Z)
                     Diff: 2485 upgraded, 6 downgraded, 246 removed, 128 added

● ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:stable
                   Digest: sha256:27a2080fa23ac2152ebaa61bbd3f504fc60e57a7f29f6e7ea1f77f8842a7b969
                  Version: 40.20240921.1 (2024-09-22T12:36:54Z)

I’m currently rebasing to unstable channel to see if that works.