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

March 26th, 2013, 15:23

louis wrote:I've worked today on a function which does a rom firmware file check. I mean...for an existing file...if someone want's to check the integrity. I've implemented a reverse scan at the end of the firmware file..searching for the ROYL mark..then for FLASH_MODULE_DIRECTORY..and from there...scan all internal mods for crc. for the ROYL frm it's possible, but for the old model firmware...I don't see an easy way.

FWIW, ROYL ROMs appear to store the starting address of the block of ROM MODs near the beginning of the ROM.

In the following example, the double word at offset 0x410 contains 0x0002F89B which is where MOD OD is located.

download/file.php?id=4482

Re: WD2000JD problem

March 26th, 2013, 18:16

news. the donor it's gone too. played around today with it when implementing SA modules writing. watched a football match then when started again the work, I found it not responding to commands. after reboot it makes exactly like the old one. :)

Re: WD2000JD problem

March 26th, 2013, 18:43

5 rounds of 2 clicks. then becomes redy in kernel mode...and I can play with the WDC ROM as with the old one.

not reading with any heads..and throwing THE ERROR :) : VSC error code not decoded for : 0x4341...while reading track -1

I have all the ways...but first I must understand what's the safe mode...and what's the "permanent overlay" and how to put it on RAM. I'll' code those functions if needed.

I have tested the writing only on one module 0xFC, chosen carefully...it was empty...only the header..and nothing inside. I found that the vsc write module fixes automatically the header..it computes the crc, and if the header it's too bogus..it won't accept the file

The head map it's in the Mod 0xA which it's in the ROM firmware. the rom firmware has all it's needed to access the SA. the adaptives to the ZONE 0 (SA) are inside mod 0x47 at the end of the rom.

Re: WD2000JD problem

March 26th, 2013, 19:05

well..I did some coding...and some changes to the sourcecode (some proved to be wrong)...but I forgot that I was debugging exactly the write mod function...so it's possible that something went wrong on SA.

I ll test 3.0

wd_write_drive_module: write rezident ModId :(0xFC) len is : (4) sectors
send_wd_cmd: (command=0008)(p1=0002)(p2=00FC) (p3=0000) (p4=0000) (p5=0000) (p6=0000)
wd_rw_buffer_cmd: rw 0x1 sectors
wd_rw_buffer_cmd: drq timedout... must be 1, aborting [here I've fked the code..sending a bogus cmd while optimizing a function ..a wrong flag :mrgreen:]

Re: WD2000JD problem

March 26th, 2013, 20:04

I've fixed it. I did a rom file compare. it was the mod 47 (sa adaptives) at the end of the rom...screwed up! I copied the mod 47 from a good dump, and updated using my app :) ..but didn't worked first time (after a reboot...perhaps requires a power down?). I swapped the old PCB and it started with that one without clicking (kernel mode) but I could access the SA. When I've put again its own PCB that I previously fixed..it started with this too..and it show fine the model number :mrgreen:

Spildit wrote:Did you check on the Road Map where the molule is located on the platter ? Because i don't think the firmware will just put the module on the correct place if you just say "Write FC" module.
My guess is that you have written your "FC" module on the place that was ocupied by a critical module and that one now is gone ....
Does it make sense ?


NO...I'll explain. The firmware with its "write mod" vsc..lets you put the mod exactly in the same place. more..it doesn't allow to change its size. that's why it's safe. at a later time I'll have to code a function which allows adding any size mods..at any empty location...but this will involve many things..like finding a good..safe place in SA...then..adding an entry in mod01...the writing the file with chs..at specified cylinder head sector size etc.

that "write mod vsc"...also changes the mods (a,30,47 d) inside the rom firmware :mrgreen:
Last edited by louis on March 26th, 2013, 20:13, edited 4 times in total.

Re: WD2000JD problem

March 26th, 2013, 20:17

now I know that a bad mod 47...doesn't let the heads finding the SA start and gives 4341 error with 5x2 clicks. but how come that with the old pcb I can access the donor's SA, and not its own SA? :?:

the symptoms are almost identical.
Last edited by louis on March 26th, 2013, 20:29, edited 2 times in total.

Re: WD2000JD problem

March 26th, 2013, 20:19

Spildit wrote:It would have been cooler if you didn't have the ROM dump and you had to regent it from SA !


the non-royl firmware like mine...doesn't have those copies of rom modules in SA..not that I know. so..how to regen?

Spildit wrote:Did you figure out what part of the code was wrong to erite to ROM instead of platter module/track ?

I fixed that 2hours ago. I used exactly that code to fix the rom :) I still haven t tested the "write entire rom" function...because the programmer didn't arrived yet. The function is ready, but it have to wait. The mods can be fixed...the rom not. :lol:

