1. Outdated or Corrupt TPM Driver (tpm.sys)
The most common trigger for 0X80290101 is a stale tpm.sys driver — especially on systems that ran a Windows feature update (22H2 → 23H2) without a clean TPM driver reinstall. What's actually happening here is that the TPM base service (tbs) calls into the driver with a command buffer that expects a certain structure version, but the driver still expects the old layout. The driver reads past the buffer, gets garbage, and throws TPMAPI_E_NOT_ENOUGH_DATA.
Fix: Force Update the TPM Driver
- Open Device Manager (Win+X → Device Manager).
- Expand Security devices. Look for Trusted Platform Module 2.0 (might also show as TPM or Intel® Platform Trust Technology).
- Right-click it → Update driver → Browse my computer for drivers → Let me pick from a list of available drivers on my computer.
- Select the newest driver listed (usually a Microsoft-provided one dated the latest). If there's only one, still select it — this re-registers the driver.
- Reboot.
Skip the “Search automatically” option — it usually says you're up to date when you're not. The manual pick forces the system to re-read the driver binary and reinitialize the TPM stack. I've seen this fix the error on Lenovo ThinkPads and Dell OptiPlexes after they applied the KB5034843 patch.
2. Corrupt TPM Base Data (NVRAM)
The error also appears when the TPM's non-volatile RAM holds stale or partial provisioning data. This happens after a BIOS update that resets TPM firmware but doesn't clear the NVRAM structures Windows wrote to. The command buffer is fine — the TPM itself can't parse it because the internal state machine expects a different sequence.
Fix: Clear the TPM (Not a Full Factory Reset)
Don't use the BIOS “Clear TPM” option unless you're ready to re-enroll everything. Instead, use Windows' own tool:
# Run as Administrator
Clear-Tpm -PlatformValidationProfile -ErrorAction SilentlyContinue
Start-Sleep -Seconds 5
Initialize-Tpm -AllowClear -AllowPhysicalPresence
Then reboot and let Windows re-provision. This clears only the Windows-owned TPM base data — not the endorsement key or BitLocker recovery keys. The reason this works is that Clear-Tpm with -PlatformValidationProfile removes the corrupt PCR log and NVRAM index that Windows manages, while leaving the hardware root intact. After re-provisioning, the command buffer aligns again.
3. Corrupt Registry Key in TPM Provider
Less common, but if the first two didn't work, check the registry. A corrupted TpmBaseKey or ProvisioningStatus value in HKLM\SYSTEM\CurrentControlSet\Services\TPM\State can cause the TPM base service to misread the command buffer size. This often follows a failed BitLocker suspension or a third-party TPM management tool that wrote a malformed value.
Fix: Repair the Registry Key
- Open Regedit, navigate to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TPM\State - Look for ProvisioningStatus — it should be
dword:00000002(Provisioned). If it's anything else (like 0 or 3), change it to 2. - Also check TpmBaseKey — it's a binary value. If it's all zeros or missing, the provisioning didn't complete. Delete the TpmBaseKey value (Windows will recreate it on next boot).
- Reboot.
Don't delete the entire State key — only the values listed. Deleting the key triggers a full TPM re-provisioning, which can break BitLocker if the recovery key isn't backed up.
Quick-Reference Summary Table
| Cause | Fix | When It Happens |
|---|---|---|
| Stale tpm.sys driver | Manual driver update via Device Manager | After feature update or driver rollback |
| Corrupt NVRAM base data | Clear-Tpm + Initialize-Tpm | After BIOS update or partial provisioning |
| Corrupt registry key | Fix ProvisioningStatus, delete TpmBaseKey | After failed BitLocker suspend or third-party tool |