Update: It seems like I've been the victim of USB Flash Drive counterfeiting, according to this information. The method below does not work to fix the drives. Use the method suggested in that article instead. My USB drive showed up initially as 1099GB, and using the tool they suggested yielded a 128MB drive. *bummer*
Original story: I was recently on a trip to Beijing in China, and during the visit I picked up several of those nice USB thumbdrives everyone seems to have.
After looking carefully at specifications and such I actually managed to pick up 4 8GB Kingston drives (USB2.0 3MB/6MB write/read speed, a bit slow, I know). Only cost me 120 Yuan per drive, I would say that is a good price compared to the European market.
But when I came home I figured I would try to install Windows XP onto one of these drives, and that was when the problems started.
Without thinking I removed the existing partition on the drive (Win95 FAT32 LBA) to make room for a new NTFS partition for Windows XP. But when I wanted to create a new partition I could only create a 1GB partition.
HEY, I thought! Have they sold me a 1GB drive labeled as an 8GB?!!? I unpacked one of the other drives and inserted it in a machine which was up and running. And correctly, it displays the current capacity as 8GB. I was a bit puzzled.
After some looking around I noticed that the drives are not listed at Kingston's site. Probably some OEM product or something that Kingston doesn't support directly I thought, or maybe it's new and they haven't updated their site with the new models. Either way, I was in a tight jam. I didn't want to be stuck with a 1GB drive when I had bought a drive with 8GB capacity.
The hacker in me arose and I started to compare the differences between the drive that actually stated that it was 8GB (untouched drive) and the one I had messed up.
After a lot of tinkering I found out that the BIOS of the computer reports it's geometry as 1GB instead of 8GB. This is also true for the unused 8GB drive. I would think that faulty geometry reporting was a thing of the past, but I guess not. Okay, I thought, let me just run it through fdisk with the correct parameters I found on one of the unused drives.
This is Linux fdisk (use a Knoppix LiveCD if you don't have access to a Linux system).
Make sure you exchange /dev/sdb with the master device node of your flash drive. Don't blame me if you hose your main system with this command. Use fdisk -l to check out possibilities.
$ fdisk -b 512 -C 8388610 -H 8 -S 32 /dev/sdb
d (delete existing partition)
n (create new partition)
1 (first parition)
<enter> (start at the beginning)
65532 (instead of 8388610 as it suggests)
t (change partition type)
c (W95 FAT32 LBA)
a (make bootable)
p (show partition table and make sure you're happy)
w (save table, you might need to reboot if it says so)
This worked as intended.
I then followed it with mkdosfs /dev/sdb1 and mounted the new filesystem. And indeed, it was 8GB. I created some files, moved the stick to another system and it worked as intended.
Who needs manuals and tech support anyway?