FreeBSD 9.0 and (Kingspec) PATA drive ATA status errors. Drive unusable.

Ian Lepore freebsd at
Sun Aug 12 15:46:04 UTC 2012

On Sun, 2012-08-12 at 10:57 -0400, Wajih Ahmed wrote:
> I have a Dell D420 laptop with the ZIF interface and uses a 1.8" PATA
> drive.  I purchased a Kingspec 16GB SSD and installed it.  The BIOS
> recogonizes the drive.  I am using the USB image to boot in verbose mode.
> Upon boot the disk is recognized by FreeBSD 9.0 as follows (sorry for any
> typos as i am reading this off the console):
> ada0 at ata0 bus 0 scbus0 target 0 lun 0
> ada0: <KingSpec KSD-ZF18.6-016MS 20120202> ATA-7 device
> ada0: Serial number...
> ada0: 100.0000MB/s transfers (UDMA5, PIO 512bytes)
> Then i see these errors
> (ada0:ata0:0:0:0): ATA status error
> .....READ_DMA. ACB: c8 ....
> .....CAM status: ATA status error
> .....ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT)
> .....RES: 51 .....
> As a result the disk is rendered unusable and i cannot write (partition) to
> it.  I did test the drive with a linux boot disk and i was able to format
> it.
> So my question is how can i make this drive work?  Do i need to pass
> something to the kernel at boot to lower the speed of the drive.  Maybe to
> UDMA66?  Any help will be really appreciated.

Whenever I've seen ICRC errors, it has been caused by using a 40-wire
cable at speeds faster than UDMA33 [1].  A potential fix is to force the
mode in loader.conf:


[1] I've also seen ICRC errors when there was no cable involved at all,
such as with a surface-mount compact flash socket on a circuit board
that has 50 pins spaced even closer together than a standard ata cable.
I have no real proof that such closely-spaced pins cause the same kind
of signal crosstalk as a 40-wire cable (they're close, but the length of
the parallel wires is just a couple millimeters), but forcing the driver
to UDMA33 or less always seems to fix the problem.

-- Ian

More information about the freebsd-stable mailing list