explaingit

duggasco/bc250-40cu-unlock

Analysis updated 2026-06-24

74ShellAudience · ops devopsComplexity · 5/5LicenseSetup · hard

TLDR

Linux amdgpu kernel patch that re-enables the 16 factory-disabled compute units on the AMD BC-250 ex-PS5 board, plus build scripts, a health test, and an undervolting companion.

Mindmap

mindmap
  root((bc250-40cu-unlock))
    Inputs
      amdgpu kernel module
      BC-250 PCI device
      Modprobe option
    Outputs
      Patched kernel module
      40 active compute units
      Defective CU report
    Use Cases
      Vulkan LLM inference
      Compute board tinkering
      GPU undervolting setup
    Tech Stack
      Linux kernel
      amdgpu driver
      Shell
      Vulkan
      C
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Unlock 40 compute units on a BC-250 board to speed up local Vulkan LLM inference

USE CASE 2

Build a homelab compute node from a cheap salvaged PS5 chip

USE CASE 3

Identify which CUs are defective on your specific board with the per-WGP health test

USE CASE 4

Pair the unlock with cyan-skillfish-governor to cap clock and voltage for thermal safety

What is it built with?

LinuxamdgpuShellCVulkan

How does it compare?

duggasco/bc250-40cu-unlockfilipedeschamps/dotfileshailoc12/ai_native_company
Stars746746
LanguageShellShellShell
Last pushed2025-04-23
MaintenanceStale
Setup difficultyhardmoderateeasy
Complexity5/52/51/5
Audienceops devopsdeveloperpm founder

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires building a custom amdgpu kernel module and rebooting, thermal headroom is tight, capping at 1500 MHz is recommended.

GPL-2.0 license, you can use and modify the patch but derivative kernel modules must also be GPL-2.0.

In plain English

This repository is a kernel patch and build script for the AMD BC-250, an unusual graphics card that started life as a salvaged PlayStation 5 chip and was repackaged for sale as a standalone compute board. From the factory, only 24 of its 40 compute units, or CUs, are active. The remaining 16 are switched off by firmware policy rather than hardware defects, and this project re-enables them by writing two registers inside the amdgpu Linux driver during initialisation. The README explains that both registers have to change for the unlock to work. One register controls how many CUs the driver reports as available, and the other controls where the dispatch logic actually sends compute work. Changing only one leaves the system inconsistent: the driver might think 40 CUs are available but only dispatch to 24, or vice versa. The patch makes both writes inside a guarded function that only fires when the PCI device ID matches the BC-250 and a module option called bc250_cc_write_mode is set, so it does nothing on other AMD cards. The author reports a measured 1.61 times speedup on a Vulkan large language model inference benchmark, going from 230 to 372 tokens per second at the same 1.5 GHz clock, with power rising from 95 to 125 watts and temperature from 79 to 83 degrees Celsius. Running at 2 GHz pushes performance higher but also pushes temperatures to 96 degrees, so the README recommends capping the card at 1500 MHz and 900 millivolts using a companion project called cyan-skillfish-governor. Installation has three paths: a build script that compiles a patched amdgpu module on any distribution, a manual patch-and-make sequence, or applying the patch into a CachyOS or Arch PKGBUILD. After a reboot, dmesg output should show 40 active CUs and the register writes from old to new values. The setup is reversible: removing the modprobe option and rebooting returns the board to its stock 24 CU configuration with no permanent hardware change. The project also includes a per-WGP health test script that reboots into different masking configurations to find any CUs that turn out to be defective once unlocked, plus a tool that turns those results into a disable_cu modprobe option. There is an 8-page whitepaper and a technical report under docs covering the register map, why an earlier ignore_cu_harvest patch did not work, and the dual-register gating architecture. The license is GPL-2.0, matching the Linux kernel.

Copy-paste prompts

Prompt 1
Run the bc250-40cu-unlock build script on Ubuntu 24.04 and verify dmesg shows 40 active CUs after reboot
Prompt 2
Adapt the bc250-40cu-unlock PKGBUILD instructions to CachyOS and confirm the kernel module reloads cleanly
Prompt 3
Walk through the dual-register gating logic in bc250-40cu-unlock and explain why the earlier ignore_cu_harvest patch failed
Prompt 4
Use the bc250-40cu-unlock per-WGP health test to mask out any defective CUs and emit the right disable_cu modprobe line
Prompt 5
Combine bc250-40cu-unlock with cyan-skillfish-governor to cap the card at 1500 MHz and 900 mV

Frequently asked questions

What is bc250-40cu-unlock?

Linux amdgpu kernel patch that re-enables the 16 factory-disabled compute units on the AMD BC-250 ex-PS5 board, plus build scripts, a health test, and an undervolting companion.

What language is bc250-40cu-unlock written in?

Mainly Shell. The stack also includes Linux, amdgpu, Shell.

What license does bc250-40cu-unlock use?

GPL-2.0 license, you can use and modify the patch but derivative kernel modules must also be GPL-2.0.

How hard is bc250-40cu-unlock to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is bc250-40cu-unlock for?

Mainly ops devops.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.