- Bazzite AMD BC-250 Patched Images for Deck, GNOME, and KDE
- Documentation
- Which image should I use?
- Other Bazzite update channels
- Install
- After install
- Experimental 40CU images
- Common fixes
- Updates and rollback
- Comparisons
- References
- License
Current Bazzite images for AMD BC-250 boards. This is not a Bazzite fork; the recommended packages are current official Bazzite stable plus BC-250-specific setup. Separate testing and unstable packages are also published for users who deliberately want to test those Bazzite channels.
They use the official Bazzite stable base and add the BC-250 pieces most users need:
cyan-skillfish-governor-smufor GPU frequency scaling.- The MangoHud/radeontop
655%GPU usage fix. - Signed OSTree images for
ostree-image-signedrebases. - Deck, GNOME, and KDE variants.
Tip
If you only want a working BC-250 gaming setup, use the normal image for your desktop. You do not need the experimental -40cu image.
Start here and only open the advanced guide if you are testing the experimental CU unlock.
| Need | Read |
|---|---|
| Install Deck, GNOME, or KDE | This README |
Use stable, testing, or unstable packages |
Bazzite Channel Packages |
| Check the image after install | After install |
| Fix common BC-250 issues | Common fixes |
| Test 32CU/40CU unlock | Experimental 40CU Guide |
| Understand the original 40CU research | duggasco/bc250-40cu-unlock |
Important
The complete 40CU documentation is in docs/40cu.md. The README only keeps the short version so new users do not have to read the experimental details to install a normal image.
| You want | Use this |
|---|---|
| Steam Deck style / Game Mode | bazzite-bc250-patched-deck |
| GNOME desktop | bazzite-bc250-patched-gnome |
| KDE desktop | bazzite-bc250-patched-kde |
| Experimental CU unlock testing | One of the -40cu images |
Published images:
| Variant | Image |
|---|---|
| Deck | ghcr.io/62fixolab/bazzite-bc250-patched-deck:latest |
| GNOME | ghcr.io/62fixolab/bazzite-bc250-patched-gnome:latest |
| KDE | ghcr.io/62fixolab/bazzite-bc250-patched-kde:latest |
Important
The normal images are the recommended choice. The -40cu images are for testing only and do not guarantee that your board will be stable with extra CUs enabled.
Stable is still the recommended channel. This repo also publishes separate packages for Bazzite testing and unstable so users can test upstream Bazzite channels without overwriting the stable latest tags.
| Channel | Use | Normal package suffix | 40CU package suffix |
|---|---|---|---|
stable |
Recommended daily use | none | -40cu |
testing |
Preview future Bazzite builds before stable release | -testing |
-40cu-testing |
unstable |
Bazzite contributor/advanced testing only | -unstable |
-40cu-unstable |
Examples:
# Deck testing
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/62fixolab/bazzite-bc250-patched-deck-testing:latest
# Deck unstable
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/62fixolab/bazzite-bc250-patched-deck-unstable:latest
# Deck testing with optional 40CU tooling
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/62fixolab/bazzite-bc250-patched-deck-40cu-testing:latestReplace deck with gnome or kde to stay on the same desktop environment.
The complete package matrix and install commands for every Deck/GNOME/KDE, normal, and -40cu channel are in docs/update-channels.md.
Warning
Bazzite documents that rebasing between desktop environments can cause issues and is unsupported. Stay on Deck, GNOME, or KDE when changing channels.
Caution
testing can include bugs, and unstable is intended for Bazzite core contributor testing. Use the stable packages unless you specifically want to test those channels.
Important
This assumes your BC-250 already works on stock Bazzite. Recommended baseline: modified BIOS, 512 MB dynamic VRAM, IOMMU disabled, enough cooling, and a PSU with enough 12 V headroom.
If you used the old vietsman patched kernel COPR before, disable it first:
sudo mkdir -p /etc/yum.repos.d.disabled
sudo mv /etc/yum.repos.d/*vietsman*patched-kernel-bc250*.repo /etc/yum.repos.d.disabled/ 2>/dev/null || trueThen rebase to the image you want:
# Deck
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/62fixolab/bazzite-bc250-patched-deck:latest
# GNOME
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/62fixolab/bazzite-bc250-patched-gnome:latest
# KDE
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/62fixolab/bazzite-bc250-patched-kde:latest
systemctl rebootNote
The images are signed with cosign and include the signing policy needed for ostree-image-signed.
Check that you are on the expected image:
rpm-ostree statusCheck the governor:
systemctl status cyan-skillfish-governor-smu --no-pagerCheck the GPU frequency table:
for f in /sys/class/drm/card*/device/pp_dpm_sclk; do echo "$f"; cat "$f"; doneTip
The BC-250 GPU can appear as card0 or card1. Checking both avoids a lot of confusion.
MangoHud/radeontop should now show normal GPU usage instead of 655%.
This is the short version. The full testing guide is here: docs/40cu.md.
The repository also builds separate experimental -40cu images:
| Variant | Image |
|---|---|
| Deck 40CU | ghcr.io/62fixolab/bazzite-bc250-patched-deck-40cu:latest |
| GNOME 40CU | ghcr.io/62fixolab/bazzite-bc250-patched-gnome-40cu:latest |
| KDE 40CU | ghcr.io/62fixolab/bazzite-bc250-patched-kde-40cu:latest |
These images include runtime tooling from the original duggasco/bc250-40cu-unlock research and WinnieLV/bc250-cu-live-manager.
Caution
32CU/40CU is silicon lottery. The tooling can work perfectly and your specific board can still be unstable with extra CUs enabled. If games fail at 32CU/40CU but work again at 24CU, use 24CU.
Quick test flow:
ujust bc250-cu-status
ujust bc250-cu-dry-run-40
ujust bc250-cu-sweet-spot
ujust bc250-cu-enable-40
ujust bc250-cu-statusRollback to factory 24CU:
ujust bc250-cu-disable-boot
ujust bc250-cu-restore-24Warning
Do not run ujust bc250-cu-save-boot until you have tested games or benchmarks and confirmed that your board is stable.
Open docs/40cu.md for the full test order, iterative WGP testing, a real 36CU example, status interpretation, boot persistence, and recovery commands.
Disable the old patched-kernel repo:
sudo mkdir -p /etc/yum.repos.d.disabled
sudo mv /etc/yum.repos.d/*vietsman*patched-kernel-bc250*.repo /etc/yum.repos.d.disabled/ 2>/dev/null || trueIf the Handheld Daemon restarts repeatedly on Deck UI:
sudo systemctl disable --now hhd
sudo systemctl mask hhdFirst reinstall the Bazzite integration:
ujust setup-sunshineIf Sunshine crashes with status=139/SIGSEGV, test software encoding:
systemctl --user stop homebrew.sunshine.service
mkdir -p ~/.config/sunshine
sed -i '/^encoder *=/d;/^capture *=/d' ~/.config/sunshine/sunshine.conf 2>/dev/null || true
printf '\nencoder = software\ncapture = kms\n' >> ~/.config/sunshine/sunshine.conf
systemctl --user restart homebrew.sunshine.service
journalctl --user -u homebrew.sunshine.service -b -fThen open https://localhost:47990 or https://<host-ip>:47990.
For read-only monitoring:
echo 'nct6683' | sudo tee /etc/modules-load.d/nct6683.conf
echo 'options nct6683 force=true' | sudo tee /etc/modprobe.d/sensors.conf
systemctl rebootImages are checked daily against official Bazzite stable, testing, and unstable base digests. If a Bazzite channel changes for a specific Deck/GNOME/KDE base, GitHub Actions rebuilds only the matching normal and -40cu packages.
Note
Commits to this repository do not rebuild packages by themselves when the Bazzite channel digests are unchanged. A manual workflow run can still force a rebuild if needed.
Update normally:
ujust updateRollback if something breaks:
rpm-ostree rollback
systemctl rebootThis repository continues the idea from:
| Area | Original vietsman images | This repo |
|---|---|---|
| Bazzite base | Older Fedora/Bazzite 42 base | Current Bazzite stable |
| Repositories | Three separate repos | One repo for Deck, GNOME, and KDE |
| Governor | oberon-governor |
cyan-skillfish-governor-smu |
| Old patched kernel COPR | Required | Removed |
GPU usage 655% bug |
Not fixed | Fixed |
| Rebuilds | Weekly | Only changed Bazzite channel/variant packages rebuild |
| Signing | vietsman signed images | This repo's signed images |
| Experimental 40CU | Not included | Separate -40cu images |
This repository also packages tooling and documentation from duggasco/bc250-40cu-unlock. The original research remains the source of the 40CU register work.
| Area | duggasco/bc250-40cu-unlock |
This repo |
|---|---|---|
| Purpose | Research, whitepaper, patches, and scripts for BC-250 40CU unlock | Ready-to-rebase Bazzite images that include optional runtime 40CU tooling |
| Operating system | General Linux/Fedora-oriented tooling and documentation | Bazzite Deck, GNOME, and KDE images |
| Install flow | User reads docs and runs/builds the unlock tooling manually | User rebases to a -40cu image and uses short ujust commands |
| Kernel/module approach | Documents patched amdgpu and lower-level enable paths |
Does not ship an always-on patched amdgpu; uses runtime WGP dispatch tooling |
| Runtime manager | External/community tooling | bc250-cu-live-manager included in the image |
| Governor profile | Documents the 1500 MHz / 900 mV 40CU sweet spot | Adds ujust bc250-cu-sweet-spot helper |
| Persistence | Documented as part of the unlock workflow | ujust bc250-cu-save-boot saves and replays the selected WGP table |
| Recovery | User follows upstream recovery steps | README and docs/40cu.md include 24CU rollback commands |
| Stability guarantee | Warns that some boards can have faulty CUs | Same warning; 32CU/40CU is treated as silicon lottery |
| Credit | Original 40CU research source | Credits and vendors upstream research/tooling; does not claim it as original |
- Bazzite updates, rollbacks, and rebasing
- Bazzite rebase guide
- Bazzite ujust commands
- Bazzite Sunshine documentation
filippor/cyan-skillfish-governorduggasco/bc250-40cu-unlockWinnieLV/bc250-cu-live-managerelektricM/amd-bc250-docs
This repository's original files are licensed under the MIT License. See LICENSE.
Third-party projects and vendored 40CU tooling keep their upstream licensing and attribution. See NOTICE.


