Восстановление данных с HDD Samsung HM100UI

Из Казахстана, г. Костанай, прислали на восстановление информации неисправный жёсткий диск Samsung HM100UI семейства MT2. При подаче питания не раскручивает шпиндельный двигатель.

Как водится, понесли к кому-то из местных, там поменяли плату с переносом м\с ПЗУ, — ничего не поменялось. После чего был сделан вывод «тут нужен специалист», и диск поехал с помощью транспортной компании СДЕК к нам.

При подаче питания в диагностический порт выдавалось характерное сообщение:

ActiveFW : 00
FWVer : 0001
DDR size detected = SIPC status: 00001002
SERVO
Unpack Fail

Что свидетельствует о наличии повреждений в модифицируемой части ПЗУ — модуле FIPS. Был у инженеров Samsung-а такой баг в микрокоде. Пофиксить не успели, продались Seagate, что привело к увеличению количества ошибок в т.н. «прошивках» в разы :)

ПЗУ записано в м\с Winbond 25X40AL 512x8.

Для того чтобы получить доступ к пользовательской информации первым делом выпаиваем микросхему и читаем её содержимое на программаторе.

Проверяем считанный дамп:

   Dump Information
   Dump Size............................... : 524288 bytes
   CheckSUM................................ : Ok
   FIPS CheckSUM........................... : Error
   Firmware................................ : 2AMz19zM.161
   Platform Id............................. : 0x3D
   Heads Map............................... : 0, 1, 2, 3, 4, 5

Находим смещение модуля, исправляем контрольную сумму.

Проверяем:

   Dump Information
   Dump Size............................... : 524288 bytes
   CheckSUM................................ : Ok
   FIPS CheckSUM........................... : Ok
   Firmware................................ : 2AMz19zM.161
   Platform Id............................. : 0x3D
   Heads Map............................... : 0, 1, 2, 3, 4, 5

Теперь дамп можно записывать в ПЗУ программатором обратно. Припаиваем микросхему на её законное место, прикручиваем плату к гермоблоку, даём питание:

ActiveFW : 00
FWVer : 0001
DDR size detected = 8MB
SATA PLL cal done
*PA VID=0008 PN=0000 Rev=0006
*PA VID=0008 PN=0000 Rev=0006
U
S_0SSC EN
SO_1
SSC EN
IS=1
CLA #36/120
Handoff RPM=441
SPOK
SR:46 SS:00000280
mS1 00000003 
A1O=106 A1G=425
O=515 S=4 
SK C:  5358 H:0
Loaded FIT ( 0: 0: 1)
CalibTable Loaded. Rev:0x1B
ResoTable Loaded. Rev:0x01
RRO1xTable Loaded. Rev:0x01
Fw Active 0000
Ovly loaded to 0x00014D00
Ovly loaded to 0x1002E300
FdtTable Loaded. Rev:0x02
Reading Serial Num Pass
Up MC

PwrOn RRO1x @ H0
Table) cos = -291840, sin = -1421312
Coeff) cos = 177126, sin = -100127

DiskSlip : 177 [SrvTrk]
DiskSlip : 190 [SrvTrk]

PwrOn RRO1x @ H2
Table) cos = -500736, sin = -1217536
Coeff) cos = 494156, sin = -299286

DiskSlip : 161 [SrvTrk]
DiskSlip : 185 [SrvTrk]

PwrOn RRO1x @ H4
Table) cos = -497664, sin = -1215488
Coeff) cos = 260804, sin = -255056

DiskSlip : 160 [SrvTrk]
DiskSlip : 184 [SrvTrk]
TgtCyl:     832 
Hd:   4 Zn:   0 Avg.:-     94 
TgtCyl:  205328 
Hd:   4 Zn:   1 Avg.:     683 

SVCAL(0080,0000)-->PASS
RecordValid Ok : 4107E47D 0107E41D
ReadyTime = 6072305 us
ENG>

Запрашиваем Drive ID:

Диск готов к выгрузке пользовательских данных.