Using a large non-OS drive without 48-bit LBA

nightVzn

Distinguished
Feb 14, 2010
15
0
18,510
I'm reposting one part of a longer multi-part question I posted previously, but the relevant portion was buried in the post and may not have been seen.

I'm thinking of adding a second hard disk for data (no OS, no apps), and I want to make sure I fully understand the implications of drize size limitations imposed by BIOS and various versions of Windows XP. I've done a bunch of Googling and reading (including some threads here), but I want to make sure I'm 100% clear before I proceed.

My motherboard is a Tyan Tiger 100, with two onboard EIDE ports. I have gotten the impression from various sources I've read that the BIOS (even the most recent version, which I have) supports drives up to 32 GB in size. I am also familiar with the well-documented 137-GB limit in Windows XP prior to SP1.

My main drive is 300 GB, but it's on a SATA card with its own drivers, so no issue there.

I'm thinking of putting a 500-GB drive (strictly for data) on one of the onboard EIDE ports, instead of connecting a second drive to my regular-old-PCI SATA card, for performance reasons. I am aware that there would be problems with fully recognizing it in some contexts, but the only OS I'm running is XP, and I don't care if XP doesn't recognize the drive during initial setup since it's only for data. (I know about slipstreaming but I don't care to bother with that; nor do I intend to use disk management software.)

But I want to ask a few questions to make sure I'm understanding this correctly:


1. Is it true that the BIOS limitations apply only in an OS like DOS, and that XP ignores such limits and uses its own drivers? In other words, as long as I'm using XP SP1 or newer, I have 48-bit LBA regardless of BIOS limits, correct?


2. So does this mean I have nothing to lose by putting a large drive on one of the EIDE ports, as long as I don't need to access it until I have at least SP1 installed? And then XP will suddenly recognize it, and all will be well in the world, except for some unexpected rearrangement of drive letters which I'm sure I can fix easily ... and I can just leave the drive unconfigured in the BIOS. Is this assessment correct?


Thanks to anybody who can confirm these points!
 
Solution
To use a HDD larger than 137 GB (by the manufacturer's definition) or 128 GB (by Microsoft's way of counting) you need "48-bit LBA Support" in three places:
1. the HDD controller, usually built into the mobo chips and BIOS;
2. the hard drive itself - obviously WILL be there on any drive over that limit; and,
3. The OS - Win XP with ANY Service Pack installed, and all later Windows, have it.

IF you have only the very first version of XP installed, I STRONGLY recommend you update to SP3 BEFORE adding a large HDD. But if you already have SP1 or later installed, don't rush now.

The question is whether your BIOS has the 48-bit LBA Support requirement. Now, ALL SATA systems DO have it. But you plan to add an IDE HDD, so you really need to...

nightVzn

Distinguished
Feb 14, 2010
15
0
18,510
Hey, I'm replying to my own post, how fun...

Right after posting it, I found this Microsoft Knowledge Base article:

http://support.microsoft.com/kb/303013

About a third of the way down the page, it says you need 48-bit LBA to be supported by the BIOS in addition to the OS (XP SP1 or greater). And here I thought Windows ignored the BIOS for any peripheral-access purposes and used its own drivers.

However, that Microsoft article is incredibly confusing. I'm reading it for about the fifth time now and I still don't get what they're saying about "the following issues may occur," since the stated conditions seem to contradict each other. (Love the part about "capacity that is see comment than 137 GB." Er...nice one guys...)

So maybe you can do 48-bit LBA without BIOS support if the OS supports it?

I definitely would still appreciate some input and clarification.
 

Paperdoc

Polypheme
Ambassador
To use a HDD larger than 137 GB (by the manufacturer's definition) or 128 GB (by Microsoft's way of counting) you need "48-bit LBA Support" in three places:
1. the HDD controller, usually built into the mobo chips and BIOS;
2. the hard drive itself - obviously WILL be there on any drive over that limit; and,
3. The OS - Win XP with ANY Service Pack installed, and all later Windows, have it.

IF you have only the very first version of XP installed, I STRONGLY recommend you update to SP3 BEFORE adding a large HDD. But if you already have SP1 or later installed, don't rush now.

