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.


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.

|improve this answer|||||
  • 1
    Same 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 Jul 22 '13 at 21:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.