Убили ПЗУ на WD FbLite - можно ли восстановить данные?

Заметка была существенно отредактирована, т.к. сперва в прибежал в истерике руководитель конторы о которой шла речь с воплями "это не мы, УДОЛИ!!!", потом понабежали гуру с воплями "Зачем вываливать секреты в общий доступ?!?!?" по итогам пришлось идти всем на встречу.

Не проходит и дня, чтобы в нашу лабораторию не принесли раскуроченный диск после очередной «Лаборатории №1» которых только в одной Москве уже штук сто насчитывается. Большинство с диагнозом «не сделать», и нередко выясняется, что сделать очень даже можно. По итогам одного такого успешного восстановления и родилась эта заметка.

Итак, ещё в начале прошлого года заказчик из Владивостока передал на восстановление файлов HDD Western Digital Elements модели WD10JMVW-11AJGS0 семейства FBLite сопроводив историей:

Предварительная диагностика в другой компании 1) Адаптация внешнего диска USB к интерфейсу SATA 2) Неисправность блока магнитных головок. После попытки проведения работ, дали новое заключение «неисправна ПЗУ» и отрицательный ответ на восстановление.

Получив диск, провели первоначальную диагностику.

Действительно, неисправна одна из головок чтения\записи из 4-х и что самое печальное, «убита» микросхема ПЗУ.

При полностью исправной плате электроники такая картина может означать с 99% вероятностью только одно — неквалифицированные работники «Лучшей лаборатории в России» в процессе «адаптации внешнего диска USB к интерфейсу SATA» микросхему ПЗУ попросту сожгли и умыли руки. Проблема заключается в том, что на жёстких дисках Western Digital линейки FBLite в ПЗУ содержится уникальный для каждого конкретного диска модуль, содержащий подстроечные таблицы (адаптивы) для блока голов. Без него, с чужой ПЗУ диск будет либо стучать, будучи не в состоянии спозиционироваться по сервометкам, либо просто не читать ни служебную ни пользовательскую области. Учитывая что потеря ROM на Western Digital не является типовой проблемой, готового решения на тот момент у нас не было.

Отвлекаясь в сторону, часто клиенты звонят с вопросами типа «а у вас был опыт с тем-то и тем-то?», в то время, как совершенно не важно, был ли тот или иной конкретный опыт или нет, гораздо важнее наличие головы на плечах и стремления решить поставленную задачу. Вот, у «мега-лаборатории №1 в мире» опыта не было, микросхему прибили, и всё — «не сделать». У нас такого опыта тоже не было, но как говорится, кто не хочет ищет причину, а кто хочет изыскивает возможности. Мы — хотели. И взялись за исследования.

Достаточно быстро выяснилось, что адаптивы находятся совсем не там, где пишут другие специалисты №1 в своём ПО.

Дальше был разобран блок адаптивов, который описывает смещения для чтения\записи по каждой из голов пакета в отдельности.

Очевидно, что нужно подобрать такие параметры, при которых получится считать копию ROM из service area диска. Но каждый раз писать ПЗУ, дёргать питанием, проверять, учитывая что диск полуживой и каждый новый цикл старт-стопа несёт определённые нежелательные риски, идея не из лучших. Значит надо искать область ОЗУ в которую помещаются таблицы из ПЗУ при стартовой инициализации и вносить правки непосредственно там, применяя их «на лету», без перезапуска диска.

Найдя нужный фрагмент в ОЗУ и поняв, что в отличие от изменения карты голов, где успешно работает Soft Reset, для применения изменения адаптивных настроек в ОЗУ требуется другая технологическая команда, добились изменения адаптивов на запущенном HDD. Ну а дальше, дело техники, в ОЗУ вписываются усреднённые значения адаптивных таблиц, применяются изменения, делается проверка чтения SA по 0 и 1-й головам в области с минимальной плотностью записи, исходя из поведения диска вносятся коррективы, тут же на ходу они применяются и проверяются, сначала с большим промежуточным шагом значений, потом всё меньше, и так до тех пор пока диск хоть и с трудом, но читает нужный служебный модуль. Получив его, записываем «родные» значения в ПЗУ и после рестарта проблема устранена — доступ к чтению микрокода для старта диска получен.

Этот трюк, кстати, можно с успехом применять для процедуры hot swap на подобных дисках WD, когда на диск-донор пишутся нужные модули от пациента, после power off\on «на ходу» в ОЗУ записываются адаптивы от пациента же и плата без снятия питания переносится на повреждённый диск который не может самостоятельно стартовать даже в технологическом режиме, и производится вычитывание пользовательских данных.

Дальше было нудное и сложное вычитывание, согласование, задержки с оплатой этапов работ со стороны клиента, и т.п. И вот, по итогам от довольного заказчика получен очередной Google отзыв:

Остальные отзывы о нашей работе, кстати, тут.