Clean repo down to what the console image actually uses

- Rewrite README for this fork's purpose (was upstream's multi-image doc)
- Remove 40-CU tooling (files/system, vendor/, docs/, justfiles) — this
  image is deliberately stable-24CU only
- Remove upstream CI (GitHub workflows, release scripts) — builds are
  local, repo lives on Gitea
- Remove unused upstream recipes (deck/kde/gnome × plain/40cu)
- Remove upstream's cosign.pub — we don't sign; keeping their key was
  misleading (verified: recipe generates fine without it, no key baked)
- Update NOTICE: drop removed vendored projects, credit direct upstream

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 15:32:11 -04:00
co-authored by Claude Fable 5
parent 891c4c46da
commit 06ad5e9d26
60 changed files with 53 additions and 13268 deletions
+42 -322
View File
@@ -1,336 +1,56 @@
# 🎉 Sponsors
# bc250-console
## Printer Tools App
[![Banner - Printer Tools App](https://github.com/62fixolab/62fixolab/raw/master/assets/banner-printer-tools.png)](https://printertools.app)
A custom [Bazzite](https://bazzite.gg) GNOME (bootc) image for the **AMD
BC-250**, built as a kid-friendly couch gaming console with remote parent
administration. Recipes build with [BlueBuild](https://blue-build.org); the
installer ISO comes from bootc-image-builder; installed consoles update
over-the-air from this Gitea's container registry.
## Scooter Tools App
[![Banner - Scooter Tools App](https://github.com/62fixolab/62fixolab/raw/master/assets/banner-scooter-tools.png)](https://scootertools.app)
**Image:** `git.lazypugs.com/ckoch/bc250-console-gnome:latest`
**Recipe:** [`recipes/bc250-console-gnome.yml`](recipes/bc250-console-gnome.yml)
## AdMate App
[![Banner - AdMate App](https://github.com/62fixolab/62fixolab/raw/master/assets/banner-admate.png)](https://admate.dev)
## What it adds on top of `bazzite-gnome:stable`
## Table of Contents
| Area | Change |
|---|---|
| GPU | `cyan-skillfish-governor-smu` (BC-250 DVFS governor, from the [filippor COPR](https://copr.fedorainfracloud.org/coprs/filippor/bazzite/)), enabled |
| Memory | `ttm.pages_limit` / `ttm.page_pool_size` kargs so the GPU can use the full 16 GB shared GDDR6 |
| Remote admin | `openssh-server` (enabled) + `gnome-remote-desktop` (RDP); one-time `bc250-remote-setup` script; `tailscaled` enabled |
| Console behavior | All suspend paths masked, no screen lock/dim, GNOME animations off — always on, always reachable |
| Kid experience | Steam Big Picture autostarts for the `kid` account only |
| Apps | First-boot flatpaks: ProtonUp-Qt, Heroic, RetroDECK (Steam, Firefox, auto-updates already in the Bazzite base) |
| Fixes | `hhd.service` masked (crash-loops on BC-250) |
| Docs | Parent manual baked at `/usr/share/doc/bc250-console/OPERATIONS.md` |
- [Bazzite AMD BC-250 Patched Images for Deck, GNOME, and KDE](#bazzite-amd-bc-250-patched-images-for-deck-gnome-and-kde)
- [Documentation](#documentation)
- [Which image should I use?](#which-image-should-i-use)
- [Other Bazzite update channels](#other-bazzite-update-channels)
- [Install](#install)
- [After install](#after-install)
- [Experimental 40CU images](#experimental-40cu-images)
- [Common fixes](#common-fixes)
- [Old COPR causes 404 during rebase](#old-copr-causes-404-during-rebase)
- [Deck UI micro-stutter](#deck-ui-micro-stutter)
- [Sunshine crashes](#sunshine-crashes)
- [Temperature sensors](#temperature-sensors)
- [Updates and rollback](#updates-and-rollback)
- [Comparisons](#comparisons)
- [Compared with vietsman's Bazzite images](#compared-with-vietsmans-bazzite-images)
- [Compared with duggasco's 40CU unlock research](#compared-with-duggascos-40cu-unlock-research)
- [References](#references)
- [License](#license)
## Accounts
# Bazzite AMD BC-250 Patched Images for Deck, GNOME, and KDE
The ISO installs **unattended** and bakes two users from
[`iso-config.toml`](iso-config.toml): `parent` (admin/wheel) and `kid`
(standard), both with a placeholder password to change on first login.
[![Build Bazzite BC-250](https://github.com/62fixolab/Latest-Bazzite-AMD-BC-250-Patched-Images/actions/workflows/build.yml/badge.svg)](https://github.com/62fixolab/Latest-Bazzite-AMD-BC-250-Patched-Images/actions/workflows/build.yml)
> ⚠️ The installer wipes the first disk with no prompts. Don't boot it on a
> machine whose disk you care about.
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.
## Documentation
They use the official Bazzite `stable` base and add the BC-250 pieces most users need:
- [`BUILD-CONSOLE.md`](BUILD-CONSOLE.md) — build the image, generate the ISO,
publish OTA updates (verified podman and docker paths, with workarounds)
- [`OPERATIONS.md`](OPERATIONS.md) — day-2 admin: connecting, installing
games remotely, updates/rollback, GPU tuning, health checks
- `cyan-skillfish-governor-smu` for GPU frequency scaling.
- The MangoHud/radeontop `655%` GPU usage fix.
- Signed OSTree images for `ostree-image-signed` rebases.
- Deck, GNOME, and KDE variants.
## Hardware prerequisites (on the board, not in the image)
> [!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.
Modded BIOS (see [mothenjoyer69/bc250-documentation](https://github.com/mothenjoyer69/bc250-documentation)),
then BIOS settings: 512 MB dynamic VRAM, IOMMU disabled, auto power-on.
# Documentation
## Credits
Start here and only open the advanced guide if you are testing the experimental CU unlock.
Forked from
[62fixolab/Latest-Bazzite-AMD-BC-250-Patched-Images](https://github.com/62fixolab/Latest-Bazzite-AMD-BC-250-Patched-Images),
which builds on [vietsman's patched images](https://github.com/vietsman/bazzite-gnome-patched)
and [filippor/cyan-skillfish-governor](https://github.com/filippor/cyan-skillfish-governor),
on top of [ublue-os/bazzite](https://github.com/ublue-os/bazzite).
The 40-CU experimental tooling from upstream is intentionally not included —
this image stays on the stable 24-CU configuration.
| Need | Read |
| --- | --- |
| Install Deck, GNOME, or KDE | This README |
| Use `stable`, `testing`, or `unstable` packages | [Bazzite Channel Packages](docs/update-channels.md) |
| Check the image after install | [After install](#after-install) |
| Fix common BC-250 issues | [Common fixes](#common-fixes) |
| Test 32CU/40CU unlock | [Experimental 40CU Guide](docs/40cu.md) |
| Understand the original 40CU research | [`duggasco/bc250-40cu-unlock`](https://github.com/duggasco/bc250-40cu-unlock) |
> [!IMPORTANT]
> The complete 40CU documentation is in [docs/40cu.md](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.
# Which image should I use?
| 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.
# Other Bazzite update channels
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:
```bash
# 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:latest
```
Replace `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](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.
# Install
> [!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:
```bash
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 || true
```
Then rebase to the image you want:
```bash
# 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 reboot
```
> [!NOTE]
> The images are signed with cosign and include the signing policy needed for `ostree-image-signed`.
# After install
Check that you are on the expected image:
```bash
rpm-ostree status
```
Check the governor:
```bash
systemctl status cyan-skillfish-governor-smu --no-pager
```
Check the GPU frequency table:
```bash
for f in /sys/class/drm/card*/device/pp_dpm_sclk; do echo "$f"; cat "$f"; done
```
> [!TIP]
> 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%`.
# Experimental 40CU images
This is the short version. The full testing guide is here: [docs/40cu.md](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`](https://github.com/duggasco/bc250-40cu-unlock) research and [`WinnieLV/bc250-cu-live-manager`](https://github.com/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:
```bash
ujust bc250-cu-status
ujust bc250-cu-dry-run-40
ujust bc250-cu-sweet-spot
ujust bc250-cu-enable-40
ujust bc250-cu-status
```
Rollback to factory 24CU:
```bash
ujust bc250-cu-disable-boot
ujust bc250-cu-restore-24
```
> [!WARNING]
> 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](docs/40cu.md) for the full test order, iterative WGP testing, a real 36CU example, status interpretation, boot persistence, and recovery commands.
# Common fixes
## Old COPR causes 404 during rebase
Disable the old patched-kernel repo:
```bash
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 || true
```
## Deck UI micro-stutter
If the Handheld Daemon restarts repeatedly on Deck UI:
```bash
sudo systemctl disable --now hhd
sudo systemctl mask hhd
```
## Sunshine crashes
First reinstall the Bazzite integration:
```bash
ujust setup-sunshine
```
If Sunshine crashes with `status=139`/SIGSEGV, test software encoding:
```bash
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 -f
```
Then open `https://localhost:47990` or `https://<host-ip>:47990`.
## Temperature sensors
For read-only monitoring:
```bash
echo 'nct6683' | sudo tee /etc/modules-load.d/nct6683.conf
echo 'options nct6683 force=true' | sudo tee /etc/modprobe.d/sensors.conf
systemctl reboot
```
# Updates and rollback
Images 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:
```bash
ujust update
```
Rollback if something breaks:
```bash
rpm-ostree rollback
systemctl reboot
```
# Comparisons
## Compared with vietsman's Bazzite images
This repository continues the idea from:
- [`vietsman/bazzite-deck-patched`](https://github.com/vietsman/bazzite-deck-patched)
- [`vietsman/bazzite-gnome-patched`](https://github.com/vietsman/bazzite-gnome-patched)
- [`vietsman/bazzite-kde-patched`](https://github.com/vietsman/bazzite-kde-patched)
| 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 |
## Compared with duggasco's 40CU unlock research
This repository also packages tooling and documentation from [`duggasco/bc250-40cu-unlock`](https://github.com/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](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 |
# References
- [Bazzite updates, rollbacks, and rebasing](https://docs.bazzite.gg/Installing_and_Managing_Software/Updates_Rollbacks_and_Rebasing/)
- [Bazzite rebase guide](https://docs.bazzite.gg/Installing_and_Managing_Software/Updates_Rollbacks_and_Rebasing/rebase_guide/)
- [Bazzite ujust commands](https://docs.bazzite.gg/Installing_and_Managing_Software/ujust/)
- [Bazzite Sunshine documentation](https://docs.bazzite.gg/Advanced/sunshine/)
- [`filippor/cyan-skillfish-governor`](https://github.com/filippor/cyan-skillfish-governor)
- [`duggasco/bc250-40cu-unlock`](https://github.com/duggasco/bc250-40cu-unlock)
- [`WinnieLV/bc250-cu-live-manager`](https://github.com/WinnieLV/bc250-cu-live-manager)
- [`elektricM/amd-bc250-docs`](https://github.com/elektricM/amd-bc250-docs)
# License
This repository's original files are licensed under the MIT License. See [LICENSE](LICENSE).
Third-party projects and vendored 40CU tooling keep their upstream licensing and attribution. See [NOTICE](NOTICE).
MIT licensed — see [LICENSE](LICENSE) and [NOTICE](NOTICE).