Обновление linux-firmware-amdgpu изредка ломает картинку: появляются артефакты и полосы, композитор замирает на пару секунд при переключении окон, а картинка на HDMI уходит в 4:2:0 и теряет насыщенный цвет. При этом сам драйвер не менялся — поменялись только бинарные блобы. Ниже — как отличить поломку от новой прошивки от ядерной, как откатить пакет целиком, как вернуть один конкретный blob и что делать с 4:2:0 на HDMI.
Пакет linux-firmware-amdgpu раскладывает в /usr/lib/firmware/amdgpu/ несколько сотен файлов — отдельный набор блобов на каждое семейство GPU. Обновление подменяет их разом, причём не только для новых карт: имена вроде navi10_sdma.bin, sienna_cod.bin или nemo10_ipd относятся к чипам, которым уже несколько лет. Прошивка для Navi 10 и для Ryzen 8040 лежит рядом, а обновляется одним релизом.
Внутри есть три разных механизма, и ломается они по-разному:
Что именно приезжает в пакете и как его разбирать по частям, я разбирал в заметке про что обновляется в linux-firmware. А если сомневаешься, тот ли драйвер вообще у тебя стоит, — короткая шпаргалка в статье про AMD APU, Radeon и amdgpu.
Ключевая мысль: ядро ты не обновлял, а железо не покупал. Изменился только пользовательский микрокод, поэтому откатывать проще пакет, а не ядро.
Сначала зафиксируй версии — без них откатывать нечем:
pacman -Q linux-firmware linux-firmware-amdgpu
pacman -Qi linux-firmware-amdgpu | grep -E 'Version|Build Date|Install Date'
Дальше ядро и сообщения о загрузке блобов:
dmesg | grep -E 'amdgpu|firmware'
journalctl -k -b | grep -iE 'amdgpu|psp|vcn|dcn|firmware'
modinfo amdgpu | head -3
Смотри на несколько вещей. Ошибки GPU init failed, Failed to load firmware, PSP firmware version с нечитаемым значением или таймаут загрузки — прямое указание на прошивку. Записи ring timeout, GPU reset failed, Page fault при обычном счёте — уже про GPU или про тайминги. Отдельно полезно сравнить список файлов и их хеши до и после отката:
ls -l /usr/lib/firmware/amdgpu/ | head -20
md5sum /usr/lib/firmware/amdgpu/navi10_*.bin
Если артефакты идут только в играх, а в обычном рабочем столе чисто, проверь ещё стек Mesa — тогда откат firmware может и помочь, а может и нет. Там отдельный разбор: настройка amdgpu и Vulkan Mesa для игр. Третий признак, самый надёжный: если sudo pacman -U со старой версией пакета чинит картинку — вопрос закрыт, дальше только фиксация.
Все версии лежат в кеше пакетов, отдельный архив качать не нужно:
ls -1 /var/cache/pacman/pkg/ | grep -E 'linux-firmware(-amdgpu)?-'
Находишь предыдущую сборку и ставишь её с перезаписью файлов. Флаг --overwrite '*' обязателен: установщик pacman иначе откажется затирать файлы более новой версии.
sudo pacman -U --overwrite '*' /var/cache/pacman/pkg/linux-firmware-amdgpu-20250xxxxxx-x-any.pkg.tar.zst
Для монолитного linux-firmware команда та же, только имя пакета другое. Если в кеше лежит только новая версия, откатываться нечем — вариант sudo pacman -Syu linux-firmware-amdgpu в [downgrade] из Arch Linux Archive, но проще сначала проверить, не в твоей ли это версии проблема.
Дальше главное — не дать пакету снова обновиться. Открой /etc/pacman.conf и в секции [options] добавь строку:
IgnorePkg = linux-firmware linux-firmware-amdgpu
Несколько пакетов перечисляются через пробел, а не через запятую. Проверить, что настройка в силе:
pacman -Q linux-firmware-amdgpu
sudo pacman -Syu
Второй вывод покажет предупреждение про игнорирование пакетов — это нормально. Побочный эффект: ядро и firmware теперь живут в разных поколениях, и именно это чаще всего ломает картинку. Проще держать связку «старое ядро + старый firmware», то есть откатывать их вместе. На время отката имеет смысл поставить linux-lts и загрузиться с него через пункт «Advanced options for Arch Linux» в меню загрузчика.
Цвет уезжает в 4:2:0, когда display core не может удержать полную chroma-развёртку и молча переходит на субсэмплинг. На HDMI 2.0 (18 Гбит/с) для 4K@60 хватает 4:4:4 в 8 и даже 10 бит — то есть переход на 4:2:0 там обычно не обязан, а означает сбой расчёта таймингов или неудачный выбор режима. Исключение — 4K@120, 5K и ультраширокие панели, где без DSC 4:4:4 физически не помещается.
Начни с проверки того, что реально согласовано:
xrandr --verbose | grep -iE 'connected|bpc|colspace|EDID'
kscreen-doctor -j 2>/dev/null | grep -iA2 colorspace
В KDE Plasma цветовое пространство подключения выбирается прямо в настройках дисплея: ставь YCbCr 4:4:4 либо RGB, а глубину цвета — 8 bpc вместо 10/12, и выключи Deep Color. Под Wayland композитор может вообще не отдавать xrandr, тогда смотри wlr-randr на Sway.
Если выбор в GUI не помогает, ограничь режим прямо в командной строке ядра, чтобы display core не пытался прыгнуть выше:
video=HDMI-A-1:1920x1080@60
На стороне телевизора или монитора тоже есть настройка: режим входа HDMI переключается между PC/RGB и TV/YCbCr, а в расширенных настройках — пункт вроде «HDMI Chroma» или «4:2:2 / 4:4:4». Если там стоит 4:2:2 или авто, цвет будет в мыле даже при честном 4:4:4 на стороне GPU.
Когда нужно понять, виноват ли DCN вообще, помогает диагностический параметр amdgpu.dcdebugmask=0x8 — он выключает DSC для 4K120 и в логах видно, уходит ли панель в субсэмплинг из-за сжатия.
Фриз на пару секунд при сворачивании окон, срыв композитора, чёрный кадр — обычно лечится параметрами модуля. Их все перечисляет статья про параметры ядра и командную строку, а конкретные самые рабочие для amdgpu такие:
amdgpu.aspm=0
amdgpu.runpm=0
amdgpu.vcn=0
amdgpu.ppfeaturemask=0xffff
aspm=0 отключает энергосбережение PCIe — самый частый фикс мерцания и артефактов на старых платах с новой прошивкой. runpm=0 убирает управление питанием GPU во время простоя. vcn=0 выгружает аппаратный декодер: если фризует только видео в браузере, причина почти наверняка в обновлённом VCN. ppfeaturemask=0xffff выключает PowerPlay и снижает частоты — крайняя мера для проверки, стабильна ли карта вообще.
Параметр amdgpu.dc=0 отключает display core целиком. На старых Polaris он честно переключает карту на legacy-путь, на Navi 10/14 и новее legacy-режима нет, поэтому композитор остаётся без CRTC и падает. Держи его только как диагностический тест на пару минут, а не как постоянное решение.
Иногда виноват ровно один файл — например, sienna_cod.bin на карте Navi 10, а всё остальное работает. Тогда и пакет откатывать незачем. Распакуй старый пакет во временную папку и верни нужный файл на место:
mkdir -p /tmp/fw-old
bsdtar -xf /var/cache/pacman/pkg/linux-firmware-amdgpu-20250xxxxxx-x-any.pkg.tar.zst -C /tmp/fw-old
ls /tmp/fw-old/usr/lib/firmware/amdgpu/ | grep sienna
sudo cp /tmp/fw-old/usr/lib/firmware/amdgpu/sienna_cod.bin /usr/lib/firmware/amdgpu/sienna_cod.bin
amdgpu грузит микрокод через request_firmware прямо с диска, так что пересборка образа обычно не нужна. Но если в /etc/mkinitcpio.conf в HOOKS есть firmware, образ лучше пересобрать:
sudo mkinitcpio -P
Дальше перезагрузка. Загрузиться с включённой встроенной графикой можно, если она есть, — тогда драйвер перезапускается без потери картинки:
sudo modprobe -r amdgpu && sudo modprobe amdgpu
Скорее нет. Ядро и firmware независимы: если причина в новом amdgpu из linux, откат пакета ничего не даст, и наоборот. Проверь версию через modinfo amdgpu | head -1 и временно загрузи linux-lts — если проблема ушла, дело в ядре.
Технически да, и это работает, пока в новом релизе старый файл не перезапишут. Но при следующем обновлении ты не заметишь, что blob сменился, если не снял хеш заранее: md5sum /usr/lib/firmware/amdgpu/*.bin > ~/fw-amdgpu.md5.
Для игр и видео — обычно да. Новые фичи и разгон иногда требуют свежих блобов, поэтому перед крупным экспериментом с версиями имеет смысл снять IgnorePkg и обновиться, а потом вернуться.
Имя файла совпадает с моделью: navi10_* — RX 5600/5700, navi14_* — RX 5500/5600 XT, sienna_* — Navi 10, navi21_* — RDNA2, van_gfx — Cezanne/Vega, dimgrey_cavefish_* — RDNA3.
Поломка после обновления linux-firmware почти всегда лечится возвратом версии пакета, а не ковырянием в драйвере. Откатываешь linux-firmware-amdgpu из кеша, добавляешь его в IgnorePkg и проверяешь картинку; если 4:2:0 остался, отдельно разбираешь режим HDMI, настройки панели и параметры DCN. Отдельный blob, около которого всё сломалось, возвращается одной командой cp — и переживать обновления становится заметно спокойнее.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии