Artem Makarov aka Robin
09.11.2013
38824 просмотра
Еще одна непростая проблема с сигейтами, которую удалось решить с помощью так называемой прошивки HDD Seagate (загрузки микрокода по интерфейсу).
На сей раз - ноутбучный HDD ST9500325AS при подаче питания на слух рекалибруется, висит в BUSY, в диагностический порт выдает только:
Rst 0x08M
И всё. Терминального функционала после старта нет, так как диск зависает. До меня диск был в другом месте, где ему поменяли блок головок (обычно так всегда, если не понимают, что с винчестером не так, сразу меняют головы - на всякий случай). Само собой, в деле восстановления пользовательских файлов замена голов чтения\записи в данной ситуации никак не помогла и диск принесли в СЦ "Хардмастер".
Терминальный функционал на данной линейке накопителей заложен производителем в код ПЗУ, включается после подачи питания на интерфейс. Выглядит это таким вот образом:
Rst 0x08M RW cmd 002F req = 18 F0 9F E5 18 F0 9F E5 18 F0 9F E5 18 F0 9F E5 18 F0 9F E5 00 00 A0 E1 opts = 00000000 RW Err = 84150180 ASCII Diag mode F3 T>
Т.е. ошибка позиционирования по сервометкам, остановка шпиндельного двигателя и готовность в регистрах с готовностью отвечать на терминальные запросы. В такой позиции можно командой раскрутить двигатель, поднять с поверхности diag ovl и прочитать по АТА все описанные по id модули, а так же все модули, описанные в system volume. Все модули считались без ошибок, и на первый взгляд не содержали в себе ничего крамольного, что могло бы приводить к зависанию накопителя при штатном старте.
Сразу возникло подозрение на сбой в таблицах трансляции, но попытка пересчёта привела к такому результату:
Max Wr Retries = 00, Max Rd Retries = 00, Max ECC T-Level = 14, Max Certify Rewrite Retries = 2DF8 DiagError 0000500D User Partition Format Failed - Elapsed Time 0 mins 00 secs R/W Sense 00000002, R/W Error 843200A2, File Error 00000000 Blk Addr AD6F0001, Blk Addr Type D0, Cyl FFFF0000, Hd EC
Т.е. закончилась с ошибкой. После некоторых раздумий было принято решение кардинальное. Учитывая, что все необходимые части служебной информации были успешно зарезервированы ранее, я решил полностью отформатировать служебную область. Получив по окончании процесса:
System Partition Format Successful - Elapsed Time 2 mins 00 secs
я передернул питание, и диск вышел в готовность с "пустым" заводским паспортом. В такой позиции любая операция чтения\записи служебной информации приводит к сообщению о неготовности к процессу, по причине отсутствия "расширенных" команд в "базовом" микрокоде ПЗУ.
Unable to load Diag Cmd Processor Overlay
Для того, чтобы получить полный функционал в такой ситуации, требуется записать оверлеи на поверхность, чтобы диск их считал. А для того, чтобы получить возможность произвести запись на поверхность диск должен их прочитать ранее. Замкнутый круг. Как найти выход из такой ситуации?
Вариант, учитывая что в ситуации с отформатированной служебкой диск выходит в готовность по интерфейсу штатно, один - используя команду id92h загрузить в HDD лоадер, т.е. пакет микрокода, содержащий в том числе и требуемые оверлеи, и тем самым, как говорят, перепрошить жесткий диск Seagate.
После этой операции пересчет транслятора завершился успешно
Max Wr Retries = 00, Max Rd Retries = 00, Max ECC T-Level = 14, Max Certify Rewrite Retries = 2DF8 User Partition Format Successful - Elapsed Time 0 mins 00 secs
И, финальный штрих - запись ранее сохраненного транслятора (id2Bh). После переподачи питания диск выдал привычное:
Rst 0x08M (P) SATA Reset
и полный доступ ко всем LBA, описанным в паспорте. Если бы до того, как диск попал ко мне, пытливые ручки не залезли бы в гермозону, то с помощью описанных выше манипуляций можно было бы произвести ремонт жесткого диска с сохранением информации.
Seagate Barracuda 7200.11 – принципиально новая серия жестких дисков фирмы Seagate, в которой производитель попытался объединить технологии производства накопителей ATA и SCSI. В новом семействе механика была перенесена из жестких дисков с интерфейсом ATA, а значительная часть архитектуры микропрограммы была перестроена из SCSI накопителей Seagate.
Однако, наряду с полезными эффектами от объединения, в новую архитектуру перешел ряд "наследственных" болезней обоих предков, с которыми покупатели уже не раз обращались в компьютерный сервис по ремонту и восстановлению жестких дисков. В частности, это проблема, связанная с повреждением транслятора.
Желание компании Seagate быстрее выпустить новый продукт на рынок привело к появлению серии жестких дисков, с целым рядом недоработок и проблем. Именно поэтому владельцы HDD Seagate Barracuda 7200.11 часто сталкиваются с проблемами выхода из строя своих винчестеров.
В один прекрасный день винчестер может начать медленнее работать или даже зависать. А после перезагрузки может не определиться в BIOS, при этом винчестер постоянно находиться в состоянии BUSY.
Данная неисправность HDD может быть вызвана следующими причинами:
В случае повреждение служебной информации жесткого диска микропрограмма управления блокирует его работу. Терминал управления винчестером в этом случае выдает код ошибки "LED:000000CC FAddr:0024A051", после чего жесткий диск перестает реагировать на какие-либо команды извне (или определяться в BIOS).
Устранить эту ошибку можно только при помощи специального оборудования для ремонта винчестеров и восстановления данных (например комплекс PC-3000), через терминальный интерфейс, подключившись к HDD напрямую и выполнив пересчет транслятора. Как правило, после этого жесткие диски Seagate Barracuda 7200.11 могут работать еще какое-то время.
В сети существует информация, что виной всему микропрограмма управления (firmware) и для того, чтобы восстановить винчестер Barracuda 7200.11 достаточно обновить прошивку в контроллер винчестера. Несмотря на то, что компания Seagate выпустила обновление микрокода для этой модели, перепрошить нерабочий винчестер не получится!
Наши советы:
Жесткий диск обычно корректно отображается в BIOS (в зависимости от типа BIOS-а может не определяться, определяться неправильно, выдавать сообщение: "HARD DISK ERROR"), однако объем его определяется как нулевой, а значит, работать с ним невозможно и требуется соответствующий ремонт и восстановление данных.
Причиной данной неисправности может быть:
Что не нужно делать, для восстановления данных:
Стоит отметить, что встречаются такие проблемы у следующих моделей:
Заклинивший вал шпиндельного двигателя - наиболее частая проблема, которая может возникнуть после удара или падения жесткого диска. Если заклинило двигатель, то на ощупь эту неисправность можно обнаружить по характерной вибрации гермоблока при подаче питания.
Что нельзя делать:
Для восстановления данных (о ремонте в таком случае речь не идет) требуется перенос всего пакета дисков в гермоблок-донор. В случае повреждения магнитных головок, требуется замена блока магнитных головок с диска-донора.
В некоторых ситуациях проблема может осложняться изгибом вала шпиндельного двигателя, а от удара на поверхности диска могут образовываться задиры, которые выведут из строя блок магнитных головок при первом же включении HDD.
Для тех, у кого есть Arduino: соединяем GND
и RESET
, используем контакты RX
и TX
.
Для проверки схемы можно замкнуть RX и TX , - в результате все, что мы введем, должно вернуться.
Для работы с COM-портом я использовал PuTTY , с задачей также отлично справится ваша любимая программа. Итак, открываем PuTTY, выбираем тип подключения Serial
, вводим порт и остальные настройки:
Speed | 38400 |
Data Bits | 8 |
Stop Bits | 1 |
Parity | None |
Flow Control | None |
Важно : соблюдайте регистр при вводе команд!
Сейчас я описал ситуацию, когда все работает, как надо, но так получается редко. В процессе восстановления возникло несколько трудностей, с которыми, я уверен, вам тоже предстоит столкнуться. Поэтому, все у кого что-то не получилось, ищите решение в последнем разделе этой статьи.
Проблема | Решение |
Шум в консоли | Подключите контакт GND к «земле» на блоке питания. Я использовал провод от клавиши включения. Также вытяните джампер SATA I из жесткого диска. |
На экране после нажатия Ctrl+Z ничего не появляется | Скорее всего, неправильно подключены RX и TX . |
При первом включении появляется ошибка LED:000000CC FAddr:0025BF67 или LED:000000CC FAddr:0024A7E5 | Сначала попробуем отключить головки. Для этого откручиваем плату (заодно можно и почистить контакты ластиком: у меня там было очень много грязи), подкладываем изолятор (бумага, изолента и т.д.) на контакты, ведущие к головкам, и обратно прикручиваем плату (не всеми винтами, а так, чтобы было питание на мотор). Включаем питание, нажимаем Ctrl+Z
, вводим /2
, потом Z
. Ждем сообщение об успешной остановке. Spin Down Complete
Elapsed Time 0.138 msecs
Не отключая питания, откручиваем плату, достаем наш изолятор и прикручиваем обратно плату, вводим команду запуска двигателя: U
. Если не помог метод отключения головок, нужно замкнуть контакты на плате острым пинцетом или тонким проводком. На фото (доступны по ссылкам ниже) показаны точки замыкания на разных жестких дисках. |