Re: WD2000JD problem

March 27th, 2013, 11:47

Spildit wrote:Cool !
And now we know the meaning of another error code, as well as how the drive behaves with damaged adaptives on Rom.


or not.

how does a hdd dies if to many errors are detected? maybe it's killing its own firmware mod 47 preventing to detect SA. but this doesn't explain why the old pcb works on the new hdd. I couldn't explain how my mod 47 was modified even during that bogus tests. I'm trying to find some information about that 47 rom mod. it holds the zone 0, adaptives...aka SA adaptives. there are n zones for a disk.

I understand that basically contains:
- a constant TPI - track per inch - which it's a constant in SA, or harcoded inside firmware since it's zero in my mod;
- for each head Data DAC Offset; a delta for the head to jump from the servo sector to the track sector;
- MR Offset ... the distance between read - write heads on ox axis?
- Preamp DAC Offset the the distance between read - write heads on oy axis?

since this are unique to each HEAD..how come that we can do HAS? I mean, ok,,you flash the old fimware, but the rest of the mod 47 it's on the patient SA..and holds info for the rest of the disk zones N-1 :) also..who assigns those values? perhaps a factory test builds them?

Re: WD2000JD problem

March 27th, 2013, 12:29

some errors I have on donor's Head 1 wen trying to read SA on track -1 and other + tracks:
VSC error code decoded: 0x5181 -->> DISK_DAM_ERROR
VSC error code decoded: 0x51A2 -->> DISK_ECU_UNSAFE_ERROR
VSC error code decoded: 0x53E4 -->> DISK_SERVO_ACTUATOR_AI_FATAL_ERROR

plus bad noise :)

Re: WD2000JD problem

March 27th, 2013, 13:04

as I said..it came with a big hole in the air filter..and show ugly marks from a fall down. it's a miracle that it's still spinning.

I tried the depop stuff with 3.0. but the nasty sounds were still present. undone the depop and now shows other model.

Re: WD2000JD problem

March 27th, 2013, 16:31

yes, it was the first thing i dit before started the game with it. a full bk sa+mods
went down on xp again to play with the depop. what else should i do after depoping a bad head? it shows the same size. how do i find/set the correct size for the new situation?

Re: WD2000JD problem

March 29th, 2013, 7:51

bricked the donor's PCB :lol:

tried to do like u said...but I got some err msgs complaining about wrong lba...because the size wasn't changed. tried to lower the lba to 120gb...but there were 3lba: lba0 2 3...on the passport dir. at a moment it worked with the format..and th operation lasted for 1h. tried again to adjust the lba size (max size) and those lba1 lba o etc anyway..while doing that I got at a moment strange clicks and sounds and stopped reading the SA. tested with the old bcb and the SA was read fine. Putting back its pcb I did 2-3 flashes until I remembered that I must unplug the power. then it worked again but recognized as wdc rom. tried to upload the old sa mods. went fine but again recognized as wdc rom. then reflash...and bang..the pcb was bricked :)

now I'll have to wait for the rom programmer.

Re: WD2000JD problem

March 29th, 2013, 9:12

flashed with 3.0 ... 3 or 4 times. didn't know exactly which version of rom..because the way that app creates the backup directories. I had the old bios in the "WDC ROM..." dir..and when the donor transformed into WDC ROM (after lba changes)..the directory was automatically assigned by the app as for the old hdd. I don't remember on first flashes-es If I flashed the image from another dir. but it worked few times. I'm sure that the last bios was from the old pcb.

