TPMAPI_E_BUFFER_TOO_SMALL (0X80290106) Fix
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
- Allocate a bigger buffer. If you're writing code, call the API twice: first with
pcbBufferset to 0 to get the required size, then allocate that size and call again. For example, withTbsi_Get_TCG_LogorTpm11_GetCapability, pass a null buffer first to get the real size. - Clear the TPM (last resort). Open PowerShell as admin and run
. This resets the TPM to factory defaults — you'll lose BitLocker keys, so back them up first viaClear-Tpm
. After clearing, reboot and let Windows reinitialize the TPM.Backup-BitLockerKeyProtector -MountPoint C: - 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.
- 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?