Програмный ремонт жёстких дисков HDD (Програмный (и не только) ремонт классических жёстких дисков HDD /Seagate /Samsung /IBM /Hitachi /HGST /Western Digital)

FAQ, мануалы, полезные ссылки
i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Сообщение i8088 » 18.04.2018,21:47

В докуметации от BVG есть кое-какое описание команд на уровне A>.

Там встречается термины LPL (logical cyl, physical head, logical sector) и PCHS (здесь все
ясно). Диск вместо PCHS использует LPP (logical cyl, physical head, physical sector)
Cx,y Convert LBA to LPL and display to screen.
x - upper word of >16 bit address
y - lower word >16 bit address or the 16 bit address
Dx,y Convert LBA to PCHS and display to screen.
x - upper word of >16 bit address
y - lower word >16 bit address or the 16 bit address
Диск однако сообщает несколько иначе, так

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

A>C30,AA
 LBA 003000AA = LPL 000002DB.02.027A 
A>D30,AA
 KBA 003000AA = LPP 000002DB.2.0495
A>
Те, полный физический цилиндр диск не сообщает, но отдает физическую головку и сектор. Функции эти видимо не проверяют корректность ввода, и при вводе запредельных LBA дают
"интересные" номера.

В описании видимо ошибка, так команда <D> конвертирует не LBA->PCHS, а KBA->LPP

Обратные команды:
cx,y,z Convert LPL to LBA and display to screen.
x – Logical Cylinder
y – Physical Head
z – Logical Sector
dx,y,z Convert PCHS to LBA and display to screen.
x – Physical Cylinder
y – Physical Head
z – Physical Sector
Примеры:

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

A>c2000,1,50
 LBA 023A7516 = LPL 00002000.01.0050 
A>d2000,1,50
 KBA 023A790C = LPP 00002000.1.0050
A>
В описании аналогичная ошибка, по команде <d> конвертируем не PCHS->LBA, а LPP->KBA (или так только у GALAXY?).

Кстати, как правильно расшифровывается KBA - K??? Block Address ?


Если конвертировать LPP в KBA, и если сектор в дефект листе, то преобразование дает один
и тот же KBA для дефектного и соседнего с ним сектора. В случае группы дефектов, это
распространяется на всю группу.

Примеры.

1. В дефект-листе имеем 00107.1.1F0 001 (1 дефектный сектор на треке 107, head 1, sec 1f0)

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

A>d107,1,1f0
 KBA 00117029 = LPP 00000107.1.01F0
A>d107,1,1f1
 KBA 00117029 = LPP 00000107.1.01F1
A>d107,1,1f2
 KBA 0011702A = LPP 00000107.1.01F2
A>
2. В дефект-листе имеем 0102E.2.28F 003 (3 дефектных сектора на треке 102E, head 2,
начальный сектор блока дефектов 28F)

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

A>d102e,2,28f
 KBA 011200D2 = LPP 0000102E.2.028F
A>d102e,2,290
 KBA 011200D2 = LPP 0000102E.2.0290
A>d102e,2,291
 KBA 011200D2 = LPP 0000102E.2.0291
A>d102e,2,292
 KBA 011200D2 = LPP 0000102E.2.0292
A>d102e,2,293
 KBA 011200D3 = LPP 0000102E.2.0293
A>d102e,2,294
 KBA 011200D4 = LPP 0000102E.2.0294
A>

Я предположил, что этим можно воспользоваться для проверки, реально ли "работает" наш
перенесенный сектор в дефект листе. Проверим наш перенесенный сектор 10B76.2.228

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

A>d10b76,2,228
 KBA 10D8BAC1 = LPP 00010B76.2.0228
A>d10b76,2,229
 KBA 10D8BAC1 = LPP 00010B76.2.0229
A>d10b76,2,22A
 KBA 10D8BAC2 = LPP 00010B76.2.022A
