(098) 721 48 84

(099) 198 42 45

(073) 477 68 72

0шт.

Ваша корзина пуста.

Product was successfully added to your shopping cart.

Модификация биоса видеокарт в HEX редакторе (Samsung, Hynix, Mircon, Elpida)

От автора.

Здесь предоставлен перевод и небольшие дополнения статьи:

https://anorak.tech/t/anoraks-amd-vbios-hex-modification-tutorial/126

Если у вас кривые руки – сначала ровняете руки, потом лезете к технике. Если что-то поломаете – это ваши проблемы, не пишите и не звоните. Консультаций не даю. Пожелания и исправления высылайте на почту (в конце статьи).

Да, кстати, видеокарты с модифицированным биосом гарантии не подлежат. Делайте все на свой страх и риск.

Что нам нужно для модифицирования биоса видеокарты:

  1. ATIWinFlash для сохранения биоса и заливки нового в карту
  2. GPU-Z чтобы получить детальную информацию о видеокарте, типе памяти и тд
  3. Anoraks ATOMBIOSReader для получения детальной информации из биоса видеокарты
  4. Anoraks VBIOS CRC checker для подсчета корректной чексуммы для модифицированного биоса
  5. Hex Workshop, собственно говоря, редактор в котором мы будем шаманить

 

У меня в подопытных будет видеокарта SAPPHIRE NITRO RADEON RX 480 4G с партномером 299-2E347-400SA, с частотами 1266 МГц по чипу и 1750 МГц по памяти. Память Elpida:

GPU-Z screenshot

Поехали

1. Запускаем ATIWinFlash, сохраняем биос в надежное место. Создаем копию на всякий пожаный.

 Сохраняем биос видеокарты

 Сохраняем биос видеокарты 2

 Даже самый последний PolarisBIOSEditor не понимает эту память, что, собственно, и заставило меня начать колдовать:

 Ошибка чтения таймингов из памяти

 

2. Теперь для модификации расковыриваем биос и раскладываем по полочкам нужные значения. Для всех биосов существует мастер список таблиц с командами и значениями. Чтобы получить эту таблицу используем Anoraks-ATOMBIOSReader, открываем сохраненный биос:

 Anoraks-ATOMBIOSReader

 

И получаем в папке с биосом тесктовый файл с нужными нам значениями:

Anoraks-ATOMBIOSReader2

 

3. Далее юзаем HEX Workshop. Запускаем, открываем сохраненный биос, получаем такой вот беспредел (не очкуйте, щас разберемся что к чему):

HEX Workshop

 

Кратко. Окно программы разделена на 4 части. Вехнее левое (основное) - это окно-координатная система, которая позволяет вам попасть в нужную часть биоса. Можно сравнить ее с шахматной доской с ее клетками. Слева у вас номер строки, сверху – номер колонки, ну а комбинация номеров строки и колонки дает адрес ячейки (вау!). А в основном поле вы видите актуальные значения в шестнадцатеричной системе. Вот это мы и будем менять.

Справа у нас окошко с «понятными» значениями – это перевод с шестнадцатеричной системы в читаемую форму.

Снизу справа окно поиска, закладок и тд, к нему вернемся позже

4. Теперь раскурачиваем биос и собираем полезную информацию.

 

В текстовом поле видим информацию для какой карточки этот биос был создан. В нашем случае это ATOMBIOS для Sapphire Ellesmere (Polaris) GPU c 4GB видеопамяти.  И версия биоса VER015.050.000.000.000000.347. Ну я подозреваю что вы то знаете какая у вас каточка и сколько там памяти, но эта информация подверждает, что мы работаем таки с правильным файлом.

Если проскролить ниже вы увидите множество кракозябликов, которые на самом деле содержат в себе много полезной информации, как напряжения, тайминги, скорости вращения вентиляторов и тд.

Далее ищем производителя памяти, которая установлена у нас на карте. Все мы знаем, что в картах с Polaris  может стоять Samsung, Micron, Hynix или Elpida.

Поэтому открываем текстовый файлик, полученный из данных биоса (из пункта 2).

 Файло

В таблице 4 колонки с командами и 5ая колонка со значениями.

Первая колонка показывает номер ряда в шестнадцатеричном (HEX) значении, вторая стартовый адрес записаного значения, третья – длина строки/записаного значения, четвертая – название команды/значение. 5 колонка – перевод 4 колонки в читаемый вид.

Короче говорят, нам нужно VRAM_Info – который нам укажет на номер типа памяти.

У меня это:

  001c:   a44e  Len 073f  Rev 02:02  (VRAM_Info)

Чтобы найти какая у нас память ищем начальный адрес из VRAM_Info – у нас это a44e.

Идем в HEX Workshop. Жмем Ctrl + g, или переходим по меню Edit -> Goto... В окошке вставляем адрес и жмем Go и курсор перемещается на нужный адрес:

 Ctrl + g

 

Справа в текстовом поле среди всякого бреда видим два вменяемых набора символов.

H5GC4H24AJR и EDW4032BABG

Первая - это HYNIX

 Hynix

Вторая – это Micron либо Elpida

 Eldipa

 

Вот она наша Элпида!

Биос написан под 2 типа памяти сразу - Micron и Elpida. Именно поэтому в него и прописаны настройки для обоих производителей.

 

5. Ищем и меняем тайминги.

