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

6

1

I recently upgraded a home-built external hard drive from 1TB to 3TB. In doing so, I learned that it's bridge board doesn't support drives larger than 2TB. I had to get a newer case in order to support this drive.

Does anyone know why this should be true?

From the standpoint of the SATA interface, there should be no problem. The LBA-28 system of identifying blocks imposed a 128GiB limit (assuming the usual 512 byte blocks), but that hasn't been a serious concern for over 10 years. Everything since then (including all SATA devices) supports LBA-48, which tops out at 128PiB and therefore should easily support 3TB.

I am aware of the MBR partition table issue with its 2TB limit, but that shouldn't affect a SATA-USB bridge chip, since it is (or should be) just translating disk blocks between two protocols.

I'm thinking that this might simply be a case of chip makers getting lazy, using 32-bit integers for an application that really needs to support 48-bit values. Is it really that simple (and IMO, inexcusable) or is there something else I'm missing?

Just curious, but I haven't been able to Google an answer from anywhere yet.

David C.

Posted 2013-07-22T20:31:10.217

Reputation: 863

Answers

8

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 SCSI Read command (http://en.wikipedia.org/wiki/SCSI_Read_Commands#Read_.286.29) as an example, I see that there are three different versions of the command. The original has a 21-bit block address (therefore topping out at 1GB worth of 512 byte blocks). In 1987, they added a version that uses 32-bit block addresses (topping out at 2TB). Then in 2000, they added a version with 64-bit block addresses (topping out at 8Zib - 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.

I don't know if this is correct, but it's logical.

David C.

Posted 2013-07-22T20:31:10.217

Reputation: 863

1Same story with many many RAID controllers. An awful lot of cheaper/older ones can only support 2TB volumes because of the same limitation. – Mark Henderson – 2013-07-22T21:52:52.070