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

[VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

October 10th, 2026, 8:45

Hello, this is my first post here. My name is Michel, I write from Switzerland, from the southern italian-speaking part, so excuse me for my engRish :-).

I have a long-time fascination (read: obsession) with hard drives, matter of fact I'm collecting them since the late 90ies and right now I have something around 200-300 drives in my collection. I actually lost count of them :-D. I'm also into retrocomputing, I have a quite sizable collection of old machines which I restored and maintain myself and I occasionally attend retrocomputing events with items from my collection.

In the last years I'm "daring" to do some repairs on very old MFM, stepper-driven units. Matter of fact some time ago I was succesful at reviving a couple drives by swapping their ruined platters with other healthy ones and low-level format them with the controller's onboard utility (you know, debug -> g=800:5, the usual stuff).

Now I'm trying to revive one of my old PS/2-30 hard disks. Those WDI-325s are well known in the retrocomputing spaces to suffer from internal contamination. Most believe that it's the seal that gives up, but by opening a couple of ones I found that the actual source of the contamination was not the seal, which was still intact, but a piece of plastic that holds the head stack's flex PCB where the head amplifier chip is soldered, that is going thru a decomposition process.

Check images:

1) wdi325_1.jpg - Platter contamination
2) wdi325_2.jpg - Details of plastic piece's decomposition

and you can clearly see that. That white dust is the material coming off the plastic piece, and I think that during this process some gases are being produced too, raising the internal pressure, blowing out from the breathing hole and carrying those plastic particles with them. And actually, if you take a look to photo #3 (wdi325_3.jpg - Dusty spot on platter matching the breathing hole/filter) you can clearly see that most of the dust accumulated in the exact same spot on the platter that for years was sitting still under the breathing hole.

Some days ago I picked out from my collection a 60MB WDI-387 hard disk (the voice coil-driven, MCA-attached unit that's used in PS/2-55sx, 70 and other models) which some years ago was already in the verge of dying most probably due to fading out magnetic signals. It had a lot of bad sectors, they were constantly raising and now it reached the point where track 0 became unreadable. So I decided to open it to assess for internal damage and I found two things:

1) There was no actual physical damage to the platters (that's why I'm thinking about fading-out magnetic signals)
2) Platters were the exact same thickness and iron-oxide coated like the WDI-325's ones.

So I decided to use it as a donor drive and I transplanted two of its three platters to one of my WDI-325 units, the right one in photo #3 which is the one I'm trying to revive. I thorougly cleaned the chamber from the dust, cleaned the heads with isopropyl alchool, removed all the dust from the plastic support and covered it with insulating tape to prevent, or at least try to, further particles leaving it and I gave it a spin with my PS/2-30. The drive spun up nicely and, to my suprirse, with the heads pulled toward the platter's outer diameter they were actually able to do a full sweep-in-sweep-out seek, a thing that a WDI-325 drive in working condition would always do at power up (with the heads towards the inner my unit just tries to push them further in for 2-3 times, hitting the stop pin, then it gives up).

Of course the drive was still confused as the layout on those platters, or at least the remainings of it, is from another drive with a completely different geometry, not to mention that the relative alignment between the platters themselves is lost due to me moving them, so the machine unsurprisingly threw out a 1701 error at boot and the disk's LED was blinking a 4-[pause]-4-[pause][...] pattern. As said, all to be expected.

Now comes the part where I want to LLF the drive, and this is where I'm stuck. I tried the PS/2-30 diagnostic disk, I tried speedstor/hardprep, I tried diskmanager both in automatic and manual mode, none of them were succesful. And no, there's no debug -> g=800:5 format routine available as the drive's logic board is an integrated, proto-IDE proprietary IBM controller who connects directly to the machine's 8-bit ISA bus. The drive gives signs of life when those programs try to LLF it, it can be heard seeking its heads a handful of times trying to orient itself, but then it gives up and the LLF utility throws whatever error it feels at the moment (bad disk command, disk not ready, unrecognized error, etc...).

