SkillAgentSearch skills...

HardDriveInfo

Repair info and schematics for mostly older MFM hard drives

Install / Use

/learn @schlae/HardDriveInfo
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Hard Drive Repair Information

This site contains extensive information about the control boards used in some 1980s hard drives made by Seagate.

Full schematics and even KiCad layouts are available for a number of different boards. My hope is that this will

  1. Aid anyone attempting to repair one of these drives. Loading the schematic and layout in KiCad will let you click on a part on the layout and highlight it in schematic.
  2. Inform anyone studying the history of small hard drives. For example, this information shows how Seagate integrated various functions into custom chips.

Below is a table linking specific drive models with the part numbers of their matching control boards.

| Manufacturer | Model | Interface | Control PCB | Stepper Type | Avg Pos Time | Media | Media Size OD/ID | |--------------|-----------|-----------|-------------|--------------|--------------|--------------|------------------| | Seagate | ST-412 | MFM | ASSY 20201 | 4-Wire | 85ms | Oxide, 00253 | 130/40mm | | Seagate | ST-419 | MFM | ASSY 20225 | 4-Wire | 85ms | Oxide, 00252 | 130/40mm | | Seagate | ST-225 | MFM | ASSY 20301, 20527 | 4-Wire | 65ms | Oxide Coated | 130/40mm | | Seagate | ST-225N | SCSI | ASSY 20427 | 4-Wire | 65ms | Oxide Coated | 130/40mm | | Seagate | ST-238 | MFM | ASSY 20527 | 4-Wire | 65ms | Oxide Coated | 130/40mm | | Seagate | ST-238R | MFM/RLL | ASSY 20527 | 4-Wire | 65ms | Oxide Coated | 130/40mm | | Seagate | ST-251 | MFM | ASSY 20629 | 10-Wire | 40ms | Thin Film | 130/40mm | | Seagate | ST-251-1 | MFM | ASSY 20938 | 10-Wire | 30ms | Thin Film | 130/40mm | | Seagate | ST-251N | SCSI | ASSY 20603 | 10-Wire | 40ms | Thin Film | 130/40mm | | Seagate | ST-277R-1 | MFM/RLL | ASSY 21020, 20938-300 | 10-Wire | 28ms | Thin Film | 130/40mm | | Seagate | ST-296N | SCSI | ASSY 20741 | 10-Wire | 28ms | Thin Film | 130/40mm | | Seagate | ST-125 | MFM | ASSY 20867 | 6-Wire | 30ms | Thin Film | 95/25mm | | Seagate | ST-157R | MFM/RLL | ASSY 20829 | 6-Wire | 30ms | Thin Film | 95/25mm | | Seagate | ST-157A-1 | AT-IDE | 20948 | | 28ms | Thin Film | 95/25mm |

Assembly Information

The control boards are typically held to the drive by three screws. Two of the screws are insulated from the PCB ground with plastic washers, but one of them makes a solid ground connection to the chassis. This is (as far as I can tell) always the screw closest to the power connector.

Early ST-225 boards have an 18-pin header going to the read/write heads, but the flex cable has a 16-pin connector. It should be plugged in offset to the pin 1 end of the header, allowing pins 17 and 18 on the header to hang outside the connector.

Platter Layout

ST-225

For a stepper-motor hard drive, the motor phase is rather important because the rotor will "clock" to the phase you drive it with. The firmware uses this while searching for the index tracks so it can jump 8 tracks at a time, since it knows the inner index track is aligned to phase 5 and the outer to phase 7.

The "Track" column indicates the track as visible to the user (the controller card in the PC). From this layout, you can see that the data area contains 615 total tracks. The landing zone is specified at track 670 which is safely outside the data area and away from the inner index marker track.

The "Firmware Track" column is offset by 2 because this is how the drive's firmware numbers them; it limits the MFM controller from track 2 to track 672. This implies that there is no protection against the controller overwriting the inner index track -- you must enter the drive parameters in the BIOS correctly! The outer index track is inaccessible during normal operation.

| Track | Firmware Track | Description | Motor Phase | |-------|----------------|----------------------|-------------| | -1 | 1 | Index marker track | 7 | | 0 | 2 | Outermost data track | 6 | | ... | ... | Data | ... | | 614 | 616 | Innermost data track | 0 | | 615 | 617 | DC Erased | 7 | | 616 | 618 | DC Erased | 6 | | 617 | 619 | Index marker track | 5 | | 618 | 620 | DC Erased | 4 | | ... | 621 | ... | 3 | | 670 | 672 | Landing zone | 0 | | ~694 | ~696 | Inner hard stop | - |

Note: Motor phase count is 0-7 since the motor is half-stepped.

The index marker track contains the following repeating information:

| 0 - 4ms | 4 - 16.67ms | |----------------|-------------| | 1.75MHz DC=17% | 5MHz DC=50% |

When the MCU PA7 is set as an input (logic 1), the drive will hold the hall-effect signal divider in reset as long as the 1.75MHz marker signal is present.

