Data recovery and disk repair questions and discussions related to old-fashioned SATA, SAS, SCSI, IDE, MFM hard drives - any type of storage device that has moving parts
Post a reply

Re: WD2000JD problem

April 10th, 2013, 19:06

and....H1 died again (after playing with MRJog for H0..did a reset and on spinup heard some loud clicks and when testing... H1..was dead). :| . I think it's a random hardware problem.

Re: WD2000JD problem

April 11th, 2013, 1:56

..and no hardware tools to help discover the problem. :)

however, I don't have any scope at this time. so quit telling me to send my hdd to a pro :lol: I'm chasing for a new donor..and meanwhile..I learn things and develop further my application.

I'm sure that someone, sometime will find useful info on this topic.

Re: WD2000JD problem

April 11th, 2013, 2:24

Spildit wrote:Did you manage to "revive" the head ?

nop. but for few hours I had that head working. tried to perform all the actions I did before it worked..with no success.

there isn't also a cold/hot problem. told ya that I had few times when the read channel was entirely dead (for all heads). the hdd was badly damaged when it fell down. perhaps it's a alignment problem with the hsa, platters etc.

I think I''ll try the kill head1 again. I need 2 SA valid heads to test my app, on.

Re: WD2000JD problem

April 11th, 2013, 13:07

fzabkar wrote:
GreenWD wrote:...it's obvious that louis enjoys the intellectual exercise. Good luck to him.


Good point! :D

@Louis

You shouldn't mess with both heads adaptives at the same time.

BTW, I like your work.

Re: WD2000JD problem

April 11th, 2013, 13:41

here's a picture with mod 47 (ROM adaptives for a 4 headed drive) pre ROYL.

you can play with those MR Jog values to see when the head can't read. those values are also present in SA mod 41..so you'd better try the operation in safe mode.

from what you see..all balance around +- 0x600 value.

it will be nice to find..how those values are generated. since it's head-dependent..there must be a factory module to "tune" and gen those values.
Attachments
mod47.png

Re: WD2000JD problem

April 12th, 2013, 17:11

I have depoped the H1..and re-dimension the max LBA..so from 200Gb now shows 150. I can work with it and test my app on a good SA.

the second drive it's a pre- "marvel" model. I believe the firmware prior to 2004 wasn't so standardized. this model doesn't have a mod 0A from where to get the head map..like newer version so called marvel..or later..royl. in this case I get the head map from ATA ID. however..in this case I can't read the H4 although it presents as having 4 heads.

C...\Debug>wdt -did 00
Model:.............WDC WD1200LB
S/N:...............WD-WCAMT131983
FW Rev:............08.05J0
Size:..............293041476 sectors (150.04 GBytes)
Family:............ID_BUCCANEER (91)
Drive Type:........0 (Desktop 3.5 Inch)
Rom Frmw Rev:......08.3AJ
Rom Type:..........5 (Serial Flash)
Platter count:.....2
Heads count:.......4
Heads used:........3
Head map: H0->H3 1 0 0 0 1 1
Zones count:.......21
Servo wedges:......216
SA cyl count:......64
Spindle rpm:.......7204
Used cylinders:....103520
Format ver:........1
Interface Type:....2 (Serial ATA)
PCBA Revision:.....3

C...\Debug>wdt -did 01

Model:.............WDC WD1600JD-00GBB0
S/N:...............WD-WMAES4018073
FW Rev:............02.05D0
Size:..............312581808 sectors (160.04 GBytes)
Family:............ID_POLARIS (73)
Drive Type:........0 (Desktop 3.5 Inch)
Rom Frmw Rev:......02.1SD
Rom Type:..........5 (Serial Flash)
Platter count:.....3
Heads count:.......6
Heads used:........4
wd_smart_write_log: error register is on. aborting...
VSC error code not decoded for : 0x0410
wd_get_drive_module: send_wd_cmd failed, aborting
Head map: H0->H6 1 1 0 0 1 1
Zones count:.......21
Servo wedges:......180
SA cyl count:......32
Spindle rpm:.......7200
Used cylinders:....87922
Format ver:........1
Interface Type:....0 (UnKnown)
PCBA Revision:.....0

Re: WD2000JD problem

April 12th, 2013, 22:39

louis wrote:in this case I get the head map from ATA ID. however..in this case I can't read the H4 although it presents as having 4 heads.


the head is there..only that it's not readable in SA. I tested the readability for positive tracks and it reads fine. perhaps the head's zone 0 wasn't formatted. :roll:

I'm aware of performing write/sector to test the head..could lead to data destruction since I don't know what's there. until I learn more..(where it' safe to test head write) I'm keeping myself at a distance from writing SA :)

Re: WD2000JD problem

April 13th, 2013, 11:46