This is a stepper drive, so like with any normal MFM stepper drives there should be a manner to low-level format it without specific devices available only for the manufacturer, as no servo orientation signals are required here unlike what happens with voice-coil units. I just want the drive to slam the heads towards the outer stop pin, and step its actuator thru the platters to blast a new geometry onto them regardless of their actual content, like it can be done with normal MFM disks. There should be a manner to do this, perhaps with some obscure software tool or assembly routine that skips the controller's internal data integrity checks: after all when the drive was built in first instance the platters were empty and in some way it had to write down cylinders and sectors on them.

So, after this long post the question is: what I'm missing? There's someone here experienced with those units, who knows specific software tools or procedures to treat this drive like a freshly built unit which needs its initial LLF before leaving the factory?

Thanks to all who'll be eager to help :-)
Attachments
wdi325_3.jpg
Dusty spot on platter matching the breathing hole/filter
wdi325_2.jpg
Details of plastic piece's decomposition
wdi325_1.jpg
Platter contamination

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

October 10th, 2026, 10:52

it was roughly when these ended when i started, so i have very few experience and memories with mfm drives. I would surely try to format a working one first, just to see i am doing things right.
I would also check the breather hole, there should be some filter that might also be decomposing and littering on the surfaces... I would also check any rubber components, i found those to get in a slimy, sticky, pseudo-fluid state which may cause damage later as well...

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

October 10th, 2026, 20:00

pepe wrote:I would surely try to format a working one first, just to see i am doing things right.


I'd like to, but unfortunately all the WDI-325s in my possession (three) are in the same state. And I don't think there are a lot of them still in working condition around the world after all this time, given the type of issue that is affecting all of them.

pepe wrote:I would also check the breather hole, there should be some filter that might also be decomposing and littering on the surfaces


There's the filter of course, that's why the breather holes are white in the photos. But it isn't shedding anything, it's perfectly fine, already checked that.

The white dust is from the flex PCB's plastic holder, it was literally covered in it and it's the only possible source of white-colored material in there.

pepe wrote:I would also check any rubber components, i found those to get in a slimy, sticky, pseudo-fluid state which may cause damage later as well...


Luckily there are no rubber pieces inside the chamber, both the inner and outer head assembly stops are red plastic pegs. The only rubbery thing is the cover's gasket, which is still intact. And it opposed quite a resistance when I opened the drive the first time, so it was still properly sealing the drive chamber.

Mechanically the drive is fine now. My problem is more on the software side.

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Yesterday, 11:26

Hello from the Youtube video :)

This is amazing, I really hope you can go somewhere from here.
Now, the WDI-325 is not a super-old drive - well, it is but it's kind of modern. I'm wondering whether it doesn't have a special low level format process and instead it just doesn't like the new platters or maybe something got damaged in the process.

I have a WDL-330P which I was given to test. Never managed to do that. I don't know if it's a voice coil drive or a "squeaky" stepper motor. Would it be useful for your tests?
Attachments
CD27A8A7-6D57-41F6-88AE-77C1A17276FB.jpeg

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Yesterday, 14:26

WDL-330P

https://preview.redd.it/5tan7jie3gbh1.jpeg?width=2726&format=pjpg&auto=webp&s=1b482055feb9524565126e47cba0320982863d94

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Yesterday, 15:12

Tony359 wrote:Hello from the Youtube video :)
I have a WDL-330P which I was given to test. Never managed to do that. I don't know if it's a voice coil drive or a "squeaky" stepper motor. Would it be useful for your tests?

voice coil 30MB RLL :o, super weird, like they tried to make it expensive and small for no reason on purpose
RLL Endec TC8564AF https://datasheet.datasheetarchive.com/ ... 201589.pdf
and SSI 32P541 data conditioner http://www.ic-on-line.com/download_onli ... 470275.pdf

Shane played a lot with those, including fixing a bunch https://mcretro.net/sega-teradrive-ibm- ... -overview/ by recapping terrible smd electrolytics

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Yesterday, 15:22

