Как слить BIOS видеокарты в Linux и немного побаловаться с ним...

Еще пост технического плана. Может, кому-то будет полезно.

ДИСКЛЕЙМЕР: вы можете убить свою карту, если не понимаете сути написанного, и даже если понимаете - тоже можете, как и я сам. за убитое железо ответственности я не несу.


Как я уже писал, на барахолке была взята карта Radeon HD4890. Появилась очевидная проблема - оно довольно криво работало с энергосбережением, шумело карлсоном и всячески меня раздражало. Гугление результата не дало. Заметил одну характерную фигню - профили питания читаются неверно, да и вентиль уж как-то крайне агрессивно настроен.

Решил поковырять биос, и тут выяснилось, что есть два стула как минимум два способа слить биос - верный и не очень. Не очень верный - это через фичи вида:


echo 1 > /bla/bla/card0/rom
cat /bla/bla/card0/rom > bios.bin


Потому как скорее всего считается не больше 64К, что на полный биос не тянет.

Как слить правильно(ну, наверное)? С /dev/mem, куда наш микрокод заботливо отмаплен.

Перво-наперво узнаем точный размер биоса в интернете, система скорее всего будет безбожно врать, в моем случае это 128К, или 0x20000 байт.

Потом надо узнать адрес, откуда биос начинается. Это можно сделать либо через (от рута)


grep 'Video ROM' /proc/iomem

Либо выполнить (от пользователя)


lspci -v | grep -C 10 ROM

и найти строку Expansion ROM at ... для нужной карты.


Наконец, получаем биос командой типа


dd if=/dev/mem of=vgabios.bin bs=1c skip=$[0x000c0000] count=$[0x20000]

где 0x000c0000 - адрес начала, 0x20000 - размер биоса в байтах (128К).

Вот, получили vgabios.bin. Его можно расколупать редактором биоса, поправить профили, управление вертушками, да и разогнать даже. Для разных карт редакторы свои.


Я использовал RBE под Wine.

Как слить BIOS видеокарты в Linux и немного побаловаться с ним... Железо, IT, Linux, Длиннопост, Инструкция

Теперь самое интересное - пробный заезд. Шить в карту сходу - идея неоч.

Но я тут уже рассказывал про проброс видюхи в Qemu. Вот пост:


http://pikabu.ru/story/eshche_odin_post_kak_igrat_v_virtualnoy_mashine_4736956


Так вот, есть возможность подргрузить туда биос из файла, не прошивая его. Хоть сто биосов тестируйте, с некорректным карта просто не стартанет, хотя риск спалить, конечно, остается. Добьем строчку:


-device vfio-pci,host=06:00.0,id=hostdev0,multifunction=on,x-vga=on,romfile=/path/to/vgabios.bin


И, на удивление, все сразу заработало, загрузил образ KDE neon, карта перестала шуметь. То ли прежний владелец, то ли Sapphire такие молодцы - поставили в powersave 1.26V, хотя карта нормально пашет и при 0.93V. Разница в потреблении будет аж целых 80%. Ну и вертушка была задрана на 100% при 60C.

Теперь о прошивке. Хоть подгрузка из файла и работает, мне осталось убедиться, что прочитанное сверх 64К - это точно не рандомный мусор из памяти, и тогда можно шить.

За сим откланяюсь.

GNU/Linux

1K пост15.5K подписчиков

Добавить пост

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

romfile=/path/to/vgabios.bin
вот за это отдельное огромное спасибо.
Однако могу добавить что можно полноценно работать с биосом видюхи, проброшенной в виртуалку (vt-d/iommu). Для nvidia под линух нет свежих утилит почему-то.
Считывал и прошивал. Но страаашно)
P.S. у кого-нибудь получилось добиться чистого звука? "почти" у самого, через pa

раскрыть ветку (4)
1
Автор поста оценил этот комментарий
P.S. у кого-нибудь получилось добиться чистого звука? "почти" у самого, через pa

лучше всего через hdmi.

еще сносный звук был через ac97+ALSA, но оно грузило проц вроде бы, что усугубляло ситуацию при ошибке 43.

раскрыть ветку (3)
Автор поста оценил этот комментарий

спасибо)
но в целом боль и печаль - у этого монитора нет звуковыхода.

ac97 под 10 так и не завелась.

У pa стал нормальный звук только после долгого подбора параметров.

Кстати, вы случаем не смотрели https://www.kernel.org/doc/Documentation/power/pm_qos_interf... ?
теоретически, если вырубить c-states несколько повышается отзывчивость виртуалки.
Для 100+ виртуалок эффект заметен, а для одной - как будто плацебо)

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
ac97 под 10 так и не завелась

надо дрова ставить в безопасном режиме. в гугле есть на эту тему пару эссе.

раскрыть ветку (1)
Автор поста оценил этот комментарий

спасибо)
безопасный режим упустил из виду. То ли не те эссе находил, то ли в глаза долблюсь. Второе вероятнее)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку