Quick answer: Run manage-bde -upgrade from an elevated Command Prompt on the affected volume — it converts the old on-disk format to the upgraded version Windows needs.
I know this error is infuriating. You're trying to turn on BitLocker (or Device Encryption, or a handful of other security features) and Windows just flatly refuses with a hex code that means nothing to most people. STATUS_VOLUME_NOT_UPGRADED (0xC000029C) shows up when the volume's on-disk structure is stuck at an older revision. Windows changed how it writes volume metadata back around Vista/Windows 7, and volumes created before that — or volumes that were cloned, restored from old images, or formatted by third-party tools — never got the memo.
The classic trigger: you pull a drive out of an old Windows XP or early Vista machine, drop it into a newer box, and now BitLocker refuses to touch it. Same thing happens after a disk image restore from Acronis or Macrium where the source was an MBR-era volume. Windows sees the old format and raises the flag rather than risk corrupting metadata it doesn't fully understand.
Fix 1: Upgrade the volume with manage-bde
- Hit Start, type
cmd, right-click Command Prompt, and pick Run as administrator. Yes, you actually need admin here — the upgrade touches volume metadata at the kernel level. - Find the drive letter of the volume throwing the error. Usually
C:, but check Disk Management (diskmgmt.msc) if you're unsure. - Run this:
manage-bde -upgrade C:
Swap C: for the right letter. You'll see a short message that the volume has been upgraded. That's it — retry BitLocker and it should sail through.
If manage-bde isn't recognized, you're on a Home edition that's missing the BitLocker tooling. Skip to Fix 2.
Fix 2: Convert MBR to GPT (or vice versa) if needed
Sometimes the upgrade command alone isn't enough. If the drive is MBR and you're trying to use UEFI-secure-boot features, you'll also need to convert the partition scheme. Back up first — this can wipe partitions if you fumble it.
From an elevated prompt:
diskpart
list disk
select disk 0
list partition
select partition 1
convert gpt
Only convert gpt on the disk you actually want to convert. I've seen people type the disk number wrong and nuke a data drive. Triple-check list disk output before selecting.
For Windows 10/11, Microsoft also ships mbr2gpt which is safer for a live system disk:
mbr2gpt /validate /disk:0 /allowFullOS
mbr2gpt /convert /disk:0 /allowFullOS
mbr2gpt won't run unless validation passes, so it's the safer call when you're converting the disk Windows itself is booting from.
Fix 3: The clean-data route (last resort)
If the volume is genuinely ancient and both fixes fail, the honest answer is: back up your data, wipe the volume, and format it fresh as NTFS or ReFS. A brand-new format writes the current volume revision automatically. Yes, it's the nuclear option. It's also sometimes the only thing that works when metadata has been mangled by a bad clone or a failing drive.
If SMART is reporting reallocated sectors or pending sectors on that disk, stop. Don't upgrade. Don't convert. Clone the data off first — you're about to lose it.
Why this error shows up more than people realize
Three scenarios keep landing on my desk:
- Refurbished laptops sold with drives imaged from XP-era master images. Cheap, common, and a guaranteed 0xC000029C the first time someone enables BitLocker.
- VM templates built on old VHDs. Hyper-V and VMware both preserve the old volume format through snapshot restores.
- External drives reformatted by cheap USB enclosures with buggy firmware that writes an old revision number. Yes, this is a real thing — the Sabrent EC-UASP is a known offender with certain drives.
Preventing it next time
Whenever you image or clone a drive, run manage-bde -upgrade on the destination before you do anything else. Takes five seconds. Saves you an hour of head-scratching later when a security team member asks why BitLocker won't turn on. And if you're buying refurbished hardware, check the volume format before you trust it with anything sensitive — fsutil fsinfo ntfsinfo C: will show you the version string.