howto: recover failed p5b flash

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

Прошло некоторое время и мне понадобилась живая материнка, чтобы собрать ещё один компьютер, а поскольку жаба сидящая на плече и говорящая, что где-то в инете были способы восстановления убитого биоса – не давала денег, я пошёл гуглить.

Вчера наконец-то я решился сделать это!


Оказалось, что на материнской плате есть недокументированный разъём SPI, через который можно напрямую писать биос. Более того оказалось, что существует софт, который позволяет использовать параллельный порт (да-да, тот самый рудимент, через который когда-то подключались принтеры) для записи.

В интернетах нашлась вот такая схема:
http://www.yourbrainiacs.com/FILES/ReflashBIOS.doc
(на всякий случай я переложил к себе)

С одной стороны у нас Parallel Connector (DB-25) мы включаем его в “хост”, с другой – кастом на 6 пинов (7й – “ключ”). Также необходимо питание 2.8 – 3.6 вольта для микросхемы биоса.

У меня куда-то пропал припой, но зато нашёлся старый принтерный провод и новый USB коннектор. Жестокое насилие над проводами, которые больше не смогут выполнять своё старое предназначение, несколько часов времени с мультиметром и выяснением – какой провод к какому штырьку подходит и я узнал правильную комбинацию для скрутки проводов. В качестве питания я взял обычную “таблетку”, она выдаёт как раз нужные 3 вольта. Провода от батарейки прикрутил в уже существующую скрутку – “-” к скрутке двух проводов (2<->18), “+” – к свободному проводу.

Получилось вот такое чудо:

Загрузил “хост” компьютер загрузочным диском от win98 и запустил прошивалку – она почему-то выдала unknown manufacturer о производителе чипа, попытался прошить – не получилось.
Как оказалось, у USB разъёма оба чёрных провода (земля) соединены, а я их использовал.. Хорошо, хоть ничего не сгорело. Пришлось полностью отсоединять и заново делать скрутку.

Рекомендую следующий рецепт подключения USB проводов к параллельному кабелю:

SPI штыри:
2 4 6
1 3 5 X

USB штыри:

К Б З Ч
К Б З Ч

1 (Красный, свободен)
3 (Белый, к 7 штырю)
5 (Зелёный, к 10 штырю)
7 (Чёрный, не используется)

2 (Красный, к 18 штырю)
4 (Белый, к 8 штырю)
6 (Зелёный, к 9 штырю)
8 (Чёрный, не используется)

Запускаюсь – ура, чип написало правильно SST 25VF080B id=BF258Eh, прошиваю биос (spipgm2 /p bios.rom), включаю жертву – не работает. Ок, запускаю заново прошивку, но в этот раз уже в медленном режиме (spipgm2 /s bios.rom), проходит время, готово. Запускаю жертву – не работает, чешу репу, отключаю кабель прошивки, запускаю ещё раз – о чудо – она ожила! Сколько усилий не пропало напрасно, ура!

Теперь пошаговая инструкция по прошивке:
Жертва, в моём случае, успешно прошилась, когда к ней был подключён блок питания, но сам компьютер не был включён (т.е. просто светится лампочка на матери, но вентиляторы не крутятся).

1. spipgm2 /i (узнаём, что у нас там за чип)
Тут важно увидеть, что чип обнаружился правильно и его id != 0xFFFFFF, иначе либо жертва включена, либо что-то с кабелем

2. spipgm2 /u (разблокируем чип)
3. spipgm2 /e (удаляем старую прошивку – это обязательно надо сделать)
4. spipgm2 /s bios.rom (пишем новую прошивку под названием bios.rom)

5. spipgm2 /d dump.rom (optional, считываем биос с жертвы, чтобы проверить)
6.1 Желательно иметь программку для сравнения бинарных файлов, я нагуглил cmp16.exe
6.2 cmp16 /r bios.rom dump.rom

Убеждаемся в том, что биосы идентичны, отключаем кабель, включаем жертву и радуемся! 🙂

Уточню – я не включал никакие сопротивления и конденсаторы в схему, о которых писали на англоязычных сайтах – всё отлично прошивалось и без них. Также отлично работала просто скрутка из проводов, без шлейфа и пайки (хотя провод я пропаяю и нормально заизолирую).

В общем шить биос при помощи такого кабеля не намного сложнее, чем пользоваться утилитой биоса, но всё же лучше не доводить до необходимости его применения 🙂