A>d10b76,2,22B
 KBA 10D8BAC3 = LPP 00010B76.2.022B
A>
Из этого можно предположить, что транслятор работает с нашим "перенесенным" сектором должным
образом.

Почему же появились два дефекта UNC, разнесенные друг от друга?
Один бывший UNC LBA я сохранил, это 282638848, те 10D8BA00

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

A>D10d8,ba00
 KBA 10D8BA00 = LPP 00010B76.2.0167
Почему-то он расположен до сектора 288, даже с учетом съезжания транслятра на один сектор (хотя оно должно быть после сектора 288), мне непонятно.

Ну а второй UNC скорее всего первый годный сектор после бывшего последнего сектора трека, он
как раз должен попасть на первый ранее не использованный резервный сектор на треке, и на нем
видимо верного ECC не было, и необходимо выполнить запись, для правильного расчета ECC.

Таким образом, после выполнения A>P необходимо стирание поверхности.

Интересно проверить команды преобразований с секторами в G-лист, должен быть уход в резервную
зону
. С remap-ами у меня осталась одна TONKA2 160GB, когда скопирую с нее информацию,
попробую проверить.

SRUTSSSSSSSS80
Newbie
Сообщения: 16
Зарегистрирован: 11.04.2018,21:34

Сообщение SRUTSSSSSSSS80 » 18.04.2018,22:20

LEVEL A COMMANDS: Niwot Read/Write LBA Commands (FULLSLIP)
Command Description
Cx,y Convert LBA to LPL and display to screen.
x - upper word of >16 bit address
y - lower word >16 bit address or the 16 bit address

Dx,y Convert LBA to PCHS and display to screen.
x - upper word of >16 bit address
y - lower word >16 bit address or the 16 bit address

Ex,y Display Log(s)
See /2 E for further detail.
Mx,y Set GrandB Test ports
x – Test port to set
y – Value to set it to ( 0xff will disable the port )
Q,x Write/Read/Read LBA.
x – # of sectors to read
default - # of unslipped sectors on this LPL – this sector #
(rest of track , no wrap )
R,x Read LBA Command.
x – # of sectors to read
default - # of unslipped sectors on this LPL – this sector #
(rest of track , no wrap )
Sx,y,z Seek LBA Command.
x - upper word of >16 bit address
y - lower word >16 bit address or the 16 bit address
z - Track follow offset. Signed 16 bit integer
W,x Write LBA Command.
x – # of sectors to read
default - # of unslipped sectors on this LPL – this sector #
(rest of track , no wrap )
Yx,y,za Show/Set Retry Controls
See /2 Y for further detail.
cx,y,z Convert LPL to LBA and display to screen.
x – Logical Cylinder
y – Physical Head
z – Logical Sector
dx,y,z Convert PCHS to LBA and display to screen.
x – Physical Cylinder
y – Physical Head
z – Physical Sector

lx,y,z Display # of unslipped sectors for LPL to screen.
x – Logical Cylinder
y – Physical Head
z – Logical Sector

SRUTSSSSSSSS80
Newbie
Сообщения: 16
Зарегистрирован: 11.04.2018,21:34

Сообщение SRUTSSSSSSSS80 » 19.04.2018,20:30

Вот к примеру на ST3320620A
KBA 00000000 = LPP 00000018.0.0000
KBA 00100000 = LPP 000000B9.0.0063
KBA 00200000 = LPP 0000015A.0.0088
KBA 00300000 = LPP 0000021D.1.0040
KBA 00400000 = LPP 000002BA.1.002D
KBA 00500000 = LPP 000003AC.2.054F
KBA 00600000 = LPP 00000451.2.03A5
KBA 00700000 = LPP 000004F6.2.01F4
KBA 00800000 = LPP 00000569.3.0047
KBA 00A00000 = LPP 0000069C.3.0104
KBA 00C00000 = LPP 00000887.2.0100
KBA 00E00000 = LPP 000009D2.2.0461
KBA 01000000 = LPP 00000ACC.1.02D8
KBA 02000000 = LPP 0000167B.2.0344
КBA это логические сектора (LBA) . LPP физические -в координатах цилиндр.голова.сектор в шестнадцатеричном представлении естественно.