Мы будем делать так называемый мемшифт или, говоря нормальным языком, сдвигать/прописывать тайминги от меньшей на более высокую частоту. Это решение позволяет увеличить производительность в майнинге Эфира (Ethereum).

Ближе к телу, как говорил классик.

Нам нужен стандартный виндовый калькулятор в режиме ТыЖПрограммист:

 Калькулятор

Так-с, давайте переведем значение частоты 1500 в шестнадцатеричную систему исчисления (далее HEX). На калькуляторе клацаем на DEC чтобы перевести калькулятор в десятеричную систему исчисления. Далее нужно ввести 1500 умноженное на 100, то есть 150 000. И в поле HEX видим значение 249F0 – это 1500 в шестнадцатеричной системе исчисления.

HEX редактор показывает значения в  реверсированном/перевернутом виде. По сему мы тоже перевернем полученное в калькуляторе значение. Как это делается: число переворачивается символами по парам.

Последняя пара F0 стает первой, потом 49, последняя 2 одна,  поэтому добавляем 0 в хвост.

Получаем F04902.

Идем в HEX редактор и ищем F04902: жмем Ctrl + f, или через меню Edit -> Find…  открывается окно поиска. Для Type выбираем Hex Values и в value вписываем F04902. Ставим птичку на Find all Instances и жмем Ок.

 F04902

В нижнем правом окне отобразятся все совпадения. Нам нужно значение, которое идет после значения типа памяти:

 F04902_2

В нашем случае у нас биос под двоих производителей памяти, первый – Hynix, второй – Elpida:

 Memory_remains

 

После значения F04902 идут 00, 01, 02 – которые соответвуют типу памяти.

У нас элпида, ставим себе закладку. Выделяем F0490202, клик правой кнопкой Add Color Mapping..., выбираем Background Color (у меня красный)

 Раскраска

 Раскраска2

 

Далее ищем значение 1625 МГц что получается C47A02 в HEX

 

1625 умножить на 100 это 162500 в DEC и переводится как 27AC4 в HEX. После реверса добавляем 02 в конец (напомню, у нас элпида, второй тип памяти по счету в биосе) получаем C47A0202

 

Далее по такому же алгоритму находим и отмечаем значения для 1750 и 2000 МГц.           

Получается что-то такое:

 Таблца

 

Теперь начинаем модифицирование.

Чаще всего записывают тайминги от 1500 МГц в 1625/1750/2000 МГц.

Не фанатейте, не нужно записывать совсем низкие тайминги – это может привести к ошибкам в вычислениях, что привет к так называемым реджекнутым шарам (rejected shares). Отслеживайте ошибки через HWiNFO64 (под нагрузкой):

 HWiNFO64

По-хорошему, ошибок не должно быть вообще.

 

Чтобы перезаписать тайминги, мы берем стоку, которая между значениями 1500 и 1625 (те, которые мы цветом отметили) и вставляем эту строку в 1625-1750, 1750-2000.

Также иногда зашивают частоты от 1425 в 1500, и от 1375 в 1425 (мемшифт)

 мемшифт

 мемшифт2

мемшифт3

 

Получаем такую картину:

 мемшифт4

 

Сохраняем биос под новым именем. Например, bios_new.rom

6. Исправляем чексумму CRC (CRC checksum).

Перед тем, как заливать биос в видик, необходимо сделать еще одну маленькую манипуляцию. Исправить чексумму в файле биоса.

 

Что такое чексумма CRC (CRC checksum)? Чексумма – это значение либо строка, которая рассчитывается исходя из содержимого файла. Если оригинальный файл изменяется, также изменяется CRC для этого файла. Чексумму CRC можно сравнить с быстрым индикатором изменялся ли файл.

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

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

Так давайте же посчитаем правильный CRC.

Для этого нам нужен Anoraks-AMD-VBIOS-CRC-checker.

Запускаем его, жмем Check CRC, выбираем сохраненный модифицированный биос bios_new.rom и видим:

 Check CRC

Новый CRC отличается от сохраненного.

Идем опять в наш HEX редактор, нам нужна первая строка кода. Наша чексумма записана по адресу 00000021, идем туда:

 00000021

 

Вот она:

Чексумма 1

Бессовестно меняем ее на правильную (expected checksum из Anoraks-AMD-VBIOS-CRC-checker):

 Чексумма 2

Сохраняем биос в файлик bios_new2.rom

Еще раз проверяем его на правильность CRC чексуммы.

Зашиваем в видик. Это не описываю, тут и так миллион мануалов есть:

 AtiWin 

Запускаем Wattools + HWiNFO64 (следим за ошибками памяти). У меня память заработала на 1950 МГц и выдавала немного ошибок. Ошибки – плохо, будут реджекнутые шары. Совсем без ошибок работала на частоте 1900 МГц.

 Wattools + HWiNFO64

 

Изначально каточка выдавала около 22 мегахешей в соло в эфире на Claymore 8.0

После манипуляций над биосом получили:

На даунвольте 27.8 ETH + 415 DCR потребление 92 Ватта, температура GPU 74 градуса (в комнате 20), память работает на 1950 МГц:

 Результаты

  

Без даунвольта получилось около 28,5 Мх в эфире + 450  в декрете, потребление больше 140 Ватт, только кому оно такое надо?

 

Что ж, это не мега-результат, учитывая, что хорошая 470 с памятью Самсунг выдает 30+ в эфире + 450 в декрете, но мы не стесняемся своих достижений.

 

С уважением, АБ