the pcb won't spin the motor. and it's not detected by any tool. the registers doesn't respond to any commands.

Code:
Scanning Controller 0 at Port: 0x1F0:    Type : 0 (Master)
select_device() drive busy or expecting data (BSY or DRQ = 1) ...aborting
select_device failed. reset device
reset_controller(): wait_for_controller did clared the BSY flag within time.
        Nothing found


this means that the device at the end of the controller it's dead :D

Re: WD2000JD problem

March 29th, 2013, 15:58

nope. I don't know what to short on my PCB to enter directly into the terminal mode without exec any kernel loader. now I believe that the wrong flash inside, crash at a moment and from there, there's no way to get into the terminal. so a flag must be set to force the bootstrap start the terminal without checking for any flash.

Re: WD2000JD problem

March 30th, 2013, 4:54

louis wrote:bad news.

my donor seems to be badly damaged. it came unformatted so what I did till today..I did with it how it was. only tests with rom and SA. today booted under xp to test some stuff and did a format. played with wdr and did a sort of surface scan..and at a moment it started to make some really ugly noise. it was with the old pcb on it.

not. now that I'm looking better I get some DISK ECU UNSAFE ERROR on head 1 in SA. and in the rest of the. m...damn. that pattern it's for a dead head. and since i didn't tested the donor from the beginning I don't know if the old PCB did that..when playing around with it mounted on donor.

tsted again backup all function and it downloads well the rom and SA modules. all modules are located on head 0...and therefore I could play fine with it till today, not knowing what lies inside :D


Louis,

It seems to me the problem came because you used drive with not original pcb. MOD 47 contain adaptives and if we suppose they are not same for both drive because every drive have its unique adaptives, it's very likely that the adaptives for heads 0 are very close and for heads 1 are not. That is the reason for not able to read H1. If you have "playing arround" with saving the modules on H1, maybe they have been saved on platter but because of wrong adaptives some modules (and tracks) may be destroyed without chance to rewrite them even with original pcb (adaptives). The problem with the H1 modules can be present even if you didn't saved the modules because you said that donor came unformatted and you did a format, while formating the drive maybe have made changes in G-list and saved that modul, also saved SMART module and some others so those and other modules and tracks also can be destroyed.
The bad idea is to writte on SA with wrong adaptives. BTW, the drive in safe mode itself doesn't save anything on SA but in standard mode it does.

As for corrupted MOD 47 there are cases when ROM gets corrupted beacuse of the pcb malfunction. I think that MOD 47 content regularly can be modified by drive ONLY after SS. There is no other logical reason to be modified while the drive is in regular use.

That possible malfunction of the pcb also can be explanation for the bricking the pcb while saving the rom content.

This topic has many posts and datas so it's possible that I have missed some of the important facts in them so my opinion can be wrong.

Re: WD2000JD problem

March 30th, 2013, 5:34

hi Nebojsa_28. when I said "format"...I was talking about windows format....ntfs format :)

the mod 47 it's inside the ROM firmware. it contains the adptives for Zone 0 aka SA. let's say that the old pcb didn't matched the adaptives for H1 in SA. but why with its own pcb can't still read the H1 on SA? If some adaptives mods on SA are screwed...at least with its internal mod47 all heads should be able to read SA.

can somebody tel what "format" does in fact? not the windows one..which makes the drive visible to OS.

also, how the firmware knows where to find the SA on the platters? I know about the Servo system...some marks written on the platters in factory...but does the firmware use an explicit servo cylinder where the SA should be?

Re: WD2000JD problem

March 30th, 2013, 7:16

about your confusion...the PCB won't even spin the motor. when I plug the power it's totally silent :) the ATA regs when I access the controller , doesn't respond to any command..which means that there's no firmware code loaded to fill the regs (to respond).