The smd electrolytics of that era used to leak and then smell like dead fish.

I researched these datasheets for my database:

WDI-325Q IBM HDD, special interface
https://caps.wiki/wiki/IBM_WDI-325Q_20MB_Hard_Drive
https://caps.wiki/wiki/File:WDI-325Q_Front.jpg
https://caps.wiki/wiki/File:WDI-325Q.jpg

This is a circa 1987-1988 proprietary Hard Drive, manufactured by IBM Japan. Most often found in the IBM PS/2 Model 25 and 30.

"The PS/2 Model 25, 25-286, 30, and 30-286 used an 8-bit pseudo-IDE hard drive interface at 3:1 interleave. Both power and data I/O are provided to the drive through a single card-edge connector."

LC3517RM, Sanyo, 2048-word x 8bit SRAM, 5V, SOIC-24:
https://www.datasheetarchive.com/?q=LC3517RM

M53207, Mitsubishi, equivalent to 7407 open-collector hex non-inverting buffer

M53206, Mitsubishi, equivalent to 7406 open-collector hex inverting buffer:
https://www.datasheetarchive.com/datasheet/M53206P?term=M53206&id=d14d800317593ff9

TA7736P, Toshiba, 3-phase bidirectional motor driver IC, 7~20V, DIP-16:
https://www.ardent-tool.com/datasheets/Toshiba_TA7736P_F.pdf

TC9142P, Toshiba, Quartz PLL motor control, up to 10V, DIP-16:
http://matthieu.benoit.free.fr/cross/data_sheets/TC9142P.pdf

TA8507N, Toshiba, R/W channel, 12V and 5V, DIP-24:
https://www.datasheetarchive.com/?q=TA8507N

NJM318D, JRC, high speed op-amp, +/-20V, DIP-8:
https://www.mouser.com/ds/2/294/NJM318_E-365029.pdf

TEA3717, SGS-Thomson, stepper motor driver, 10 - 45V, DIP-16:
https://www.elektronikjk.pl/elementy_czynne/IC/TEA3717-2.pdf

N8031AH, Intel, 8-bit ROM-less microcontroller, 128 x 8 RAM, QFP-44,
https://pdf.dzsc.com/N80/N8031AH.pdf

ZN449D, GEC Plessey / Zarlink, 8-BIT MICROPROCESSOR COMPATIBLE A-D CONVERTER, 5V, SOIC-18 / MP18:
https://www.cpcwiki.eu/imgs/c/c2/ZN448.pdf

PM-7528, Precision Monolithics (PMI), dual 8-bit ADC, 5V - 15V, SOL-20:
https://media.digikey.com/pdf/Data%20Sheets/Analog%20Devices%20PDFs/PM7528.pdf
https://datasheet.sisoog.com/PM-7528/file/zmedia/pdf/Data%20Sheets/Analog%20Devices%20PDFs/PM-7528_RevA.pdf

TC4066BF, Toshiba, quad bilateral switch, 3 -18V, SOP-14:
https://www.mouser.com/datasheet/2/408/TC4066BF_datasheet_en_20170718-1090381.pdf

TMM24128AP, Toshiba, 16K-word x 8-bit, OTPROM, DIP-28:
https://og.kervella.org/synth/yamaha_dx7/DX7ROM.pdf
http://bitsavers.informatik.uni-stuttgart.de/components/toshiba/_dataBook/1986_Toshiba_MOS_Memory.pdf

TC4066BF, Toshiba, quad bilateral switch, 3 -18V, SOP-14:
https://www.mouser.com/datasheet/2/408/TC4066BF_datasheet_en_20170718-1090381.pdf

uPC393C, NEC, dual comparator, 2V - 32V, DIP-8:
https://www.datasheetarchive.com/?q=uPC393C

NE592NS, Signetics, wideband video ampplifier, 120MHz, +/-8V, 14-pin:
https://www.electrokit.com/upload/product/11077/110771/NE592N.pdf

