Anyone know why older USB drive cases have a 2TB size limit?

Solution 1:

OK, I'm answering my own question 30 minutes later. I couldn't stop searching for a reason and I think I found it. It's not the ATA spec, which supports 48-bit block addresses. It's actually the USB spec.

According to Wikipedia (http://en.wikipedia.org/wiki/USB_mass_storage_device_class#Device_access) the USB mass storage class implements the SCSI transparent command set. Looking at the various SCSI Read commands (https://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068j.pdf, sections 3.15 through 3.19) I see that there are several different versions of the command:

  • READ(6) uses 21-bit block address, imposing a 1 GiB limit for devices with 512 byte blocks.
  • READ(10) and READ(12) use 32-bit block addresses, imposing a 2 TiB limit for devices with 512 byte blocks.
  • READ(16) and READ(32) use 64-bit block addresses, imposing an 8 ZiB limit (8 giga-terabytes).

At this point, I think the answer is clear. The original chips didn't implement the calls with 64-bit addresses, figuring that there was no point. Then when 3TB drives became available, they were enhanced to support the 64-bit address calls.