the LBA size I set it manually. 3/4 * original; checked that "clear translator" when depop. then I did a full format with p list. then a SS. however I don't know what happened because the P/G lists are empty now. I tried a logical scan.and stopped at 1% because it was horrible long. I have now 2 good heads on SA where I'm interested. for the moment I'm not interested in the rest of the disk area. I'm happy that it's stable and no more clicks and other ugly sounds.

for the so called "marvel" drives...(like mine) there isn't a module holding the rom image...as for the royl. for the royl models I think it will be easy..let's say if you find a closer PCB and you can access the SA with it..then read the rom backup modules..and compose original rom image.

Re: WD2000JD problem

April 13th, 2013, 15:48

Spildit wrote:How did you set it manualy ? Using 3.0 or editing ROM with hex editor ?
SS can take days ..... also you have to stop it using ss stop at the end ...


3.0 :) although I don't know at this moment what those LBA1-LBA3 means..I set all 3 at 3/4 of original size..after cutting one head.

Re: WD2000JD problem

April 13th, 2013, 21:11

current supported options in my app :)
interface: console
OS: XP or later.

Code:
*********************************************************************************************
*       WDT ver 0.4 alpha - a tool for western digital HDD firmware
*********************************************************************************************

  WARNING: please disable/delete/uninstall the drive you operate on from device manager

        usage: wdt.exe [-scan] [-dumprom <dev>] [...] [-v]

  -scan                 : scan for IDE/ATA compliant devices on default ports 0x1F0, 0x170
  -did [dev]            : identify drive - vendor specific command; show heads, platters frm etc. [dev] defaults to 00
  -sadir [dev]          : show modules found in SA by parsing directory module.
  -dumprom <dev> [t]    : dump rom; dev = 00 first number = channel, second  0=master, 1=slave; t=1 autodetect (default),t=2 128k t=3 196k
  -dumpddt <dev> <nr>   : dump drive data table; dev = 00 etc; nr= table number (dec)
  -dumpmt <dev> <nr>    : dump memory table; dev = 00 etc; nr= table number (dec)
  -dumpmem <dev> <s><l> : dump MCU's RAM memory, dev =00 etc, <s>=start ex. 0xffff000 <l>=lenght (hex)
  -dumpmod <dev> <nr>   : dump a resident module; dev = 00 etc; <nr>= mod number (hex)
  -dumpsat <dev> <t> [h]: try read and dump track t with headh h=0 from SA (reserved area)
  -ldpovl <dev> <f>     : load permanent overlay to RAM; dev = 00 etc; <f>= mod file on local hdd
  -uprom <dev> <f> [t]  : flash rom with a firmware file; dev = 00 etc; <f>= path to firmware file on local hdd [t] same as dumprom
  -upmod <dev> <f>      : load drive module to SA; dev = 00 etc; <f>= mod file on local hdd
  -delmod <dev> <nr>    : delete drive module from SA; dev = 00 etc; <nr>= mod number
  -bkall <dev>  [t]     : backup the rom firmware and Service Area modules; rom type t=2... 128k t=3... 196k rom etc
  -ckmod <dev> [t]      : check module with vsc command (hardware)...t = module number (hex)
  -ckall <dev>          : check all mods found in SA (hardware)
  -ckalll <d> [m]       : check all mods locally by parsing [m]=mod_01.bin in directory <d>; all mods must be present inside <d> (software)
  -cksat <dev> <t> [h]  : check if track t on head h in reserved area (SA) is readable; track must be negative numbers
  -spinup <dev> [t]     : spins UP or DOWN the servo...t=1 => UP t=0 => DOWN
  -reset <dev> [t]      : reset the device...t=1 Immediate; 2 Spindown and reset; 3 Soft Reset
  -puisr [dev]          : get the current configuration for Power-up in standby; check why PM2 doesn't let you enter PUIS
  -puisw <dev> [t]      : set the current configuration for Power-up in standby: 1=PM2 controlled; 2=PUIS enabled PM2 ignored;
                          3=PUIS disabled,PM2 ignored; 4=PATA PUIS enabled PM2 ignored
  -puisup [dev]         : use this if your drive doesn't spin because PUIS flag it's set to 2 and -scan prompts for device in PUIS mode
  -smarte <dev> [t]     : enable or disable smart t=1 enable t=0 disable
  -smart [dev]          : show hard disk drive smart status; use -smarte if you get an error
  -vstat [dev]          : vendor specific status for a wd hard disk drive
  -dreg [dev]           : show controller registers
  -v                    : verbose output
  -h                    : print this help

Re: WD2000JD problem

April 23rd, 2013, 22:17

waiting for a new donor to appear. meanwhile I started to port my console app to a windows GUI app.

Re: WD2000JD problem

April 26th, 2013, 10:08