The index marker tracks are present only on head 0; none of the other surfaces contain this information.

ST-225N (SCSI)

This drive has firmware and bad sector information recorded on tracks -1 and -2, presumably multiple copies located on each surface. Each sector is 256 bytes.

| Track | Head | Sector | Description | Motor Phase | |-------|------|---------|-----------------------------------|-------------| | -2 | 0 | 0 - 31 | Primary Operating System (copy 1) | 8 | | -2 | 1 | 0 - 31 | Primary Operating System (copy 2) | 8 | | -2 | 2 | 0 - 31 | Primary Operating System (copy 3) | 8 | | -2 | 3 | 0 - 31 | Primary Operating System (copy 4) | 8 | | -1 | 0 | 0 | Seagate copyright notice | 7 | | -1 | 0 | 0 - 12 | Program overlay #1 | 7 | | -1 | 0 | 13 - 15 | Drive params? | 7 | | -1 | 0 | 16 - 17 | Defect map | 7 | | -1 | 0 | 19 | Drive serial number | 7 | | -1 | 1 | 0 - 31 | Copy of track -1 head 0 | 7 | | -1 | 2 | 0 - 12 | Program overlay #2 | 7 | | -1 | 2 | 13 - 15 | Mfg defect map? Drive params? | 7 | | -1 | 2 | 16 - 28 | Program overlay #3 | 7 | | -1 | 2 | 29 | Drive params? Identical to sector 13? | 7 | | -1 | 3 | 0 - 31 | Copy of track -1 head 2 | 7 | | 0 | | | Outermost data track | 6 | | ... | | | Data | ... | | 614 | | | Innermost data track | 0 | | ... | | | ... | | | 670 | | | Landing zone | 0 | | ~694 | | | Inner hard stop | - |

Note: Motor phase count is 0-7 since the motor is half-stepped.

Data on track -2 is the primary operating system loaded in the 8051 at 0x4000, length of 0x1CFF. The MCU's ROM just contains enough code to load this operating system into memory and jump to it. All the ROM functions are reimplemented/duplicated in the firmware stored on track -2.

Data on track -1 head 0, 2, and 3 is extra code loaded in the 8051 at 0x5000 (length = 0xD00) as an overlay that is swapped in and out as needed. RAM from 0x5D00 to 0x5FFF just contains data tables. Overlay code can call functions in the base OS using a dispatch function at 0x4BA1.

Binary dumps are included in the st225n/firmware directory. To calculate the file offset for a particular sector, multiple the sector number by 256.

Unused sectors contain the data 0x6C (01101100).

The defect map at track -1 heads 0/1 sectors 16-17 uses the following format:

Header:

| Byte | Content | |------|---------| | 0 | 0xBE | | 1 | 0xED | | 2 | Number of defects | | 3 | Reserved (0xFE) | | 4 | Reserved (0xED) |

Following the header is a list of defects, where each defect has the following format:

| Byte | Content | |------|---------| | 0 | Cylinder number, MSB | | 1 | Cylinder number, LSB | | 2 | Head number | | 3 | Bytes | | 4 | From index |

The last entry in the table contains 0xFF.

ST-251

| Track | Description | Motor Phase | |-------|--------------------|-------------| | -4 | (End of outer crash stop) | | | -3 | DC Erased | 7 | | -2 | Index marker track | 8 | | -1 | DC Erased | 9 | | 0 | Outermost data track | 0 | | ... | Data | | | 819 | Innermost data track | 9 | | 820 | DC Erased | 0 | | 821 | DC Erased | 1 | | 822 | DC Erased | 2 | | 823 | 1.75MHz | 3 | | 824 | DC Erased | 4 | | 825 | DC Erased | 5 | | 826 | 1.75MHz | 6 | | 827 | DC erased on odd tracks to inner crash stop. | | | ... | After track 827, 1.75MHz on all tracks with motor phases 0 and 6 to inner crash stop. All other even tracks DC erased. | | | 910 | Landing zone | |

Index marker track:

| 0 - 4ms | 4 - 16.67ms | |----------------|-------------| | 2F | 1.75MHz |

Driver boards

20301 "225 CONTROL", 20527

This ST-225 control board integrates the functions of both circuit boards in the ST-412/419 generation. Some functions have been integrated in LSI chips.

The PCB schematic and layout for 20301 are available, see st225/20301.

The PCB schematic and layout for 20527 are available, see st225/20527.

There are several variations of the 20301 board:

  • 1986 example: 74273, 2716, RP6 are not stuffed.

  • 1987 example: 74273, 2716, RP5, RP6, RP7, RP8, RP9, RP10, C18, C31, CR4, 7445(8C, 8B) are not stuffed. Q9 is replaced with a 620 ohm resistor between the

View on GitHub
GitHub Stars38
CategoryDevelopment
Updated19h ago
Forks3

Security Score

75/100

Audited on Mar 31, 2026

No findings