5960904, SMOS Systems / Seiko Epson, PLCC-68
https://theretroweb.com/chips/13578
https://theretroweb.com/expansioncards/s/ibm-90x8642%20(16-bit%20MCA,%20MFM/RLL,%20IBM%20Fixed%20Disk%20Adapter (PS/2 Model 50))
https://theretroweb.com/expansioncard/image/ibm-mfm-1-6a8e3bd995afb057881651.jpg
https://theretroweb.com/expansioncard/image/ibm-mfm-2-6a8e3bd964d52905765417.jpg
https://www.ardent-tool.com/storage/MFM.html

6127893, IBM, QFP-124
https://theretroweb.com/chips/13579
https://theretroweb.com/expansioncards/s/ibm-90x8642%20(16-bit%20MCA,%20MFM/RLL,%20IBM%20Fixed%20Disk%20Adapter (PS/2 Model 50))
https://www.ardent-tool.com/storage/MFM.html

T5627, Toshiba, QFP-44
https://theretroweb.com/chips/13577
https://theretroweb.com/expansioncards/s/ibm-90x8642%20(16-bit%20MCA,%20MFM/RLL,%20IBM%20Fixed%20Disk%20Adapter (PS/2 Model 50))
https://www.ardent-tool.com/storage/MFM.html

83X3202, IBM, PLCC-28
https://theretroweb.com/chips/13581
https://theretroweb.com/expansioncards/s/ibm-90x8642 (16-bit MCA, MFM/RLL, IBM Fixed Disk Adapter (PS/2 Model 50))
https://www.ardent-tool.com/storage/MFM.html

TA8509F, Toshiba, Read/Write IC, 4-channel head IC, 200x amp gain, PSU monitor, PFP-20:
https://www.datasheetarchive.com/datasheet/TA8509F/Toshiba?term=TA8509F&version=1

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Yesterday, 17:50

fzabkar wrote:WDI-325Q IBM HDD, special interface
"The PS/2 Model 25, 25-286, 30, and 30-286 used an 8-bit pseudo-IDE hard drive interface at 3:1 interleave. Both power and data I/O are provided to the drive through a single card-edge connector."

looking at 8530 286 Planar diagram https://ardent-tool.com/docs/pdf/schema ... pdf#page=3
and https://ardent-tool.com/storage/IBM_HD_pinouts.html
and https://oldcrap.org/2021/08/30/ibm-ps-1 ... usel-12790
it is indeed ordinary 8 bit IDE in stupid 44pin header going to even more stupid edge connector, looking at the pictures of connected HDD the cable is wired 1:1

You can add PS/1 model 2011 to your list :)

Would normal IDE interface work with 8bit disk? Commands are 8 bit anyway, and for data normal HDD asserts /IOCS16, right? so in theory with proper cable one could plug WDI-325 into a modern PC, and run Seagate st05X bios (patched from 320-323h to 1F0-1F3h) to get XT command set support?

fzabkar wrote:N8031
ZN449D, GEC Plessey / Zarlink, 8-BIT MICROPROCESSOR COMPATIBLE A-D CONVERTER, 5V, SOIC-18 / MP18:
PM-7528, Precision Monolithics (PMI), dual 8-bit ADC, 5V - 15V,


wonder what was the use case for three ADCs on there?

fzabkar wrote:83X3202, IBM, PLCC-28
https://theretroweb.com/chips/13581


from what I can gather this is an RLL endec, https://www.vogons.org/viewtopic.php?p=1451556#p1451556 provided picture of two revisions of WDI-325 pcb and one of them has 32P540-3 while the other 83X3202.
Now if 90X8642 supports both MFM and RLL then 83X3202 would be dual mode Endec.

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Today, 8:58