got my hands on a ROYL drive. (donor+patient) :) few year ago it was taken to a DR and back due to missing donor. the DR spec. told that it requires a donor. the owner got it back and didn't done anything with it till today...although meanwhile he found a donor. initial, the patient wasn't even spinning. the owner was surprised when we plug it on and the drive came ready in K.M. I can access the SA, read all mods..and all are "green" when checking with VSC firmware function. he said..well look that in fact the DR did something to it. :)

what I noticed is that with this ROYL, I can't perform basic vsc commands like spin up/down...in kernel mode. it complains about perm ovl not loaded, thing which didn't happened on "marvel" models, where I was able to spin down the drive before unplug it.

I tried to load its mod 11...and it throws "not compatible" error. also with donor's mod 11.

so the DR specialist flashed somehow other rom firmware which isn't compatible with the SA modules.

I have to regen the rom firmware, I mean. to code my app to do this.

had a look at mods 102-109 and are all there, just fine. I have to figure how to stick them together. Maybe I should extract the rom backup mod (0x010x)..flash it..and then flash the other rom mods...after changing internal names. this way I hope it will handle internally the mod location/positioning at the eof rom.

teh big problem is that the hdd it's with "masked" rom. so if I screw it up..I cannot use external programmer :D

Re: WD2000JD problem

April 26th, 2013, 16:16

I've put the donor's PCB to the patient and windows found it. however...it doesn't work to well...it blocks and hangs during file transfer. I believe that the donor's rom version it's closer to patient's one...so it loaded the sa mods. in the end..I have to regen the rom to solve the problem

the rom it's type manteca, tricky one...it resets itself at the end of the flash..which is bad because we can't verify.

Re: WD2000JD problem

April 27th, 2013, 0:53

jtag or 2 resistors + U12 :)

the goal it's to write/regen the rom with my tool.

Re: WD2000JD problem

April 27th, 2013, 3:18

I know what modules to use. beside..I don't know what to use in wdr to regen the rom. and since it's undocumented and no more supported I risk doing bad things.

I'm working right now at my app. The gui it's only an aspect of the whole project. I'm building along a low level library with wd vsc...so my app will use that lib..which handles all low level command - wd internals.

Re: WD2000JD problem

April 27th, 2013, 15:02

louis wrote:current supported options in my app :)

One more feature?

http://idle3-tools.sourceforge.net/

"Idle3-tools provides a linux/unix utility that can disable, get and set the value of the infamous idle3 timer found on recent Western Digital Hard Disk Drives. It can be used as an alternative to the official wdidle3.exe proprietary utility ..."

Re: WD2000JD problem

April 30th, 2013, 16:17

louis wrote:jtag or 2 resistors + U12 :)

the goal it's to write/regen the rom with my tool.


today I've finished gathering all the code into my GUI app, required to do a ROM regen for the royl drive..and give it a try. it worked. now I have the drive with its original rom.

I have recovered directly from windows one of 3 partitions (about 150gb). on other 2 it seems that there are some problems with bad sectors?

the SMART was error-less...but in this situation I believe it will go fast to full. It's a bad thing to do a scandisk? I did this on one partition but it works veeery slow...at 230.000 files..about 1 file record/sec.

the drive was opened by the f DR spec...which flashed an incompatible rom version...probably never heard about rom regen :lol:
Attachments
1.png
success.png

Re: WD2000JD problem

May 1st, 2013, 3:20

did a wd diagnostic tool on it and the SMART error went red. now the drive is BAD. the relocated sector count gets incremented while under windows.

at this moment I'm asking if I could have a bad head...or a head with wrong adaptives? or just surface bads due to the mr DR spec..when opening the drive? notice the bad pattern..on this 4 Head drive.

I know that the LBA it's a linear function, it will be interesting how it varies along the platters. it will be something like from [0-x] head 0...[x-y]..H1 on entire platter surface...or it jumps from head to head inside each Zone? I'm trying to find if those bads are from a specific head...but the MHDD shows LBAs.

I've read an entire partition (150gb) without a single error. the errors are on the other 2.
Attachments
DSC00941.JPG

Re: WD2000JD problem

May 1st, 2013, 5:03

Hi louis, I'm reading you thread from the beginning, but didn't had nothing interesting to say (but had many interesting things to read :))!

Regarding your new task with WD6400AAKS, why don't you try making a raw copy from that disk to another good using ddrescue? So you could copy as much data as you can in a safe place, and than you could try to see inside with other tools like R-studio o Ontrack Easy Recovery, without having I/O errors!!

I'm afraid that going on with tests on a faulty disk you could damage head if the patter surface is damaged!

I Think that ddrescue (not dd_rescue that is another app) is the better option because first copy all good blocks, and than try to read errors by splitting block size. ddrescue it's a GNU Linux app, but you should also find some cygwin port for win32.

Best Regards
Paolo

Re: WD2000JD problem

May 1st, 2013, 8:29

VDT - variable data track

Programmable, variable data track pitch
Post a reply