0X80290106

TPMAPI_E_BUFFER_TOO_SMALL (0X80290106) Fix

Windows Errors Intermediate 👁 0 views 📅 Jun 9, 2026

Happens when a TPM call gets a buffer too small for the data. We fix it by adjusting the buffer size or clearing the TPM.

What Triggers This Error

You'll see TPMAPI_E_BUFFER_TOO_SMALL (0X80290106) when something asks the TPM for data — like a BitLocker key backup or a TPM attestation request — but the buffer you passed in isn't big enough to hold the response. Common triggers: running tpmtool with /getdeviceinformation, scripting against the TPM base services API, or using Get-Tpm in PowerShell when the TPM is in a weird state.

Root Cause

The TPM returned data that exceeded the size of your allocated buffer. What's actually happening here is the TPM's response has grown (maybe due to new PCR values or a changed endorsement key size) and your code or tool assumed a static buffer. Windows TPM 2.0 responses can vary — especially if you're dealing with the EK or AIK certificates. The API call fails with 0x80290106 because it literally can't copy the result into the space you gave it.

Fix Steps

  1. Allocate a bigger buffer. If you're writing code, call the API twice: first with pcbBuffer set to 0 to get the required size, then allocate that size and call again. For example, with Tbsi_Get_TCG_Log or Tpm11_GetCapability, pass a null buffer first to get the real size.
  2. Clear the TPM (last resort). Open PowerShell as admin and run
    Clear-Tpm
    . This resets the TPM to factory defaults — you'll lose BitLocker keys, so back them up first via
    Backup-BitLockerKeyProtector -MountPoint C:
    . After clearing, reboot and let Windows reinitialize the TPM.
  3. Update TPM drivers. Go to the device manager, find Security devices → Trusted Platform Module 2.0, right-click → Update driver → Browse for drivers → Let me pick → choose the Microsoft-provided driver. Sometimes OEM drivers are stale.
  4. Run the TPM troubleshooter. Settings → Update & Security → Troubleshoot → Additional troubleshooters → TPM. It'll check for driver and initialization issues.

If It Still Fails

Check the TPM's base service state: run sc query tbs in cmd. It must say STATE: 4 RUNNING. If not, restart it with net start tbs. Also verify your TPM firmware version — some early TPM 2.0 chips from 2016 had a bug where they'd return an oversized response on certain commands. A firmware update from your PC manufacturer's site fixes that. Finally, if you're hitting this in a script, post the exact API call — the buffer size argument might need to be larger than the struct size (add 64 bytes as a safety margin).

Was this solution helpful?