During those years I repaired several PS/2 Model 25s, and I modified several PS/1s, but I never paid attention to the storage. I also had access to a complete set of IBM tech docs. Wish I still had them. :-(

I had a look at the firmware dumps at Vogons. Each dump is divided into two halves with similar structure and much redundancy. To me, this suggests that there may be two firmware versions in the one package??

https://www.vogons.org/download/file.php?id=251077 (WDI-325 I2424-18.zip)

https://www.vogons.org/download/file.php?id=251076 (WDI-325 I2221-11.zip)

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Today, 10:21

rasz_pl wrote:one of them has 32P540-3 while the other 83X3202.

err wrong, "while the other has some Toshiba data separator", but conclusion is the same

fzabkar wrote:I had a look at the firmware dumps at Vogons. Each dump is divided into two halves with similar structure and much redundancy. To me, this suggests that there may be two firmware versions in the one package??

oh yeah, there are indeed valid jumps at 0x2000. I suck at 8051, never touched it outside of school looong time ago.

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Today, 11:03

Tony359 wrote:Hello from the Youtube video :)

This is amazing, I really hope you can go somewhere from here.
Now, the WDI-325 is not a super-old drive - well, it is but it's kind of modern. I'm wondering whether it doesn't have a special low level format process and instead it just doesn't like the new platters or maybe something got damaged in the process.


Hi :-)

Judging by the posts of rasz_pl there should be something. Also because the PS/2 diagnostic diskette has an "unconditional format" command that can be issued to the hard drive and that "unconditional" sounds to me as "low-level".

The drive of course doesn't like the platters for now, because from its point of view they're full of unreadable garbled mess (they are from another disk with an entirely different geometry). What I'd want to do is to convince in some way the drive that it has just been popped out from the factory assembly line, so with fresh, virgin platters, and make it mindlessly write the proper geometry signals onto them. After all, those drives just had to be initialized in some way when they were built at the factory in first instance.

I dont think there's something damaged, I was successful at doing the same thing to a normal MFM drive in the past, I used the same care with this one and it doesn't seem to be something wrong mechanically, at least judging by how the thing looks and sounds. But of course I know that looks and sounds are not always very reliable indicators to assess for damages in an hard disk as a lot of other things could be bad but unnoticeable (bad heads, bad amplifier or read channel circuitry, etc...), so I don't exclude that. But for now I want to focus my efforts on the low-level format.

By the way I already tried to swap the controller board with the one from the other WDI-325 and I have the same result, so I would tend to exclude problems in this area. Unless I have been unlucky and both boards are actually problematic...

