ASRock BC250 — это бюджетная плата, которую автор советует брать под проект Steam Machine. Цена за производительность отличная, но из коробки она задумана как майнинг-плата, поэтому надо докрутить BIOS, GPU и CPU.
Первое — выделить видеопамять. Большинство советует 512MB, но автор рекомендует 6GB через UMA_SPECIFIED и UMA Frame buffer Size. Да, это съест часть системной RAM, зато текстуры в играх не превратятся в кашу. Ещё надо отключить в Steam предзагруженный шейдерный кэш: он скачивается generic-версией, не подходит BC-250, и при каждом запуске перезаписывает нормальный кэш, который GPU собирает сам. В Bazzite стоит отключить HHD daemon — иначе каждые пару секунд будут статтеры даже в 2D-играх. Охлаждению хватает одного вентилятора, второй не даёт разницы.
GPU из коробки залочен на 1500MHz. Ставится утилита cyan-skillfish-smu: на CachyOS через yay, на Bazzite через dnf copr и rpm-ostree. Она динамически меняет частоту GPU. В конфиге /etc/cyan-skillfish-smu/config.toml автор советует снижать минимальную частоту шагами по 100MHz до нестабильности: у него получилось 350MHz. Максимум — 1850MHz, если включены дополнительные CU, выше только растёт нагрев и потребление. Если CU не включать, можно поднять до 2000–2200MHz, но это бессмысленно. Load-target тоже стоит поправить: верх 0.65, низ 0.35, чтобы GPU не жрал лишнее в лёгких играх. Вольтаж для каждой частоты снижают по 50mV, проверяя через cyan-skillfish-performance-mode --fixed-frequency 500, и смотрят текущую частоту в /sys/class/drm/card1/device/pp_dpm_sclk. После настройки сервис включают в автозагрузку.
Дальше автор включает скрытые вычислительные блоки. По умолчанию BC-250 имеет 24 CU, хотя в PS5 их 36. Это битые платы с отбраковкой, но часть железа на месте. Скрипт bc250-cu-live-manager.sh из репозитория WinnieLV позволяет включать CU на лету. Кнопка «f» пробует активировать все 40. Если система не упала — вы выиграли кремниевую лотерею. Если упала, пары CU проверяют по отдельности, находят битые и записывают стабильную таблицу кнопкой «w», потом ставят сервис кнопкой «i». На Bazzite скрипт предложит доустановить UMR, на CachyOS он есть в AUR.
CPU разгоняют через bc250-smu-oc. Сначала ставится stress: на CachyOS из репозитория, на Bazzite — вручную из RPM через 7z, и приходится править stress_helper.py, потому что скрипт ждёт бинарь в /usr/bin/stress. Дальше автоподбор: bc250-detect --frequency 4000 --vid 1275 --keep. Если крашится — поднять VID до 1300 или снизить частоту. Выше 1300mV автор не советует. Если нужен только андервольт без разгона, подойдут 3500MHz и 1000mV. По итогам получается overclock.conf; у автора вышло 3800MHz, scale -34, max_temperature 90.
В конце автор увеличивает лимит шейдерного кэша. В /etc/environment добавляется строка MESSA_SHADER_CACHE_MAX_SIZE=5G, чтобы тяжёлым играм хватало места и старый кэш не перетирался.