|
| 1 | +--- |
| 2 | +title: USB-connected Audio or Video Devices Malfunction when Connected to Specific Intel-Based Devices |
| 3 | +description: Describes how to apply an update and a registry fix to resolve USB audio and video issues on Intel 500/600/700 PCH systems that use discrete TPM chips. |
| 4 | +ms.service: windows-client |
| 5 | +ms.topic: troubleshooting-general |
| 6 | +ms.date: 10/02/2025 |
| 7 | +ai-usage: ai-assisted |
| 8 | +ms.reviewer: kaushika, v-tappelgate, chadbee |
| 9 | +ms.custom: |
| 10 | +- sap:windows device and driver management\issues with drivers or updates for peripheral devices |
| 11 | +- pcy:WinComm Devices Deploy |
| 12 | +appliesto: |
| 13 | +- ✅ <a href=https://learn.microsoft.com/windows/release-health/supported-versions-windows-client target=_blank>Supported versions of Windows Client</a> |
| 14 | +--- |
| 15 | + |
| 16 | +# USB-connected audio or video devices malfunction when connected to specific Intel-based devices |
| 17 | + |
| 18 | +This article provides workarounds and fixes for an issue that affects specific Intel-based devices. USB audio or video devices that are attached to the affected devices might not function correctly. These USB devices include cameras, speakers, microphones, and headsets. |
| 19 | + |
| 20 | +## Symptoms |
| 21 | + |
| 22 | +You experience one or more of the following symptoms: |
| 23 | + |
| 24 | +- You hear occasional glitches or unexpected noise (such as clicking or popping) in the audio stream. |
| 25 | +- You see momentary visible glitches in a video stream. |
| 26 | +- A USB audio or video device stops working. |
| 27 | + |
| 28 | +## Affected devices |
| 29 | + |
| 30 | +This issue affects Intel-based systems that use a 500, 600, or 700 series Platform Controller Hub that has discrete Trusted Platform Module (dTPMs) chips. Computers that use firmware TPM (fTPM) technology aren't affected by this issue. |
| 31 | + |
| 32 | +## Workaround |
| 33 | + |
| 34 | +To work around the issue, follow these steps: |
| 35 | + |
| 36 | +1. Unplug the device, and then reattach it to the computer. |
| 37 | +2. If step 1 doesn't work, restart the computer. |
| 38 | + |
| 39 | +## Cause |
| 40 | + |
| 41 | +This problem occurs because of delays that occur on an internal hardware bus when Windows communicates with the discrete TPM. These delays, in turn, delay communication with the USB controller and generate Split Transaction errors on the USB bus. Therefore, time-sensitive USB traffic (such as audio and video streaming) might experience glitches or errors. |
| 42 | + |
| 43 | +## Resolution |
| 44 | + |
| 45 | +[!INCLUDE [Registry important alert](../../../includes/registry-important-alert.md)] |
| 46 | + |
| 47 | +The October 2025 update for Windows 24H2 introduces a fix for this hardware issue. To use this fix, follow these steps: |
| 48 | + |
| 49 | +1. On the affected device, install the October 2025 update. Restart the device, if it's necessary. |
| 50 | + |
| 51 | +1. Verify that the device uses a dTPM instead of an fTPM. To find this information, check the device BIOS settings or contact the device manufacturer. |
| 52 | + |
| 53 | +1. Run the diagnostic script in the [More information](#more-information) section of this article. |
| 54 | + |
| 55 | + This script checks whether the fix applies to your device. |
| 56 | + |
| 57 | +1. Create the following registry entry: |
| 58 | + |
| 59 | + - Subkey: `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Tpm` |
| 60 | + - Type: **REG_DWORD** |
| 61 | + - Name: **TPMDriverReadAfterWriteCount** |
| 62 | + - Value: **0x1 (1)** |
| 63 | + |
| 64 | + For example, open an administrative Command Prompt window, and then run the following command: |
| 65 | + |
| 66 | + ```console |
| 67 | + reg.exe ADD HKLM\SYSTEM\CurrentControlSet\Control\Tpm /v TPMDriverReadAfterWriteCount /t REG_DWORD /d 1 |
| 68 | + ``` |
| 69 | + |
| 70 | +## More information |
| 71 | + |
| 72 | +You can use the following Windows PowerShell script to determine whether your PC has one of the controllers that might be affected. To run this script, create a file that uses a name such as **Check-USBSplitTransactionVulnerability.ps1**. Then, paste the following text into the file, and run the script at a PowerShell command prompt. |
| 73 | + |
| 74 | +> [!NOTE] |
| 75 | +> In Device Manager, the device in question appears under **System Devices**. It has a name that resembles "Intel(R) LPC Controller/eSPI Controller." |
| 76 | + |
| 77 | +```powershell |
| 78 | +# USB Split Transaction Vulnerability Detection Script |
| 79 | +# This script checks if a device is vulnerable to USB split transaction issues |
| 80 | +# by examining the Windows registry for specific Intel PCH device IDs |
| 81 | + |
| 82 | +# Define the vulnerable PCH device IDs from the CPP code |
| 83 | +$VulnerablePchDeviceIds = @( |
| 84 | + "VEN_8086&DEV_4380", "VEN_8086&DEV_4381", "VEN_8086&DEV_4382", "VEN_8086&DEV_4383", |
| 85 | + "VEN_8086&DEV_4384", "VEN_8086&DEV_4385", "VEN_8086&DEV_4386", "VEN_8086&DEV_4387", |
| 86 | + "VEN_8086&DEV_4388", "VEN_8086&DEV_4389", "VEN_8086&DEV_438A", "VEN_8086&DEV_438B", |
| 87 | + "VEN_8086&DEV_438C", "VEN_8086&DEV_438D", "VEN_8086&DEV_438E", "VEN_8086&DEV_438F", |
| 88 | + "VEN_8086&DEV_4390", "VEN_8086&DEV_4391", "VEN_8086&DEV_4392", "VEN_8086&DEV_4393", |
| 89 | + "VEN_8086&DEV_4394", "VEN_8086&DEV_4395", "VEN_8086&DEV_4396", "VEN_8086&DEV_4397", |
| 90 | + "VEN_8086&DEV_4398", "VEN_8086&DEV_4399", "VEN_8086&DEV_439A", "VEN_8086&DEV_439B", |
| 91 | + "VEN_8086&DEV_439C", "VEN_8086&DEV_439D", "VEN_8086&DEV_439E", "VEN_8086&DEV_439F", |
| 92 | + "VEN_8086&DEV_7A80", "VEN_8086&DEV_7A81", "VEN_8086&DEV_7A82", "VEN_8086&DEV_7A83", |
| 93 | + "VEN_8086&DEV_7A84", "VEN_8086&DEV_7A85", "VEN_8086&DEV_7A86", "VEN_8086&DEV_7A87", |
| 94 | + "VEN_8086&DEV_7A88", "VEN_8086&DEV_7A89", "VEN_8086&DEV_7A8A", "VEN_8086&DEV_7A8B", |
| 95 | + "VEN_8086&DEV_7A8C", "VEN_8086&DEV_7A8D", "VEN_8086&DEV_7A8E", "VEN_8086&DEV_7A8F", |
| 96 | + "VEN_8086&DEV_7A90", "VEN_8086&DEV_7A91", "VEN_8086&DEV_7A92", "VEN_8086&DEV_7A93", |
| 97 | + "VEN_8086&DEV_7A94", "VEN_8086&DEV_7A95", "VEN_8086&DEV_7A96", "VEN_8086&DEV_7A97", |
| 98 | + "VEN_8086&DEV_7A98", "VEN_8086&DEV_7A99", "VEN_8086&DEV_7A9A", "VEN_8086&DEV_7A9B", |
| 99 | + "VEN_8086&DEV_7A9C", "VEN_8086&DEV_7A9D", "VEN_8086&DEV_7A9E", "VEN_8086&DEV_7A9F", |
| 100 | + "VEN_8086&DEV_7A00", "VEN_8086&DEV_7A01", "VEN_8086&DEV_7A03", "VEN_8086&DEV_7A03", |
| 101 | + "VEN_8086&DEV_7A04", "VEN_8086&DEV_7A05", "VEN_8086&DEV_7A06", "VEN_8086&DEV_7A07", |
| 102 | + "VEN_8086&DEV_7A08", "VEN_8086&DEV_7A09", "VEN_8086&DEV_7A0A", "VEN_8086&DEV_7A0B", |
| 103 | + "VEN_8086&DEV_7A0C", "VEN_8086&DEV_7A0D", "VEN_8086&DEV_7A0E", "VEN_8086&DEV_7A0F", |
| 104 | + "VEN_8086&DEV_7A10", "VEN_8086&DEV_7A11", "VEN_8086&DEV_7A12", "VEN_8086&DEV_7A13", |
| 105 | + "VEN_8086&DEV_7A14", "VEN_8086&DEV_7A15", "VEN_8086&DEV_7A16", "VEN_8086&DEV_7A17", |
| 106 | + "VEN_8086&DEV_7A18", "VEN_8086&DEV_7A19", "VEN_8086&DEV_7A1A", "VEN_8086&DEV_7A1B", |
| 107 | + "VEN_8086&DEV_7A1C", "VEN_8086&DEV_7A1D", "VEN_8086&DEV_7A1E", "VEN_8086&DEV_7A1F", |
| 108 | + "VEN_8086&DEV_A080", "VEN_8086&DEV_A081", "VEN_8086&DEV_A082", "VEN_8086&DEV_A083", |
| 109 | + "VEN_8086&DEV_A084", "VEN_8086&DEV_A085", "VEN_8086&DEV_A086", "VEN_8086&DEV_A087", |
| 110 | + "VEN_8086&DEV_A088", "VEN_8086&DEV_A089", "VEN_8086&DEV_A08A", "VEN_8086&DEV_A08B", |
| 111 | + "VEN_8086&DEV_A08C", "VEN_8086&DEV_A08D", "VEN_8086&DEV_A08E", "VEN_8086&DEV_A08F", |
| 112 | + "VEN_8086&DEV_A090", "VEN_8086&DEV_A091", "VEN_8086&DEV_A092", "VEN_8086&DEV_A093", |
| 113 | + "VEN_8086&DEV_A094", "VEN_8086&DEV_A095", "VEN_8086&DEV_A096", "VEN_8086&DEV_A097", |
| 114 | + "VEN_8086&DEV_A098", "VEN_8086&DEV_A099", "VEN_8086&DEV_A09A", "VEN_8086&DEV_A09B", |
| 115 | + "VEN_8086&DEV_A09C", "VEN_8086&DEV_A09D", "VEN_8086&DEV_A09E", "VEN_8086&DEV_A09F", |
| 116 | + "VEN_8086&DEV_5180", "VEN_8086&DEV_5181", "VEN_8086&DEV_5182", "VEN_8086&DEV_5183", |
| 117 | + "VEN_8086&DEV_5184", "VEN_8086&DEV_5185", "VEN_8086&DEV_5186", "VEN_8086&DEV_5187", |
| 118 | + "VEN_8086&DEV_5188", "VEN_8086&DEV_5189", "VEN_8086&DEV_518A", "VEN_8086&DEV_518B", |
| 119 | + "VEN_8086&DEV_518C", "VEN_8086&DEV_518D", "VEN_8086&DEV_518E", "VEN_8086&DEV_518F", |
| 120 | + "VEN_8086&DEV_5190", "VEN_8086&DEV_5191", "VEN_8086&DEV_5192", "VEN_8086&DEV_5193", |
| 121 | + "VEN_8086&DEV_5194", "VEN_8086&DEV_5195", "VEN_8086&DEV_5196", "VEN_8086&DEV_5197", |
| 122 | + "VEN_8086&DEV_5198", "VEN_8086&DEV_5199", "VEN_8086&DEV_519A", "VEN_8086&DEV_519B", |
| 123 | + "VEN_8086&DEV_519C", "VEN_8086&DEV_519D", "VEN_8086&DEV_519E", "VEN_8086&DEV_519F", |
| 124 | + "VEN_8086&DEV_5480", "VEN_8086&DEV_5481", "VEN_8086&DEV_5482", "VEN_8086&DEV_5483", |
| 125 | + "VEN_8086&DEV_5484", "VEN_8086&DEV_5485", "VEN_8086&DEV_5486", "VEN_8086&DEV_5487", |
| 126 | + "VEN_8086&DEV_5488", "VEN_8086&DEV_5489", "VEN_8086&DEV_548A", "VEN_8086&DEV_548B", |
| 127 | + "VEN_8086&DEV_548C", "VEN_8086&DEV_548D", "VEN_8086&DEV_548E", "VEN_8086&DEV_548F", |
| 128 | + "VEN_8086&DEV_5490", "VEN_8086&DEV_5491", "VEN_8086&DEV_5492", "VEN_8086&DEV_5493", |
| 129 | + "VEN_8086&DEV_5494", "VEN_8086&DEV_5495", "VEN_8086&DEV_5496", "VEN_8086&DEV_5497", |
| 130 | + "VEN_8086&DEV_5498", "VEN_8086&DEV_5499", "VEN_8086&DEV_549A", "VEN_8086&DEV_549B", |
| 131 | + "VEN_8086&DEV_549C", "VEN_8086&DEV_549D", "VEN_8086&DEV_549E", "VEN_8086&DEV_549F" |
| 132 | +) |
| 133 | + |
| 134 | +function Test-USBSplitTransactionVulnerability { |
| 135 | + <# |
| 136 | + .SYNOPSIS |
| 137 | + Checks if the current device is vulnerable to USB split transaction issues. |
| 138 | + |
| 139 | + .DESCRIPTION |
| 140 | + This function examines the Windows registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI |
| 141 | + to detect if any of the known vulnerable Intel PCH device IDs are present on the system. |
| 142 | + |
| 143 | + .OUTPUTS |
| 144 | + Boolean indicating whether the device needs the registry workaround. |
| 145 | + #> |
| 146 | + |
| 147 | + try { |
| 148 | + # Define the registry path for PCI devices |
| 149 | + $RegistryPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\PCI" |
| 150 | + |
| 151 | + # Check if the registry path exists |
| 152 | + if (-not (Test-Path $RegistryPath)) { |
| 153 | + Write-Warning "Registry path $RegistryPath not found. Unable to perform vulnerability check." |
| 154 | + return $false |
| 155 | + } |
| 156 | + |
| 157 | + # Get all first-level subkeys under the PCI registry path |
| 158 | + $PciDevices = Get-ChildItem -Path $RegistryPath -ErrorAction SilentlyContinue |
| 159 | + |
| 160 | + if (-not $PciDevices) { |
| 161 | + Write-Warning "No PCI devices found in registry." |
| 162 | + return $false |
| 163 | + } |
| 164 | + |
| 165 | + # Check each PCI device against the vulnerable device IDs |
| 166 | + foreach ($Device in $PciDevices) { |
| 167 | + $DeviceName = $Device.PSChildName |
| 168 | + |
| 169 | + # Check if the device name contains any of the vulnerable device IDs |
| 170 | + foreach ($VulnerableId in $VulnerablePchDeviceIds) { |
| 171 | + if ($DeviceName -like "*$VulnerableId*") { |
| 172 | + Write-Verbose "Found vulnerable device: $DeviceName" |
| 173 | + return $true |
| 174 | + } |
| 175 | + } |
| 176 | + } |
| 177 | + |
| 178 | + return $false |
| 179 | + } |
| 180 | + catch { |
| 181 | + Write-Error "An error occurred while checking for USB split transaction vulnerability: $_" |
| 182 | + return $false |
| 183 | + } |
| 184 | +} |
| 185 | + |
| 186 | +# Main execution |
| 187 | +try { |
| 188 | + Write-Host "Checking for USB split transaction vulnerability..." -ForegroundColor Yellow |
| 189 | + |
| 190 | + # Run the vulnerability check |
| 191 | + $IsVulnerable = Test-USBSplitTransactionVulnerability |
| 192 | + |
| 193 | + # Output the result based on the evaluation |
| 194 | + if ($IsVulnerable) { |
| 195 | + Write-Host "This device is expected to need the registry workaround" -ForegroundColor Red |
| 196 | + } else { |
| 197 | + Write-Host "This device is not expected to need the registry workaround" -ForegroundColor Green |
| 198 | + } |
| 199 | +} |
| 200 | +catch { |
| 201 | + Write-Error "Script execution failed: $_" |
| 202 | + exit 1 |
| 203 | +} |
| 204 | +``` |
0 commit comments