Optimizaciones gaming para el ASRock BC-250 (AMD Ryzen Embedded V2000 / Cyan Skillfish GPU) bajo Bazzite Linux.
Bazzite es el objetivo principal, totalmente probado. El script también detecta automáticamente tu SO y tu gestor de arranque (gestor de paquetes y método de kernel args — rpm-ostree, GRUB, Limine, systemd-boot o rEFInd), por lo que funciona en modo best-effort en los demás sistemas documentados para la BC-250 (SteamOS/HoloISO, CachyOS/Arch, Fedora, Debian…). La compatibilidad fuera de Bazzite se valida con los informes de la comunidad — abre un issue si algo falla en tu distro.
Reemplazo manual del patcher de imagen de vietsman, que ya no se mantiene para Bazzite 43+.
curl -sL https://raw.githubusercontent.com/Necrosiak/bc250-tweaks/main/bootstrap.sh | sudo bashEste único comando instala todo para un BC-250 nuevo: los tweaks del sistema más DeckyLoader y nuestros plugins (BC250-Toolkit, SkullKey, Steamcord). Después, ejecuta bc250-status cuando quieras para un resumen de estado (temps, ventilador, VRAM/UMA, RAM, tweaks activos, Proton-GE, plugins).
El script clona este repo en /opt/bc250-tweaks e instala un servicio systemd que se actualiza automáticamente en cada arranque (git pull + apply).
| # | Tweak | Archivo | Descripción |
|---|---|---|---|
| 1 | Tuned/PPD | /etc/tuned/ppd.conf |
balanced-bazzite en reposo → throughput-performance-bazzite en juego |
| 2 | Variables gaming | ~/.config/environment.d/gaming.conf |
RADV_DEBUG=nohiz, RADV_PERFTEST, FSR, Anti-lag, caché shaders 10 GB |
| 3 | DRI unified heap | /etc/drirc |
GPU usa el pool de RAM del sistema — evita OOM VRAM en juegos grandes de APU |
| 4 | Latencia Pipewire | ~/.config/pipewire/pipewire.conf.d/ |
quantum=512, rate=48000 |
| 5 | Sysctl gaming | /etc/sysctl.d/99-bc250-gaming.conf |
compaction=0, numa_balancing=0, tcp_fastopen |
| 6 | Argumentos kernel | auto (rpm-ostree / grubby / GRUB / Limine / systemd-boot / rEFInd) | amdgpu.ppfeaturemask=0xffffffff, amdgpu.gttsize=8000, split_lock_detect=off, transparent_hugepage=madvise |
| 7 | Gamemode | /usr/local/bin/ |
Daemon + libs instalados manualmente (ausentes en la imagen base de Bazzite) |
| 8 | Switch PPD | /usr/local/bin/gamemode-{start,end}.sh |
Cambia PPD performance↔balanced vía busctl al iniciar juegos |
| 9 | HHD | /etc/hhd/state.yml |
Perfil balanced en reposo |
| 10 | scx_lavd | /etc/scx_loader/config.toml |
Planificador orientado a la latencia, cargado por bc250-scx-start, que se desarma si el arranque anterior se atascó (ver abajo) |
| 11 | MangoHud | ~/.config/MangoHud/MangoHud.conf |
Overlay ligero, toggle Shift+F12 |
| 12 | vkBasalt CAS | ~/.config/vkBasalt.conf |
Sharpening adaptativo, toggle Home |
| 13 | Proton-GE | ~/.steam/steam/compatibilitytools.d/ |
Última versión GE-Proton instalada |
| 14 | umr sudoers | /etc/sudoers.d/bc250-umr |
Regla NOPASSWD sudo para umr (requerida por la pestaña CU del plugin BC250-Toolkit) |
| 15 | CU boot sudoers | /etc/sudoers.d/bc250-cu-boot |
Reglas NOPASSWD sudo para persistencia CU en el arranque (tee, chmod, systemctl) |
| 16 | Helper UMA | /usr/local/bin/bc250-uma-helper |
Helper root (NOPASSWD vía /etc/sudoers.d/bc250-uma) para leer/escribir la variable EFI UMA Frame Buffer del BIOS — usado por la sección VRAM (UMA) del plugin BC250-Toolkit |
| 17 | uaccess de entrada | /etc/udev/rules.d/70-bc250-input-uaccess.rules |
Concede al usuario de la sesión activa acceso de lectura a los nodos de teclado/ratón (Bazzite solo etiqueta joysticks) — necesario para asignar una tecla física mientras un juego tiene el foco, p. ej. el push-to-talk de Steamcord. |
| 18 | Core boot sudoers | /etc/sudoers.d/bc250-core-boot |
Reglas NOPASSWD que permiten al Toolkit instalar el servicio 8C/16T al arrancar (tee, chmod, systemctl enable/disable) |
scx_lavd aporta planificación orientada a la latencia, pero en esta placa el kernel a veces lo expulsa: sched_ext: BPF scheduler "lavd_…" disabled (runnable task stall), con una tarea que lleva de 35 a 45 segundos sin ejecutarse. Toda la interfaz se congela —en ese mismo instante hay servicios de systemd que caducan, así que es el sistema el que se bloquea y no solo la pantalla— y luego scx_loader lo recarga y el ciclo se repite.
Medido en la BC-250 de referencia (6C/12T, kernel 7.2.1-ogc2, scx-scheds 1.1.3-3) el 30/08/2026: ocurre con --autopower y con --performance. Cambiar el modo de energía no lo arregla. Entre las víctimas observadas está winedevice.exe, así que también puede golpear durante un juego, no solo en el escritorio.
Por eso el servicio de arranque no adivina versiones: observa. bc250-scx-start cuenta las expulsiones del arranque anterior y, pasadas dos, se desarma y deja el planificador del kernel (EEVDF) en su sitio en vez de imponer congelaciones repetidas. Para reintentar: sudo rm /var/lib/bc250-scx/disabled y reiniciar. ./status.sh muestra una línea ↳ blocages scx en cuanto el arranque actual ha visto alguna.
--performance se sigue usando, por otra razón: una placa de minería alimentada por red y sin batería no necesita un perfil de energía, y mucho menos compactación de núcleos.
MANGOHUD=1 MANGOHUD_CONFIG=no_display ENABLE_VKBASALT=1 gamemoderun %command%El servicio bc250-tweaks.service se ejecuta en cada arranque:
- Verifica la red
git pulldesde este repo- Vuelve a ejecutar
apply.sh(idempotente — solo toca archivos modificados)
# Ver logs
journalctl -u bc250-tweaks -f
tail -f /var/log/bc250-tweaks.log
# Forzar actualización ahora
sudo /opt/bc250-tweaks/update.sh- GPU: Cyan Skillfish, device ID
731F, vendor1002 - Algunos juegos no reconocen esta GPU → spoof DXVK:
DXVK_CONFIG="dxgi.customDeviceId=731F dxgi.customVendorId=1002" - TDP: ryzenadj y adjustor no soportados en V2000 (Fam17h model 71)
- Kernels a evitar: 6.15.0–6.15.6 y 6.17.8–6.17.10 (driver GPU roto)
- ReBAR/SAM: la capacidad Resizable BAR existe pero se limita a 1 GB en el BC-250 (a menudo dejada en 256 MB) — insuficiente para juegos DX12 grandes. Usar el UMA Frame Buffer del BIOS en su lugar.
- UE5 DX12 «out of video memory»: algunos juegos Unreal Engine 5 en DX12 fallan al inicializar el render aun con VRAM libre. El unified heap global (tweak #3) ayuda a los juegos DXVK/Vulkan pero oculta la VRAM dedicada a VKD3D (DX12). Solución: poner el UMA Frame Buffer del BIOS en Auto (~8 GB en una placa de 16 GB) y desactivar el unified heap por juego — el BC250 Toolkit lo hace automáticamente con su preset
ue5_dx12_oom.
- BC250 Toolkit (plugin DeckyLoader) — base de datos de juegos de la comunidad, aplicar ajustes desde Steam
- AMD BC-250 Docs — wiki comunitaria BC-250 Linux
- bc250.info
Trabajamos activamente para que estos tweaks funcionen en todos los sistemas operativos documentados para la BC-250 (documentación comunitaria) — Bazzite, SteamOS, CachyOS/Arch, Fedora… El objetivo: detección automática del SO para que apply.sh use el método correcto (argumentos del kernel, paquetes, servicios) en tu distribución.
Se usó IA (Claude de Anthropic y Codex de OpenAI) en la creación de este proyecto: para ingeniería inversa, desarrollo y documentación. No se usó para arte ni escritura creativa. Todo lo publicado lo revisa una persona, y el resultado es responsabilidad mía. Si eso te incomoda, ya lo sabes.
Si este proyecto te resulta útil, puedes apoyar su desarrollo continuo en Ko-fi.