WD20EZRX - differing firmware

I recently purchased from Best Buy three 2TB drives - WD20EZRX - to go in a Sans Digital 4 drive RAID enclosure. I initially setup a software RAID 6 configuration under Linux (Mint 15) - these three drives with a 2TB Seagate drive that I already had (model ST2000DL003).  I partitioned each drive into two identical partitions of 1TB each, for a total of 8 1TB “drives”. Performance was terrible (about 35MB/s), so I started digging into the drive info and parameters using Linux’ hdparm utility.

A little inspection shows that the three WD drives are not identical - even though the boxes didn’t indicate it. Two have firmware 80.00A80 (and support SATA 3.0), and the other has firmware 0957 (don’t think it supports SATA 3.0. Is it possible to upgrade it to 80.00A80?

Here’s the output of hdparm -I /dev/sdX:

jon-Latitude ~ # hdparm -i /dev/sdb

/dev/sdb:

Model=WDC WD20EZRX-00D8PB0, FwRev=0957, SerialNo=WD-WMC4M0735742
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=unknown, MaxMultSect=1, MultSect=1
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=3907029168
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: disabled (255) WriteCache=disabled
Drive conforms to: Unspecified: ATA/ATAPI-4,5,6,7

* signifies the current active mode

jon-Latitude ~ # man hdparm
jon-Latitude ~ # hdparm -I /dev/sdb

/dev/sdb:

ATA device, with non-removable media
Model Number: WDC WD20EZRX-00D8PB0
Serial Number: WD-[Deleted]
Firmware Revision: 0957
Standards:
Supported: 7 6 5 4
Likely used: 7
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63

CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 3907029168
Logical Sector size: 512 bytes
Physical Sector size: 512 bytes
device size with M = 1024*1024: 1907729 MBytes
device size with M = 1000*1000: 2000398 MBytes (2000 GB)
cache/buffer size = unknown
Capabilities:
LBA, IORDY(can be disabled)
Standby timer values: spec’d by Vendor, no device specific minimum
R/W multiple sector transfer: Max = 1 Current = 1
Advanced power management level: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
Write cache
Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* Advanced Power Management feature set
SET_MAX security extension
* 48-bit Address feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* WRITE_{DMA|MULTIPLE}_FUA_EXT
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Software settings preservation
Security:
supported
not enabled
not locked
frozen
not expired: security count
not supported: enhanced erase
more than 508min for SECURITY ERASE UNIT.
Checksum: correct
jon-Latitude ~ # hdparm -I /dev/sdc

/dev/sdc:

ATA device, with non-removable media
Model Number: WDC WD20EZRX-00DC0B0
Serial Number: WD-[Deleted]
Firmware Revision: 80.00A80
Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6 5
Likely used: 9
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63

CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 3907029168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
device size with M = 1024*1024: 1907729 MBytes
device size with M = 1000*1000: 2000398 MBytes (2000 GB)
cache/buffer size = unknown
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec’d by Standard, with device specific minimum
R/W multiple sector transfer: Max = 16 Current = 0
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
SET_MAX security extension
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* 64-bit World wide name
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* NCQ priority information
* unknown 76[15]
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Write Same (AC2)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
unknown 206[7]
unknown 206[12] (vendor specific)
unknown 206[13] (vendor specific)
unknown 206[14] (vendor specific)
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
278min for SECURITY ERASE UNIT. 278min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50014ee25e0c0386
NAA : 5
IEEE OUI : 0014ee
Unique ID : 25e0c0386
Checksum: correct
jon-Latitude ~ # hdparm -I /dev/sdd

/dev/sdd:

ATA device, with non-removable media
Model Number: WDC WD20EZRX-00D8PB0
Serial Number: WD-[Deleted]
Firmware Revision: 80.00A80
Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6 5
Likely used: 9
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63

CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 3907029168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
device size with M = 1024*1024: 1907729 MBytes
device size with M = 1000*1000: 2000398 MBytes (2000 GB)
cache/buffer size = unknown
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec’d by Standard, with device specific minimum
R/W multiple sector transfer: Max = 16 Current = 0
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
SET_MAX security extension
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* 64-bit World wide name
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* NCQ priority information
* unknown 76[15]
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Write Same (AC2)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
unknown 206[12] (vendor specific)
unknown 206[13] (vendor specific)
unknown 206[14] (vendor specific)
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
296min for SECURITY ERASE UNIT. 296min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50014ee6ae642d06
NAA : 5
IEEE OUI : 0014ee
Unique ID : 6ae642d06
Checksum: correct
jon-Latitude ~ # hdparm -I /dev/sde

/dev/sde:

ATA device, with non-removable media
Model Number: ST2000DL003-9VT166
Serial Number: 5YD35EBK
Firmware Revision: CC98
Transport: Serial, SATA Rev 3.0
Standards:
Used: unknown (minor revision code 0x0029)
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63

CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 3907029168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 1907729 MBytes
device size with M = 1000*1000: 2000398 MBytes (2000 GB)
cache/buffer size = unknown
Nominal Media Rotation Rate: 5900
Capabilities:
LBA, IORDY(can be disabled)
Standby timer values: spec’d by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = ?
Recommended acoustic management value: 208, current value: 208
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* DOWNLOAD_MICROCODE
SET_MAX security extension
* Automatic Acoustic Management feature set
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* 64-bit World wide name
Write-Read-Verify feature set
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Phy event counters
* unknown 76[15]
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Read/Write Long (AC1), obsolete
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
unknown 206[12] (vendor specific)
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
supported: enhanced erase
326min for SECURITY ERASE UNIT. 326min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000c50036afc769
NAA : 5
IEEE OUI : 000c50
Unique ID : 036afc769
Checksum: correct

Note the difference in the physical sector size between the 0957 firmware (512 bytes) and the “newer” 80.00A80 firmware (4096 bytes)…

Try disabling NCQ or setting the queue depth to 1.

A lot of NCQ implementations are buggy.

Per Linux dmesg output, NCQ is enabled on the two 80.00A80 disks, but not on the 0957 disk:

[47993.133042] ata5.00: ATA-7: WDC WD20EZRX-00D8PB0, 0957, max UDMA/133
[47993.133046] ata5.00: 3907029168 sectors, multi 1: LBA48
[47993.133554] ata5.00: configured for UDMA/133
[47993.148600] ata5.01: ATA-9: WDC WD20EZRX-00DC0B0, 80.00A80, max UDMA/133
[47993.148603] ata5.01: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[47993.149115] ata5.01: configured for UDMA/133
[47993.164684] ata5.02: ATA-9: WDC WD20EZRX-00D8PB0, 80.00A80, max UDMA/133
[47993.164688] ata5.02: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[47993.165206] ata5.02: configured for UDMA/133

But my real concern is the performance hit that the RAID array takes when one drive in the array has 512-byte sectors, and the others have 4096-byte sectors. Not to mention the fact that WD sold a drive advertized as “advanced format” with 4096-byte sectors when it clearly is not capable of that with the firmware limitation on that particular drive…

Also note that the 0957 firmware doesn’t support multiple sector transfer of 16 sectors like the 80.00A80 firmware does - it only supports 1 sector per request. That’s 512 bytes per request, versus 4096*16 = 64kbytes per request for 80.00A80 firmware.

I went ahead and set the NCQ depth to 1 (disabling it) in the two 80.00A80 drives and tested the performance of buffered reads using the Linux hdparm command, but there’s no noticable difference. 

AIUI, reporting the actual physical sector size is optional in the ATA standard. Have you tried constructing a RAID without the 0957 drive, even it is only a RAID 1 or RAID 0?

I put in a question to WD support, and they replied that the firmware can’t be upgraded in the field and recommended I RMA the drive and replace it. We’ll see what happens…