Восстановление BIOS на материнской плате MSI

Выбор и настройка HardWare

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Восстановление BIOS на материнской плате MSI

Сообщение Bizdelnick »

Оставлю здесь историю своих мучений с материнкой MSI H81M-P32, возможно кому-нибудь пригодится.
Началось всё с неудачной попытки обновления BIOS (UEFI). Дело в том, что изначально была зашита кастомизированная версия от OEM-вендора, а я решил залить более свежую оригинальную. При этом я, конечно, получил сообщение о несоответствии подписи, но оно мне показалось недостаточно грозным, и я его проигнорировал. После обновления UEFI (и до обновления ME) компьютер перезагрузился. ME проверил подпись UEFI, удостоверился, что ключ неправильный, и на этом всё закончилось. Кирпич.
Для исправления содеянного я разжился дешёвеньким SPI-программатором CH341A, для работы с которым использовал flashrom 0.9.9 (более старые версии про такой программатор не знают). BIOS оказался зашит на классическую SPI-флешку 25 серии, а именно Macronix MX25L6436E, с которой у flashrom проблем нет.
Поскольку на материнках MSI есть разъём JSPI1, старая 9-пиновая версия которого описана тут, я надеялся, что проблем с перепрошивкой не будет. Вообще этот разъём предназначен несколько для другой цели: к нему подключается сервисная плата, на которую ставится чип, куда залит правильный BIOS, после чего с него выполняется загрузка и перепрошивается распаянный на плате чип. Разумеется, сервисной платы у меня не было, поэтому я рассчитывал просто получить через разъём доступ к флешке и прошить её программатором. Дело осложнялось тем, что у разъёма довольно редко встречающийся шаг между штырьками — 2 мм, так что пришлось вслед за программатором заказывать у китайцев ещё и соответствующий шлейф. Увы, это мне всё равно не принесло успеха.
На данной материнке (и, как я понимаю, на всех современных от MSI) используется "модернизированная" версия разъёма, 11-пиновая. Принципиальное отличие в том, что контакт CS (chip select) флешки соединён с разъёмом не напрямую, а через трёхногий элемент с маркировкой "73H", который я идентифицировал как n-p-n транзистор (не факт, что правильно, и не факт, что я правильно определил его распиновку). Коллектор(?) транзистора соединён с CS флешки, эмиттер(?) — с 5 ножкой разъёма JSPI1, а база(?) — с 9 ножкой. В целом же распиновка разъёма такая:

Код: Выделить всё

1 VCC     | 2 ?
3 MISO    | 4 MOSI
5 CS (E?) | 6 CLK
7 GND     | 8 GND
9 CS (B?) | 10 NC
11 WP     | 12 HOLD
Казалось бы, дальше всё должно быть просто, но нет. Как я ни изощрялся, flashrom флешку не видел. Найти в интернете свидетельства успешной прошивки через 11-пиновый JSPI1 мне тоже не удалось, так что я пришёл к выводу, что это невозможно. Хотя нельзя исключать, что я недооцениваю свою криворукость; потому и привожу здесь распиновку разъёма: вдруг она не настолько бесполезна, как мне кажется.
Следующим, уже третьим приобретением у братьев-китайцев была SOIC8-прищепка, с помощью которой я подключил программатор к чипу напрямую (слегка погнув при этом одну ножку расположенного рядом злополучного JSPI1). И тут обнаружилась ещё одна хитрость: flashrom не видит флешку и при таком подключении до тех пор, пока на плату не подано дежурное напряжение. То есть надо подключить к ней блок питания, который в свою очередь подключить к сети, и только после этого флешка обнаруживается.
Вот такие команды нужны для работы с программатором (выполнять следует от рута, потому что flashrom общается с программатором по USB напрямую):
flashrom -VVV -p ch341a_spi -c MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E — поиск флешки (только для проверки работоспособности подключения к оной)
flashrom -V -p ch341a_spi -c MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E -r broken.rom — сохранение содержимого флешки в файл broken.rom (на всякий случай)
flashrom -V -p ch341a_spi -c MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E -w 7846v19/E7846IMS.190 — прошивка содержимого файла 7846v19/E7846IMS.190 на флешку
Поскольку при таком методе содержимое флешки переписывается разом — и UEFI, и ME — можно безбоязненно использовать прошивку от MSI.

P. S. В процессе мытарств обнаружил, что весьма распространено заблуждение, якобы разъём MOSI программатора надо подключать к разъёму MISO флешки, а MISO программатора — к MOSI флешки. Это не так! Правильно — MOSI к MOSI, MISO к MISO. Такие мудрёные (master out slave in и master in slave out) обозначения специально были придуманы, чтобы избежать путаницы, имеющей место у симметричных интерфейсов типа UART, где Tx одной стороны подключается к Rx другой.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7274
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Восстановление BIOS на материнской плате MSI

Сообщение alv »

Bizdelnick писал(а):
12.09.2017 20:45
Оставлю здесь историю своих мучений с материнкой MSI H81M-P32

Вот он, прогресс! Когда-то обходились скрепкой, ныне нужен программатор последней системы...
А по существу дела - гран мерси катта рахмат за описание опыта.
Практика показала, что серъёзно попортить UEFI - достаточно просто. А вот вернуть его взад...
Спасибо сказали:
Aliech
Сообщения: 952
Статус: дилетант широкого профиля
ОС: Gentoo arm64 musl hardened
Контактная информация:

Re: Восстановление BIOS на материнской плате MSI

Сообщение Aliech »

Bizdelnick писал(а):
12.09.2017 20:45
И тут обнаружилась ещё одна хитрость: flashrom не видит флешку и при таком подключении до тех пор, пока на плату не подано дежурное напряжение. То есть надо подключить к ней блок питания, который в свою очередь подключить к сети, и только после этого флешка обнаруживается.


Чтобы творить in-circuit, надо конечно чем-то этот самый контур запитать. Ваш КО) Беда в том, что кроме флешки запитываешь ещё и всё вокруг. Бывало, что не хватало мощности одного USB-порта, к которому был подцеплен программатор. Сам пользуюсь схемой а-ля https://www.flashrom.org/FT2232SPI_Programmer
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest
Контактная информация:

Re: Восстановление BIOS на материнской плате MSI

Сообщение SerW »

Кул стори!
Сергей Ш. » DragonSerW.RU
Спасибо сказали:
Ответить