I believe the LBA it's on the mod 02 -> SA, so what to modify in rom? the rom holds only basic info to access the SA...which holds the rest. SO if you can't access the SA...the rom it's bad..OR the read channel it's bad...bad preamp (all 4 head dead..or H1+H2 =SA-heads). If one head gives error on SA..then the MOD 47 in rom could be bad for that Head..or the head it's dead. But it's possible that the other adaptives mods on SA hold again the adaptive infos for the dead head...so the reading of SA with the good head should fix the bad info in 47 for H1..and the head should work (assuming good adaptives for H1 in SA found), which leads me to a dead H1.

now, how about building your own HSA alignment tool?
Image

ebay 20$ micrometer
I guess the rest could be made "at home". :)

they sell it as it's gold made. mfrz

Re: WD2000JD problem

March 30th, 2013, 14:25

louis wrote:hi Nebojsa_28. when I said "format"...I was talking about windows format....ntfs format :)

let's say that the old pcb didn't matched the adaptives for H1 in SA. (1)but why with its own pcb can't still read the H1 on SA? If some adaptives mods on SA are screwed...at least (2)with its internal mod47 all heads should be able to read SA.

can somebody tel what (3)"format" does in fact? not the windows one..which makes the drive visible to OS.

also, (4)how the firmware knows where to find the SA on the platters? I know about the Servo system...some marks written on the platters in factory...but does the firmware use an explicit servo cylinder where the SA should be?

I believe the LBA it's on the mod 02 -> SA, so what to modify in rom? the rom holds only basic info to access the SA...which holds the rest. SO if you can't access the SA...the rom it's bad..OR the read channel it's bad...bad preamp (all 4 head dead..or H1+H2 =SA-heads). If one head gives error on SA..then the MOD 47 in rom could be bad for that Head..or the head it's dead. But it's possible that the other adaptives mods on SA hold again the adaptive infos for the dead head...(5)so the reading of SA with the good head should fix the bad info in 47 for H1..and the head should work (assuming good adaptives for H1 in SA found), (6)which leads me to a dead H1.


- Yes, I know you did a format for user area.

1. Maybe because the mods/tracks are damaged because of bad saving with wrong adaptives, I also don't are the firmwares same version
2. Not if the SA or part of it is damaged
3. I don't know on what "format" you refer
4. Good start for this is in the article http://hddscan.com/doc/HDD_Tracks_and_Zones.html
5. Mod 47 is important for successfull reading of the SA, not vice versa
6. In one of your tests H1 is good

Re: WD2000JD problem

March 30th, 2013, 14:40

1. pcb it's damaged. in what circumstances..I don't know. I'll dump the rom to see what was inside...when the programmer arrives.

2. the H1 doesn't respond to read function..with both PCB's. it throws the errors I've already mentioned. I found this after I formatted the hdd for ntfs. also posted the hdtune pattern. after that, knowing that the HSA won't help me for my patient..I started few researches on it...in order to discover how 3.0 works, how depop works etc.

3.from what I understand.. on older roms like mine (perhaps the newer too) ..the H1 it's the mirror of H0 in SA. unfortunately when I found that..my H1 was already bad..so I couldn't verify what H1 returns on reads in SA. when I use the vsc function which reads a mod...it doesn't let me specify which head to read..so it handles internally what reads and from which head. there it's another function..more generic..with which I can read the SA and there I specify the head, track, sector...so I could read a mod from H0 or H1. but I could not test this since I don't have a good for testing hdd :) I think that if you depop H0, H1 will become H0...in that head map in mod 0xa in firmware. so the firmware will read H0 from that map...which now will have the copy of SA. it should work...but don't know how it will act since a H2 which now will be H1..won't have a copy of SA....however..my donor worked fine with the H1 dead...so no copy of SA.

4.build one for a small fraction of 500$ :)

Re: WD2000JD problem

March 30th, 2013, 15:14

I have submited answers for Louis's post but it's not published because of:

This message has been submitted successfully.
However, it will need to be approved by a moderator before it is publicly viewable.
You will be notified when your post has been approved
Post a reply