lqp - Китайская фейковая видеокарта
December 15th, 2020
09:49 am

[Link]

Previous Entry Add to Memories Tell A Friend Next Entry
Китайская фейковая видеокарта
(Запись для памяти, или скорее для того чтобы закрыть вкладки в браузере)

Угораздило купить на алиэкспрессе поддельную видеокарту,которая определяется как NVIDIA GTX 960 4GB, но на самом деле что -то в районе GT 450 или скорее GT 545 (см ниже) с 1GB. Она в принципе работает и даже дает (на простых MMORPG) FPS на 20-30% больше чем стоящая сейчас GT 730. Но люди пишут что под нагрузкой, когда потребность в видеопамяти перевалит за оный гигабайт - все начнет вылетать.

Скорее из спортивного азарта, чем по какой насущной необходимости захотелось эту карту привести в порядок, то есть либо вернуть прошивку в оригинальное состояние, либо установить корректный размер памяти. Закупил на том же алиэкспрессе для этих целей программатор, и пока он идет, читаю что умнные люди пишут. Чтобы не держать сто вкладок открытыми, записываю сюда.

Традиционным способом восстановление таких карт является приблизительное определение (по микросхемам, количеству CUDA, версии прошивки, рабочим частотам итп) исходной видеокарты и затем последовательная прошивка всех VBIOS-ов с www.techpowerup.com имеющих соответствующие характеристики, до тех пор пока один из них не заработает. Но это нужно тщательно тестировать, потому что несовместимость старого VBIOSа, с видеокартой тоже может вылезти далеко не сразу, а удобных средств тестирования под линуксом не так чтобы очень.

Пишут что хорошей идеей является перед прошивкой побайтно сравнить BIOSы-кандидаты c BIOSом фейковой видеокарты и начать прошивать с максимально похожего.

Форма поиска на techpowerup.com очень неудобна, можно вручную подставлять параметры в URL, в частности version= (версия BIOS) memType=, memSize=, ushaders= (число шейдеров), did= (DeviceID)

В принципе, лучшим вариантом было бы взять с карты имеющийся VBIOS (который точно работает по крайне мере на небольших нагрузках) и только поправить там информацию о размере памяти. Но готовых инструментов для этого нет, а те отрывки информации которые имеются, носят характер шаманских заклинаний. Например

https://forum.ixbt.com/topic.cgi?id=10:61680-2
Вобщем так, проблема решается изменением твоего реального биоса, с указанием реального объёма памяти, то есть нужно что бы было 1 ГБ. Умеешь пользоваться двоичным редактором? Например WinHex. Открываешь в нем свой биос и ищешь адрес 07AD0. Находишь последовательность байт содержащих 77 и меняешь их на значение 55. На рисунке это будут красные числа. Вливаешь обратно в видюху, грузишь систему и обраруживаешь, что в твоей видеокарте сейчас 1 Гб памяти и запускаются абсолютно все игры без вылетов и багов.

(на самом деле в большинстве прошивок по этому адресу никакого 77 нету)
или в другом месте
https://forum.ixbt.com/topic.cgi?id=10:61680-21
Рассказываю результат, как модифицировать биос, чтобы реальный гиг был: в winhex ищете такую последовательность байт: 8F04F2100004 (вторая часть сразу за ней - 8F0402110004 ) , ниже будет различная конфигурация модулей памяти (для разных видов чипов? смещение разное от начала заголовка, смотрел у 2х видюх, где народ подобрал подходящий биос, у меня - 12 байт). В моём случае, на фейковой видюхе они были записаны как A0 66 02 00. Какой из этих байт за что отвечает - сказать, к сожалению, не могу. Могу только сказать, что память words x bits 32Мх32 и правильное значение для неё это A0 44 02 00, а значение 90 55 02 00 тоже даёт 1Гб, но видюха артефачит. Прошивал через модифицированный USBASP, а потом купил CH341A, оба прошивают без выпаивания норм.

(разумеется таких последовательностей байт в большинстве прошивок нет)

На самом деле (реальная но бесполезная информация). VBIOS нвидиивских карточек представляет собой скорее конфигурационные данные чем код (хотя какое-то количество кода там вроде бы тоже есть). Их формат частично описан по адресу
https://nvidia.github.io/open-gpu-doc/BIOS-Information-Table/BIOS-Information-Table.html
(и вообще https://nvidia.github.io/open-gpu-doc/ но там я внимательно не смотрел). Там имеется указание на некие структуры под названием "Memory Information Table" и "Memory Partition Information Table" c достаточно запутанным описанием как найти их смещение в BIOSе. Сами структуры однако не описаны.

Некое частичное описание структуры "Memory Information Table" имеется в коде драйвера Nouveau, в файле nouveau/blob/master/drm/nouveau/nvkm/subdev/bios/rammap.c (https://github.com/skeggsb/nouveau/blob/master/drm/nouveau/nvkm/subdev/bios/rammap.c ) и вокруг. Также см https://cpp.hotexamples.com/ru/examples/-/-/nvbios_rammapTe/cpp-nvbios_rammapte-function-examples.html (я не знаю откуда это, но там многобещающие каменты)

Судя по всему там нет элемента для указания общего обьема памяти, а есть только описание характеристик каждого отдельного установленного на плате чипа памяти.



Характеристики карты, списываю пока снят вентилятор.

GPU: GF116-110-KA-A1
также на нем написано:
NVIDIA
12BCB170 1150A1
S. TAIWAN
PFA257.M01
GF116-110-KA-A1
Y35

Память: - 8 микросхем ELPIDA EDW1032BBBG-40-F
также на них написано T 1210A9A0D и меняющиеся числа, по видимому серийные номера.

ROM: Pm25L0010
также там написано BE2017 P1W9401G

также какая-то микросхема с надписью uP1608PK HGT010(контроллер питания)

также 9 микросхем с надписью 4522NH CW15M (а может не микросхем а транзисторов или конденсаторов, но у них по 8 выводов)

Я думаю что это эта вот
https://www.techpowerup.com/gpu-specs/geforce-gt-545-oem.c626

(2 comments | Leave a comment)

Comments
 
From:(Anonymous)
Date:December 15th, 2020 - 07:15 am
(Link)
диспут открыл? в поддержку писал?
From:[info]lqp
Date:December 30th, 2020 - 05:59 am
(Link)
https://forums.macrumors.com/attachments/nvflash-pdf.462793/

Официальный мануал к nvflash от 2006 года.
Powered by LJ.Rossia.org