strelec
Member
Сообщения: 176
Зарегистрирован: 03.04.2018,17:33
Откуда: Сибирь

Сообщение strelec » 20.04.2018,07:09

При разгребании хлама попалась голая плата от hdd seagate(остался только двигатель).Идентификация получилась через номер на плате,да и маркировка на чипах -seagate.Подключил ,cntrl z и плата вышла в терминал )

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

Rst 0x10M
Drive failed to spinup!!!
ASCII Diag mode
F3 T>
ASCII Diag mode
F3 T>
На многие команды(те,что нашел в инете) ответ-

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

F3 1>B
LED:000000CC FAddr:00257077
CfwDiscCode Not Loaded: 0002B401
LED:000000CC FAddr:00257077
Есть и такое:

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

F3 T>
Sapta15.SATA.Gen3_0.Sphinx12.LENOVO.5K4.4K.MC
Непонятно ,причем тут леново?
Также

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

F3 1>e,f

Spinning Down

Spin Down Complete
Elapsed Time 0.130 msecs 
Delaying 5000 msec

Jumping to Boot Loader

Sphinx12 Boot ROM 1.0  (06/30/2008)
Copyright Seagate  2008

Boot Cmds:
 DS
 AP <addr>
 WT <data>
 RD
 GO
 TE
 BR <divisor>
 BT
  BN
 DL
 WW 
?
 RET
>
Тоже что-то интересное
На очереди- samsung wn310820a :)

KALDYH
Advanced Member
Сообщения: 2594
Зарегистрирован: 05.06.2009,16:37
Откуда: Кемерово

Вклад в сообщество

Сообщение KALDYH » 20.04.2018,08:31

strelec писал(а):Sapta15
Momentus Thin на 320 Гб, архитектура, как видно, F3. Это уже новая актуальная. Система команд сильно отличается от обсуждаемой здесь. Удачи в экспериментах!

i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Сообщение i8088 » 20.04.2018,09:30

SRUTSSSSSSSS80 писал(а):КBA это логические сектора (LBA) . LPP физические -в координатах цилиндр.голова.сектор в шестнадцатеричном представлении естественно.
Спасибо! А как эта KBA аббревиатура расшифровывается?

strelec
Member
Сообщения: 176
Зарегистрирован: 03.04.2018,17:33
Откуда: Сибирь

Сообщение strelec » 20.04.2018,18:04

KALDYH писал(а):Momentus Thin на 320 Гб, архитектура, как видно, F3. Это уже новая актуальная. Система команд сильно отличается от обсуждаемой здесь. Удачи в экспериментах!
Для экспериментов надо живой поискать F3. Прочитал,что на них даже селфскана нет.
Единственное,это плату использовать как программатор памяти.Но возможно ли сливать и записывать пзу с нее,такой информации пока не нашел.
Сегодня дошли руки до st340014.Слил все ресурсы.Все получилось.Также пробовал программу STHDDRepair,все работает.Но прога не заморачивается с длиной служ. трека ,льет его целиком
(280 sect).Сравнивал результаты с стмем.
KALDYH писал(а): Если этот FAQ поможет людям сэкономить эту пару лет и сходу починить хотя бы несколько дисков - я буду считать, что я не зря старался.
Спасибо за структурированную информацию.Я действительно сэкономил время на изучение.
Конечно,есть много непонятного.Но тут уже надо время.На переваривание и осмысление.
И практика,практика! :)

SRUTSSSSSSSS80
Newbie
Сообщения: 16
Зарегистрирован: 11.04.2018,21:34

