Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Jan 2009 21:23:26 +0000
From:      Dieter <freebsd@sopwith.solgatos.com>
To:        freebsd-drivers@freebsd.org, freebsd-hardware@freebsd.org
Subject:   Dealing with Seagate's problematic 7200.11 firmware.
Message-ID:  <200901240523.FAA21539@sopwith.solgatos.com>

next in thread | raw e-mail | index | archive | help
Most of you have read about the problems with Seagate's
7200.11 disks.  For those of you that haven't, the firmware
on many of these drives is buggy, and can "brick" the drive
when powering up or rebooting the system.  Thus far,
Seagate's response has been less than wonderful.  We need
a FLOSS solution.

Goals:

	1) Ability to read the number of log entries.

	2) Ability to change the number of log entries.

	3) Ability to install new firmware from Unix.

We need for this to work with any flavor of Unix,
on any CPU arch, without reboot or power cycle.
We need for this to work on one drive without affecting
other drives.

I don't expect to be able to write FLOSS firmware for the drives, so
this isn't listed as a goal.  If you think you can, please feel free.

The problem:

"IF the drive is powered down when there are 320 entries in this journal
or log, then when it is powered back up, the drive errors out on init and
won't boot properly - to the point that it won't even report it's
information to the BIOS."

			Maxtorman, slashdot discussion [2]

If Maxtorman is correct, then once the drive has been operating awhile,
we have a 1 in 320 chance that the circular log is at entry 320.  We want
to be able to find out how many log entries the disk currently has, and
we want to be able to change the number of log entries away from 320,
while we wait for Seagate to get its act together and release firmware
that works properly.  Since Seagate's solution will require attaching
the drive to an x86 system and booting a FreeDOS ISO from CD, if the log
is at 320 that boot will brick the drive.

There are other firmware problems with the 7200.11 series, but this is
the biggie.

Once Seagate releases working firmware, we want to be able to install
it from Unix, on any CPU arch.  Seagate's release can only install
on x86 using FreeDOS.

*ATA Commands that may be useful:

command name			command code in hex   page [1] pdf page [1]
Read Log Ext			0x2F			27	33
S.M.A.R.T. Read Log Sector	0xB0 / 0xD5		28,34	34,40
S.M.A.R.T. Write Log Sector	0xB0 / 0xD6		28,34	34.40
Write Log Extended		0x3F			28	34
Download Microcode		0x92			27	33

Questions:

	Is Maxtorman correct about the 320 log entries?

	Are the commands listed above the ones we need?
	What is the difference between the "Log Extended"
	and the S.M.A.R.T. Log Sector?
	Is "Microcode" the same as "firmware"?  (Seagate uses
	the term firmware elsewhere in the manual, but I don't
	find any sort of "write firmware" command.)

	Where can we get more detailed info about these
	commands and how to use them?

References:

[1] Seagate Barracuda 7200.11 Serial ATA Product Manual rev C  August 2008
http://www.seagate.com/staticfiles/support/disc/manuals/desktop/Barracuda%207200.11/100507013c.pdf

[2] http://it.slashdot.org/article.pl?sid=09/01/21/0052236



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901240523.FAA21539>