The question is whether your BIOS has the 48-bit LBA Support requirement. Now, ALL SATA systems DO have it. But you plan to add an IDE HDD, so you really need to check out the mobo maker's website for two things: (A) does the BIOS you have support it already on the IDE ports; or, (B) can you download and burn a new BIOS version that does? Without it you cannot use the large hard drive. In fact, there is the possibility that trying to do so could cause disaster later. What could happen is that a write operation is generated by the OS to go to a location on the drive around 140 GB, but the IDE controller chops off the high bits of the address since it is only sending 28 binary bits in the address. So the disk gets a write instruction for a place around 12 GB that has other data already in it and corrupts that file!

If you really have no 48-bit LBA support in your mobo's IDE section and cannot update to get it you have two choices. One, obviously, is to go back to adding the new large HDD to your existing PCI SATA controller card. The other is to proceed with the IDE concept, but deliberately limit your choice to a drive no more than 128 GB (M$ counting system). I had this problem with an older system and solved it the second way with a twist. I bought a 160 GB Seagate IDE HDD and used a subtle feature they include. I downloaded their Seatools for DOS utility package. One of its tools for Seagate HDD's allows you to set the drive's own on-board controller board to behave entirely as if its capacity is some value you set manually. To do this you actually set the maximum number of Sectors it can address, or the maximum LBA number. That number is 2^28 or 2,684,35,456 sectors. (At 512 bytes per Sector, that comes to the magic number 137,438,953,472 bytes.) From then on the disk will tell the world it is a HDD unit of that size and never try to do anything else. (Actually, another tool in the package will let you return the HDD to its full size later.)
 
Solution

nightVzn

Distinguished
Feb 14, 2010
15
0
18,510
Thank you very much, very helpful answer. I'm glad I kept digging and asking questions, because with all the reading I was doing on this before, I was about to come away with the impression that you can do 48-bit LBA if the OS supports it, whether or not the BIOS does.

After reading your reply and a few other links I found today, it's becoming clear that I need to drop the EIDE idea and simply add a second drive to my SATA PCI card. It's probably for the best anyway, since Western Digital's 1-TB Black (which I'm probably going to buy) has a better price-to-capacity ratio than their 500-GB PATA drive, not to mention a longer warranty and beefier drive mechanism, if I remember correctly.

I have the latest BIOS for my board, and the documentation says nothing about 48-bit LBA. Plus the latest version came out in 2001, which I believe was a year before 48-bit LBA even existed. Actually it might not even do full 28-bit LBA -- it might be limited to a 32-GB drive size, according to some posts I read. In any case, the chances of doing 48-bit LBA on this board's onboard controllers seem just about nil. I guess my SATA card was an even better purchase than I realized.

I guess after reading your reply, I'm left with one other small mystery. During setup/installation, Windows XP (the original, pre-SP1 version) has no problem fully recognizing my 300-GB SATA drive. I thought this was because, as you said, the SATA controller itself already supports 48-bit LBA, and because I load the driver from floppy during XP setup. But strictly speaking, the OS itself does not support 48-bit LBA at that point (even though I install the service packs later), which violates one of the three criteria you stated. Or does loading the SATA controller's driver during XP setup effectively count as adding 48-bit LBA support to the OS?

I'm assuming that's the case, because XP setup allowed me to create a full 300-GB partition when I made my first system build on the drive, and it's always worked fine since then.
 

Paperdoc

Polypheme
Ambassador
That is a very interesting story. I know that original XP did NOT have 48-bit LBA support. Yet your experience is that you loaded the SATA driver during its installation and used the drive in that mode, and it DID allow creation and use of a 300 GB drive BEFORE updating to SP1. That is a "wrinkle" I had not considered. It does appear that having the SATA driver included in XP actually provided the 48-bit support part. I guess all the info on "original XP does not" is based on using XP with no additional drivers installed, and relying only on the IDE buillt-in drivers it contains.

Thanks for this new info.
 

nightVzn

Distinguished
Feb 14, 2010
15
0
18,510
Well thank you very much as well. I've been upgrading computers for over 15 years now, including many hard disks, and it's funny how even after all this time, upgrading storage is still such a thorny task depending on the respectives ages of all the components involved. That, and documentation tends to be tragically unclear.

So thank you for the facts and clarification. I've put a ton of effort into researching how best to go about purchasing a second drive for this old system, and I think I finally know how to proceed.