Сообщение SRUTSSSSSSSS80 » 20.04.2018,20:30

strelec писал(а):Прочитал,что на них даже селфскана нет.
есть, но дорого.
strelec писал(а):.Также пробовал программу STHDDRepair,все работает.Но прога не заморачивается с длиной служ. трека ,льет его целиком
(280 sect).Сравнивал результаты с стмем.
там можно лить и треками и объектами.
в HDDINFO.TXT ошибка есть, и его можно дополнять.

// APP = SA offset the starting sector number of sectors buffer
// APP only need to fill the buffer, it can not fill
// CERT0 = SA offset the starting sector number of sectors [SA offset the starting sector number of sectors]
// CERT1 = SA offset the starting sector number of sectors
// CERT0 data for 0, CERT1 for a data
// TABLE = SA offset the starting sector number of sectors
// ATA = SA offset the starting sector number of sectors
// VEN = SA offset the starting sector number of sectors
// All values are in hexadecimal
// Can be added according to their needs

[4200.2 MERCURY]
APP=16 0 1A0 60
CERT0=64 0 1F2
CERT1=66 0 1C6
TABLE=66 1C6 16
ATA=68 0 7C
VEN=6C 0 12

[5400.2 MERC2]
APP=10 0 238 60
CERT0=3E 0 31A
CERT1=3E 0 EE
TABLE=42 18D 17
ATA=44 0 80
VEN=48 0 12

[SNOWMASS]
CERT0=09 0 100
ATA=0A 0 110
VEN=0C 0 100

[5400.3 VENUS]
APP=16 0 238 60
CERT0=66 0 277
CERT1=66 0 1B1
TABLE=6A 13B 17
ATA=6C 0 94
VEN=70 0 12
по A>P нужно предварительно перенести дефекты в Р-лист, потом (очистка СМАРТ иначе показания останутся) и уж потом 2>G7,3
https://cloud.mail.ru/public/6JUB/g1tcn82N9
i8088 писал(а):А как эта KBA аббревиатура расшифровывается?
хз, знаю что это LBA, не тот что в паспорте, а реальный, вообще большинство терминов есть в в патентах

strelec
Member
Сообщения: 176
Зарегистрирован: 03.04.2018,17:33
Откуда: Сибирь

Сообщение strelec » 21.04.2018,14:56

SRUTSSSSSSSS80
Спасибо за F3RepairTools,пригодится))
Я не нашел там чтения пзу.
SRUTSSSSSSSS80 писал(а):там можно лить и треками и объектами.
в HDDINFO.TXT ошибка есть, и его можно дополнять.
Я не совсем понимаю,что такое объект в данном случае.
И что за ошибка в HDDINFO.TXT закралась :

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

[ALPINE_3.XXX]
APP=15 0 180 80
CERT0=29 0 240 
TABLE=29 240 11
ATA=2A 0 5D 
VEN=2C 0 12

i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Сообщение i8088 » 21.04.2018,17:13

strelec писал(а): Я не совсем понимаю,что такое объект в данном случае.
Под объектом я понимаю то что загружается в память, и используется
CPU. Те трек это просто целиком трек, он может включать в себя объект,
объекты или часть объекта.

Например на треке ovl у TONKA40 содеожатся два overlay и байты
заполнители, а объект cert занимает целиком один трек и часть другого,
итд.

i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Сообщение i8088 » 21.04.2018,19:02

i8088 писал(а): Интересно проверить команды преобразований с секторами в G-лист, должен быть уход в резервную
зону. С remap-ами у меня осталась одна TONKA2 160GB, когда скопирую с нее информацию,
попробую проверить.
Проверил - неверно. Да и это и очевидно, ведь при remap сектор отмечается как reassign, и
это вызывает уход в резервную зону при обращении к нему (таким образом нельзя скрыть
IDNF). Соответственно команда преобразования d (LPP в KBA) не замечает remap-ы.

Ответить