I have a WD hard drive that simply refuses to be read when put in a WD enclosure for SATA to USB 2. The drive shows up in macOS, Ubuntu and Windows, but appears uninitialized/unpartitioned.
Here are the details:
- Fails to read on three separate machines: Raspberry Pi 4, PC laptop, MacBook Air.
- Fails to read properly in Linux, macOS and Windows.
- The drive itself works fine (read, write) using another, vertical SATA to USB 3 dock, as well as internal SATA connectors on a fourth machine.
- Another, identical drive, purchased at the same time, works fine with the problematic enclosure in question. A third unrelated drive also works with the enclosure.
- Two USB cables tested, yielding the same results.
Additional details
- The problematic drive is a 1TB WD10EADS.
- The enclosure is a WD Elements P/N WDBAAU0020HBK-01
- The enclosure originally came with a 2TB drive, i.e twice the size.
- Both MBR and GPT drives seem to work with the enclosure — just not this drive.
- There does not appear to be any problems with the partition table. For one it works using other interfaces, as mentioned, and at that point
fdisk
finds no problems, andgdisk
sees it as pure MBR.
I'm having a hard time figuring out what I've overlooked. What I've done so far suggests that there's no problem with the drive nor the enclosure, and that there isn't a problem with the pairing of the enclosure with this particular HDD model.
Can I do any other tests to understand what the problem is?
Update dec 24 (more details)
- The original drive for the enclosure is presumed killed by 🐈🐈⬛ and plays no part in this question.
- The enclosure is powered. The power supply measures a stable 12 V (under no significant load).
- The drives have no -- nor have ever had -- any jumpers. For those interested, on this model the jumper pins provide the features "Spread Spectrum Clocking", "Power Up In Standby" and "1.5GB PHY".
fdisk -l
for the two same-model drives in the working SATA to USB 3 dock:
Non-working drive:
Disk /dev/sdc: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: EADS-00L5B1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x6f300962
Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 2048 208898047 208896000 99.6G 7 HPFS/NTFS/exFAT
/dev/sdc2 208898048 415746047 206848000 98.6G 7 HPFS/NTFS/exFAT
/dev/sdc3 642889170 1501813170 858924001 409.6G 7 HPFS/NTFS/exFAT
/dev/sdc4 415748094 642888295 227140202 108.3G f W95 Ext'd (LBA)
/dev/sdc5 529319936 642888295 113568360 54.2G 83 Linux
Partition table entries are not in disk order.
Standard error output:
Partition 3 does not start on physical sector boundary.
Partition 4 does not start on physical sector boundary.
Working drive:
Disk /dev/sdd: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: EADS-00L5B1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 12B5A74F-A8D5-4556-AF05-6CB2229DCBA0
Device Start End Sectors Size Type
/dev/sdd1 2048 1134325759 1134323712 540.9G Microsoft basic data
/dev/sdd2 1134325760 1953521663 819195904 390.6G Microsoft basic data
If the request for "fdisk -l
in both cases" means "...in both enclosures" then this is the output with the non-working enclosure:
fdisk: cannot open /dev/sdc: Input/output error
Update 25 dec
- The original drive for the enclosure is a WD20EARX-00PASB0, i.e. a WD Caviar Green, just like the problem drive.
- Both the original drive and the problematic one are "512e" according to a price comparison site (the only source I could find for that info — I sure didn't see it in the official product data sheet which is itself impossible to find without resorting to third party sites)
- Using a working drive in the problematic enclosure
fdisk -l
still reports that both logical and physical sectors are 512 in size, just like when using the USB 3 dock or the internal SATA connection. I don't understand in what way the enclosure changes the sector sizes, if it does. - The
fdisk
reported "I/O size" does change between interfaces, but the phrase "I/O size" is extremely vague and I can't find any explanation of that field in the fdisk manual, rendering it meaningless to me. This definition leaves me none the wiser since in my eyes that's just the definition of the logical sector size. - The identical working drive seems to "work" in the enclosure to the extent that macOS detects and mounts a volume on it, after which I concluded it was "working". Now it seems that macOS only sees one out of two partitions on it using the enclosure (!). See
fdisk -l
output below.
fdisk -l
of "working" identical drive in enclosure:
GPT PMBR size mismatch (1953525167 != 1953519615) will be corrected by write.
Disk /dev/sdb: 931.51 GiB, 1000202043392 bytes, 1953519616 sectors
Disk model: Ext HDD 1021
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdb1 1 1953519615 1953519615 931.5G ee GPT
In words, the working drive + enclosure can be read properly but does not appear to expose a usable partition table on Linux. This seems like a tangential problem perhaps explained by the Advanced Format answers below. Compare this output with using it in the USB 3 dock above, where it exposes a working partition table: the sector sizes are the same but "I/O size" isn't: I/O size (minimum/optimal): 4096 bytes / 4096 bytes
. Once again it's not at all clear what "I/O size" even means, making it difficult to form a proper understanding of the situation and make any use of the fdisk
output. We'll leave this problem here though, since it's not the focus of this question.
dmesg -w
comparison when plugging in the enclosure
The working drive
[ 2253.906554] usb 3-1: new high-speed USB device number 7 using xhci_hcd
[ 2254.055583] usb 3-1: New USB device found, idVendor=1058, idProduct=1021, bcdDevice=20.21
[ 2254.055605] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2254.055612] usb 3-1: Product: Ext HDD 1021
[ 2254.055617] usb 3-1: Manufacturer: Western Digital
[ 2254.055622] usb 3-1: SerialNumber: 574341553437333531363634
[ 2254.059918] usb-storage 3-1:1.0: USB Mass Storage device detected
[ 2254.061302] scsi host7: usb-storage 3-1:1.0
[ 2255.073051] scsi 7:0:0:0: Direct-Access WD Ext HDD 1021 2021 PQ: 0 ANSI: 4
[ 2255.074288] sd 7:0:0:0: Attached scsi generic sg1 type 0
[ 2255.074871] sd 7:0:0:0: [sdb] 1953519616 512-byte logical blocks: (1.00 TB/932 GiB)
[ 2255.076423] sd 7:0:0:0: [sdb] Write Protect is off
[ 2255.076430] sd 7:0:0:0: [sdb] Mode Sense: 17 00 10 08
[ 2255.077935] sd 7:0:0:0: [sdb] No Caching mode page found
[ 2255.077942] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[ 2255.107533] sd 7:0:0:0: [sdb] Attached SCSI disk
The non-working drive
[ 2428.062663] usb 3-1: new high-speed USB device number 8 using xhci_hcd
[ 2428.211750] usb 3-1: New USB device found, idVendor=1058, idProduct=1021, bcdDevice=20.21
[ 2428.211773] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2428.211781] usb 3-1: Product: Ext HDD 1021
[ 2428.211786] usb 3-1: Manufacturer: Western Digital
[ 2428.211791] usb 3-1: SerialNumber: 574341553437333731323230
[ 2428.217156] usb-storage 3-1:1.0: USB Mass Storage device detected
[ 2428.217966] scsi host7: usb-storage 3-1:1.0
[ 2429.245027] scsi 7:0:0:0: Direct-Access WD Ext HDD 1021 2021 PQ: 0 ANSI: 4
[ 2429.246381] sd 7:0:0:0: Attached scsi generic sg1 type 0
[ 2429.246863] sd 7:0:0:0: [sdb] 1953519616 512-byte logical blocks: (1.00 TB/932 GiB)
[ 2429.248354] sd 7:0:0:0: [sdb] Write Protect is off
[ 2429.248358] sd 7:0:0:0: [sdb] Mode Sense: 17 00 10 08
[ 2429.249861] sd 7:0:0:0: [sdb] No Caching mode page found
[ 2429.249868] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[ 2429.254561] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.254570] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.254575] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.254579] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.254582] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.254590] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.255141] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.255147] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.255152] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.255156] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.255159] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.255166] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.255680] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.255685] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.255690] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.255694] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.255696] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.255703] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.255716] ldm_validate_partition_table(): Disk read failed.
[ 2429.256223] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.256228] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.256233] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.256237] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.256239] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.256245] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.256765] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.256770] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.256775] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.256778] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.256781] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.256787] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.257305] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.257309] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.257314] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.257318] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.257320] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.257326] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.261410] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.261420] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.261425] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.261430] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.261432] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.261441] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.261460] Dev sdb: unable to read RDB block 0
[ 2429.262000] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.262006] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.262011] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.262015] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.262017] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.262024] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.262578] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.262584] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.262589] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.262593] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[ 2429.262595] critical target error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.262602] Buffer I/O error on dev sdb, logical block 0, async page read
[ 2429.263143] sd 7:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[ 2429.263151] sd 7:0:0:0: [sdb] tag#0 Sense Key : Data Protect [current]
[ 2429.263156] sd 7:0:0:0: [sdb] tag#0 Add. Sense: Logical unit access not authorized
[ 2429.263160] sd 7:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 00 18 00 00 08 00
[ 2429.263162] critical target error, dev sdb, sector 24 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 2429.263169] Buffer I/O error on dev sdb, logical block 3, async page read
[ 2429.264241] sdb: unable to read partition table
[ 2429.264353] sd 7:0:0:0: [sdb] Attached SCSI disk
hdparm -I
of faulty drive
/dev/sdc:
ATA device, with non-removable media
Standards:
Likely used: 1
Configuration:
Logical max current
cylinders 0 0
heads 0 0
sectors/track 0 0
--
Logical/Physical Sector size: 512 bytes
device size with M = 1024*1024: 0 MBytes
device size with M = 1000*1000: 0 MBytes
cache/buffer size = unknown
Capabilities:
IORDY not likely
Cannot perform double-word IO
R/W multiple sector transfer: not supported
DMA: not supported
PIO: pio0
fdisk -l
in both cases?fdisk -l
is all about the drive itself? The point was to see if there's a change in logical block size / number of blocks between the two cases, and whether the MBR / partition table is entirely invisible in the not working case. It's not a SMART scan that I asked for / it would do.fdisk -l
, does SCSI read capacity work at all? (I mean like, withdmesg -w
running, what's the new output do you can when you plug the non-working drive+enclosure in?)1953519616
instead of1953525168
) for both identical drives. Unless you have the reason and solution for it, I'd say you should probably stop trying to get it work. (I haven't really check what exactly you are asked to do in the modification / hacking answer but I suppose it's probably one of the best shots for your final attempt.)5552 = 1953525168 % 2048 + 4096
and4144 = 976773168 % 2048 + 4096
. (Not that4096
here is a number of 512-byte blocks, i.e. 2MiB, not a number of bytes.) While we got the math, we still have no idea what exactly it's doing behind the scene, let alone "fixing" it...