Analysis updated 2026-06-24
Unlock 40 compute units on a BC-250 board to speed up local Vulkan LLM inference
Build a homelab compute node from a cheap salvaged PS5 chip
Identify which CUs are defective on your specific board with the per-WGP health test
Pair the unlock with cyan-skillfish-governor to cap clock and voltage for thermal safety
| duggasco/bc250-40cu-unlock | filipedeschamps/dotfiles | hailoc12/ai_native_company | |
|---|---|---|---|
| Stars | 74 | 67 | 46 |
| Language | Shell | Shell | Shell |
| Last pushed | — | 2025-04-23 | — |
| Maintenance | — | Stale | — |
| Setup difficulty | hard | moderate | easy |
| Complexity | 5/5 | 2/5 | 1/5 |
| Audience | ops devops | developer | pm founder |
Figures from each repo's GitHub metadata at analysis time.
Requires building a custom amdgpu kernel module and rebooting, thermal headroom is tight, capping at 1500 MHz is recommended.
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.
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.
Mainly Shell. The stack also includes Linux, amdgpu, Shell.
GPL-2.0 license, you can use and modify the patch but derivative kernel modules must also be GPL-2.0.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
Verify against the repo before relying on details.