本文提供了影响特定基于 Intel 的设备的问题的解决方法和修补程序。 附加到受影响设备的 USB 音频或视频设备可能无法正常工作。 这些 USB 设备包括相机、扬声器、麦克风和耳机。
症状
你遇到以下一个或多个症状:
- 在音频流中,你可能会听到偶尔出现的问题或意外噪音,例如单击声或爆裂声。
- 在视频流中看到瞬间可见的瑕疵。
- USB 音频或视频设备停止工作。
受影响的设备
此问题会影响使用具有离散受信任平台模块(dTPM)芯片的 500、600、700 系列平台控制器集线器的基于 Intel 的系统。 使用固件 TPM (fTPM) 技术的计算机不受此问题的影响。
解决方法
若要解决此问题,请执行以下步骤:
- 拔下设备,然后将其重新附加到计算机。
- 如果步骤 1 不起作用,请重新启动计算机。
原因
此问题是由于 Windows 与离散 TPM 进行通信时,内部硬件总线上出现延迟所引发的。 这些延迟反过来又会延迟与 USB 控制器的通信,并在 USB 总线上生成拆分事务错误。 因此,时间敏感的 USB 流量(如音频和视频流式处理)可能会遇到故障或错误。
决议
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。
Windows 11 版本 24H2 的 2025 年 10 月更新和 Windows 11 版本 23H2 的 2025 年 11 月更新引入了此硬件问题的修补程序。 若要使用此修补程序,请执行以下步骤:
-
在受影响的设备上,安装最新的更新。 如有必要,请重启设备。
-
验证设备是否使用 dTPM 而不是 fTPM。 若要查找此信息,请检查设备 BIOS 设置或联系设备制造商。
-
在本文的“ 详细信息 ”部分中运行诊断脚本。
此脚本检查修补程序是否适用于设备。
-
创建以下注册表项:
- 子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Tpm - 类型: REG_DWORD
- 名称: TPMDriverReadAfterWriteCount
- 值: 0x1 (1)
例如,打开管理命令提示符窗口,然后运行以下命令:
reg.exe ADD HKLM\SYSTEM\CurrentControlSet\Control\Tpm /v TPMDriverReadAfterWriteCount /t REG_DWORD /d 1 - 子项:
详细信息
可以使用以下 Windows PowerShell 脚本来确定电脑是否具有可能受到影响的控制器之一。 若要运行此脚本,请创建使用名称(如 Check-USBSplitTransactionVulnerability.ps1)的文件。 然后,将以下文本粘贴到文件中,并在 PowerShell 命令提示符下运行脚本。
注释
在 Device Manager 中,有问题的设备显示在 **“系统设备”**下。 它具有类似于“Intel(R) LPC 控制器/eSPI 控制器”的名称。
# USB Split Transaction Vulnerability Detection Script
# This script checks if a device is vulnerable to USB split transaction issues
# by examining the Windows registry for specific Intel PCH device IDs
# Define the vulnerable PCH device IDs from the CPP code
$VulnerablePchDeviceIds = @(
"VEN_8086&DEV_4380", "VEN_8086&DEV_4381", "VEN_8086&DEV_4382", "VEN_8086&DEV_4383",
"VEN_8086&DEV_4384", "VEN_8086&DEV_4385", "VEN_8086&DEV_4386", "VEN_8086&DEV_4387",
"VEN_8086&DEV_4388", "VEN_8086&DEV_4389", "VEN_8086&DEV_438A", "VEN_8086&DEV_438B",
"VEN_8086&DEV_438C", "VEN_8086&DEV_438D", "VEN_8086&DEV_438E", "VEN_8086&DEV_438F",
"VEN_8086&DEV_4390", "VEN_8086&DEV_4391", "VEN_8086&DEV_4392", "VEN_8086&DEV_4393",
"VEN_8086&DEV_4394", "VEN_8086&DEV_4395", "VEN_8086&DEV_4396", "VEN_8086&DEV_4397",
"VEN_8086&DEV_4398", "VEN_8086&DEV_4399", "VEN_8086&DEV_439A", "VEN_8086&DEV_439B",
"VEN_8086&DEV_439C", "VEN_8086&DEV_439D", "VEN_8086&DEV_439E", "VEN_8086&DEV_439F",
"VEN_8086&DEV_7A80", "VEN_8086&DEV_7A81", "VEN_8086&DEV_7A82", "VEN_8086&DEV_7A83",
"VEN_8086&DEV_7A84", "VEN_8086&DEV_7A85", "VEN_8086&DEV_7A86", "VEN_8086&DEV_7A87",
"VEN_8086&DEV_7A88", "VEN_8086&DEV_7A89", "VEN_8086&DEV_7A8A", "VEN_8086&DEV_7A8B",
"VEN_8086&DEV_7A8C", "VEN_8086&DEV_7A8D", "VEN_8086&DEV_7A8E", "VEN_8086&DEV_7A8F",
"VEN_8086&DEV_7A90", "VEN_8086&DEV_7A91", "VEN_8086&DEV_7A92", "VEN_8086&DEV_7A93",
"VEN_8086&DEV_7A94", "VEN_8086&DEV_7A95", "VEN_8086&DEV_7A96", "VEN_8086&DEV_7A97",
"VEN_8086&DEV_7A98", "VEN_8086&DEV_7A99", "VEN_8086&DEV_7A9A", "VEN_8086&DEV_7A9B",
"VEN_8086&DEV_7A9C", "VEN_8086&DEV_7A9D", "VEN_8086&DEV_7A9E", "VEN_8086&DEV_7A9F",
"VEN_8086&DEV_7A00", "VEN_8086&DEV_7A01", "VEN_8086&DEV_7A03", "VEN_8086&DEV_7A03",
"VEN_8086&DEV_7A04", "VEN_8086&DEV_7A05", "VEN_8086&DEV_7A06", "VEN_8086&DEV_7A07",
"VEN_8086&DEV_7A08", "VEN_8086&DEV_7A09", "VEN_8086&DEV_7A0A", "VEN_8086&DEV_7A0B",
"VEN_8086&DEV_7A0C", "VEN_8086&DEV_7A0D", "VEN_8086&DEV_7A0E", "VEN_8086&DEV_7A0F",
"VEN_8086&DEV_7A10", "VEN_8086&DEV_7A11", "VEN_8086&DEV_7A12", "VEN_8086&DEV_7A13",
"VEN_8086&DEV_7A14", "VEN_8086&DEV_7A15", "VEN_8086&DEV_7A16", "VEN_8086&DEV_7A17",
"VEN_8086&DEV_7A18", "VEN_8086&DEV_7A19", "VEN_8086&DEV_7A1A", "VEN_8086&DEV_7A1B",
"VEN_8086&DEV_7A1C", "VEN_8086&DEV_7A1D", "VEN_8086&DEV_7A1E", "VEN_8086&DEV_7A1F",
"VEN_8086&DEV_A080", "VEN_8086&DEV_A081", "VEN_8086&DEV_A082", "VEN_8086&DEV_A083",
"VEN_8086&DEV_A084", "VEN_8086&DEV_A085", "VEN_8086&DEV_A086", "VEN_8086&DEV_A087",
"VEN_8086&DEV_A088", "VEN_8086&DEV_A089", "VEN_8086&DEV_A08A", "VEN_8086&DEV_A08B",
"VEN_8086&DEV_A08C", "VEN_8086&DEV_A08D", "VEN_8086&DEV_A08E", "VEN_8086&DEV_A08F",
"VEN_8086&DEV_A090", "VEN_8086&DEV_A091", "VEN_8086&DEV_A092", "VEN_8086&DEV_A093",
"VEN_8086&DEV_A094", "VEN_8086&DEV_A095", "VEN_8086&DEV_A096", "VEN_8086&DEV_A097",
"VEN_8086&DEV_A098", "VEN_8086&DEV_A099", "VEN_8086&DEV_A09A", "VEN_8086&DEV_A09B",
"VEN_8086&DEV_A09C", "VEN_8086&DEV_A09D", "VEN_8086&DEV_A09E", "VEN_8086&DEV_A09F",
"VEN_8086&DEV_5180", "VEN_8086&DEV_5181", "VEN_8086&DEV_5182", "VEN_8086&DEV_5183",
"VEN_8086&DEV_5184", "VEN_8086&DEV_5185", "VEN_8086&DEV_5186", "VEN_8086&DEV_5187",
"VEN_8086&DEV_5188", "VEN_8086&DEV_5189", "VEN_8086&DEV_518A", "VEN_8086&DEV_518B",
"VEN_8086&DEV_518C", "VEN_8086&DEV_518D", "VEN_8086&DEV_518E", "VEN_8086&DEV_518F",
"VEN_8086&DEV_5190", "VEN_8086&DEV_5191", "VEN_8086&DEV_5192", "VEN_8086&DEV_5193",
"VEN_8086&DEV_5194", "VEN_8086&DEV_5195", "VEN_8086&DEV_5196", "VEN_8086&DEV_5197",
"VEN_8086&DEV_5198", "VEN_8086&DEV_5199", "VEN_8086&DEV_519A", "VEN_8086&DEV_519B",
"VEN_8086&DEV_519C", "VEN_8086&DEV_519D", "VEN_8086&DEV_519E", "VEN_8086&DEV_519F",
"VEN_8086&DEV_5480", "VEN_8086&DEV_5481", "VEN_8086&DEV_5482", "VEN_8086&DEV_5483",
"VEN_8086&DEV_5484", "VEN_8086&DEV_5485", "VEN_8086&DEV_5486", "VEN_8086&DEV_5487",
"VEN_8086&DEV_5488", "VEN_8086&DEV_5489", "VEN_8086&DEV_548A", "VEN_8086&DEV_548B",
"VEN_8086&DEV_548C", "VEN_8086&DEV_548D", "VEN_8086&DEV_548E", "VEN_8086&DEV_548F",
"VEN_8086&DEV_5490", "VEN_8086&DEV_5491", "VEN_8086&DEV_5492", "VEN_8086&DEV_5493",
"VEN_8086&DEV_5494", "VEN_8086&DEV_5495", "VEN_8086&DEV_5496", "VEN_8086&DEV_5497",
"VEN_8086&DEV_5498", "VEN_8086&DEV_5499", "VEN_8086&DEV_549A", "VEN_8086&DEV_549B",
"VEN_8086&DEV_549C", "VEN_8086&DEV_549D", "VEN_8086&DEV_549E", "VEN_8086&DEV_549F"
)
function Test-USBSplitTransactionVulnerability {
<#
.SYNOPSIS
Checks if the current device is vulnerable to USB split transaction issues.
.DESCRIPTION
This function examines the Windows registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI
to detect if any of the known vulnerable Intel PCH device IDs are present on the system.
.OUTPUTS
Boolean indicating whether the device needs the registry workaround.
#>
try {
# Define the registry path for PCI devices
$RegistryPath = "HKLM:\SYSTEM\CurrentControlSet\Enum\PCI"
# Check if the registry path exists
if (-not (Test-Path $RegistryPath)) {
Write-Warning "Registry path $RegistryPath not found. Unable to perform vulnerability check."
return $false
}
# Get all first-level subkeys under the PCI registry path
$PciDevices = Get-ChildItem -Path $RegistryPath -ErrorAction SilentlyContinue
if (-not $PciDevices) {
Write-Warning "No PCI devices found in registry."
return $false
}
# Check each PCI device against the vulnerable device IDs
foreach ($Device in $PciDevices) {
$DeviceName = $Device.PSChildName
# Check if the device name contains any of the vulnerable device IDs
foreach ($VulnerableId in $VulnerablePchDeviceIds) {
if ($DeviceName -like "*$VulnerableId*") {
Write-Verbose "Found vulnerable device: $DeviceName"
return $true
}
}
}
return $false
}
catch {
Write-Error "An error occurred while checking for USB split transaction vulnerability: $_"
return $false
}
}
# Main execution
try {
Write-Host "Checking for USB split transaction vulnerability..." -ForegroundColor Yellow
# Run the vulnerability check
$IsVulnerable = Test-USBSplitTransactionVulnerability
# Output the result based on the evaluation
if ($IsVulnerable) {
Write-Host "This device is expected to need the registry workaround" -ForegroundColor Red
} else {
Write-Host "This device is not expected to need the registry workaround" -ForegroundColor Green
}
}
catch {
Write-Error "Script execution failed: $_"
exit 1
}