I have also a third unit but its PCB did put out a funky smell of burned electronics when I powered it on a few years ago, after having kept it in storage for decades. So while I didn't see any obviously burned component and it actually manages to make the drive spin, I don't trust it. That unit was also rotten like the other two, which I actually got after, and when I powered it on not only gave out some magic fumes, but it also grinded like crazy and displaced a head too (this is the drive from the PS/2-30 that I briefly had about 30 years ago and unfortunately the machine ended in the trash, d'oh :x ).

Tony359 wrote:I have a WDL-330P which I was given to test. Never managed to do that. I don't know if it's a voice coil drive or a "squeaky" stepper motor. Would it be useful for your tests?


It's a voice coil drive, as fzabkar already pointed out. And it has just one platter while for my drive I need two. But thank you anyway :-)

Re: [VINTAGE] Reviving an IBM WDI-325 (PS/2 30 hard drive)

Today, 13:19

Code at offset 0x0000.

Code:
Address,Hex Bytes,Mnemonic,Description

0000H,02 01 00,LJMP 0100H,Long jump to address 0100H (typically the reset vector jump).
0003H,02 11 10,LJMP 1110H,Long jump to address 1110H (interrupt vector or secondary entry).
0006H,FF ...,(Padding),Unused ROM space (FFH bytes).
0013H,C2 AA 32,CLR 0AAHRETI,"Clear bit at address AAH, followed by a Return from Interrupt (RETI)."
0016H,FF ...,(Padding),Unused ROM space.
001DH,02 11 B2,LJMP 11B2H,Long jump to address 11B2H.
0020H,FF FF,(Padding),Unused ROM space.
0022H,74 E8,"MOV A, #0E8H",Load immediate value E8H into Accumulator (A).
0024H,80 02,SJMP 0028H,Short jump forward by 2 bytes.
0026H,74 F8,"MOV A, #0F8H",Load immediate value F8H into Accumulator (A).
0028H,78 08,"MOV R0, #08H",Move immediate value 08H into register R0.
002AH,30 05 0E,"JBC 05H, 003BH","Jump if bit 05H is set, and clear it."
002DH,D2 E2,SETB E2H,Set bit E2H (Accumulator bit 2 or specific flag).
002FH,02 00 39,LJMP 0039H,Long jump to address 0039H.
0032H,74 E8,"MOV A, #0E8H",Load immediate value E8H into Accumulator.
0034H,78 0A,"MOV R0, #0AH",Move immediate value 0AH into register R0.
0036H,20 05 02,"JB 05H, 003BH",Jump if bit 05H is set.
0039H,D2 E2,SETB E2H,Set bit E2H.
003BH,45 52,"ANL A, 52H",Bitwise AND Accumulator with RAM location 52H.
003DH,C2 90,CLR 90H,"Clear bit 90H (Port 1, Pin 0 / P1.0)."
003FH,F2,"MOVX @R0, A",Move Accumulator contents to external RAM address pointed to by R0.
0040H,08,INC R0,Increment register R0.
0041H,E5 51,"MOV A, 51H",Move contents of RAM location 51H into Accumulator.
0043H,F2,"MOVX @R0, A",Move Accumulator contents to external RAM address pointed to by R0.
0044H,D2 90,SETB 90H,Set bit 90H (P1.0).
0046H,22,RET,Return from subroutine.

Code at offset 0x2000.

Code:
Address,Hex Bytes,Mnemonic,Description

0000H,02 01 00,LJMP 0100H,Long jump to main initialization routine at 0100H.
0003H,02 11 10,LJMP 1110H,Long jump for interrupt vector / handler.
0006H,FF ...,(Padding),Unused ROM space (FFH).
0013H,02 00 50,LJMP 0050H,Long jump to routine at address 0050H.
0016H,FF ...,(Padding),Unused ROM space.
001BH,02 11 B2,LJMP 11B2H,Long jump to address 11B2H.
0020H,74 E8,"MOV A, #0E8H",Load immediate value E8H into Accumulator (A).
0022H,80 02,SJMP 0026H,Short jump forward to instruction at 0026H.
0024H,74 F8,"MOV A, #0F8H",Load immediate value F8H into Accumulator (A).
0026H,78 08,"MOV R0, #08H",Load immediate value 08H into register R0.
0028H,30 05 0E,"JBC 05H, 0039H","Jump if bit 05H is set, and clear it."
002DH,D2 E2,SETB E2H,Set bit E2H (Accumulator/flag bit).
002FH,02 00 39,LJMP 0039H,Long jump to address 0039H.
0032H,74 E8,"MOV A, #0E8H",Load immediate value E8H into Accumulator.
0034H,78 0A,"MOV R0, #0AH",Load immediate value 0AH into register R0.
0036H,20 05 02,"JB 05H, 003BH",Jump if bit 05H is set.
0039H,D2 E2,SETB E2H,Set bit E2H.
003BH,45 56,"ANL A, 56H",Bitwise logical AND Accumulator with internal RAM location 56H.
003DH,C2 90,CLR 90H,"Clear bit 90H (P1.0, Port 1 Pin 0)."
003FH,F2,"MOVX @R0, A",Move Accumulator contents to external RAM address pointed to by R0.
0040H,08,INC R0,Increment register R0.
0041H,E5 55,"MOV A, 55H",Move contents of internal RAM location 55H into Accumulator.
0043H,F2,"MOVX @R0, A",Move Accumulator contents to external RAM address pointed to by R0.
0044H,D2 90,SETB 90H,Set bit 90H (P1.0).
0046H,22,RET,Return from subroutine.
Post a reply