Radeon Driver Causing System Reboots with MS Teams

Last week I experienced a widespread issue that was also discussed in small groups on Reddit (here and here.)

Summary

Skipping the fluff, if you have the AMD Radeon Driver v32.0.13040.12005 driver installed, you may experience your PC rebooting unexpectedly when sharing camera or content in Microsoft Teams, and it may happen only (or more frequently) when the system has recently come out of sleep. To resolve, downgrade to 32.0.13040.12005, or upgrade to the latest version of the driver available at the time you come and read this.

There were a lot of possible fixes, both on Reddit and several other forums, such as upgrading or downgrading the BIOS or rolling back a Windows Update. None of these were permanent fixes, possibly because the problem occurred most frequently when the system came out of sleep. Testing something and rebooting may have look to resolve the issue when it did not.

Lenovo addressed the issue with enterprise customers by acknowledging an updated AMD driver for the Radeon graphics card installed in some T14 and P14 models to be the culprit. At the time of resolving the issue, there was not a new driver available and the solution was to roll back one version.

The below PowerShell can be used to rollback to the older driver version until a new one is tested and made available. In my environment, we rolled this out by embedding it into a PSADT deployment, but I've carved out the important bits so you can integrate it into whatever works best.

 1[Array]$Drivers = Get-WindowsDriver -Online
 2[Array]$BadAMDDriver = $Drivers | Where-Object { $_.ProviderName -eq 'Advanced Micro Devices, Inc.' -and $_.ClassName -eq 'DISPLAY' -and $_.Version -eq '32.0.22002.181' }
 3
 4If($BadAMDDriver) {
 5    # There should only be one, but looping just in case.
 6    ForEach($Driver in $BadAMDDriver) {
 7        Write-Output "Removing $($Driver.Driver)"
 8        Start-Process -FilePath pnputil.exe -ArgumentList "/delete-driver $($Driver.Driver) /uninstall /force"
 9    }
10} Else {
11    Write-Output "No bad drivers were identified."
12    Exit
13}
14
15[Array]$GoodDriver = $Drivers | Where-Object { $_.ProviderName -eq 'Advanced Micro Devices, Inc.' -and $_.ClassName -eq 'DISPLAY' -and $_.Version -eq '32.0.13040.12005' }
16If($GoodDriver) {
17    Write-Output "The good driver is already installed."
18    Exit
19} Else {
20    # Modify to reflect where the binary is. Note that the "/VERYSILENT" parameter is case sensitive
21    Start-Process -FilePath 'AMD-Graphics-Driver-32.0.13040.12005.exe' -ArgumentList '/VERYSILENT'
22}