Installing AMD Graphics Drivers ​
We recommend using RadeonSoftwareSlimmer, an open-source GUI app that's a cleaner alternative to manually stripping the drivers.
Driver Installation ​
- Download the latest WHQL recommended driver from the
Download RadeonSoftwareSlimmer - the file named
RadeonSoftwareSlimmer_XXX_net48.zip.Open the application and go to the Pre-Install tab.
Select your installer file by clicking Browse, then confirm by double-clicking Next.
After the extraction process, untick everything in the Packages tab apart from:
- AMD Display Driver
- AMD Settings (Required for Radeon Software)
Monitor audio
These may be required for monitor sound - keep them ticked if you use audio over HDMI/DP:
- AMD Audio CoProcessor Bus Driver
- AMD Audio filter driver
- AMD HDMI Audio driver
- AMD High-Definition Audio Controller
- AMD Streaming Audio Filter Driver
Untick everything in the Scheduled Tasks tab.
Untick everything in Display Driver Components.
WARNING
If you are using audio from your monitor, do not remove High Definition Audio Bus.
Click Modify Installer, then Run Installer, and continue with driver setup as usual.
Configure Radeon Software ​
- Open Radeon Software by right-clicking the desktop.
- Accept the terms and click the Settings icon in the top-right.
Graphics tab ​
| Setting | Value |
|---|---|
| Wait for Vertical Refresh | Always Off |
| Texture Filtering Quality | Performance |
| Tessellation Mode | Override application settings |
| Maximum Tessellation Level | Off |
Display tab ​
| Setting | Value |
|---|---|
| AMD FreeSync | See note below |
| GPU Scaling | Off |
| Color Depth | Match your monitor's specifications |
AMD FreeSync
FreeSync has the potential to increase input latency due to extra processing. Your mileage may vary - it has reportedly improved over time.
Other tabs ​
- Disable all settings in the Hotkeys and Preferences tabs.
Refresh rate & resolution ​
Configure your refresh rate and resolution by running the following in Win+R:
rundll32 display.dll,ShowAdapterSettings 0Disable residual services ​
Disable the residual AMD services and drivers - typically:
- AMD Crash Defender
- AMD External Events Utility (required for VRR - keep enabled if you use FreeSync)
Disable Multi-Plane Overlay (MPO) ​
Disabling Multi-Plane Overlay (MPO) can fix some issues:
- Desktop apps flickering or stuttering during video playback with hardware acceleration in browsers.
- Black screens when alt-tabbing from games/applications to a browser playing a looping video.
- Flickering or stuttering when resizing windows on some systems.
Run the following in elevated PowerShell:
$DwmKey = 'HKLM:\SOFTWARE\Microsoft\Windows\Dwm'
if (-not (Test-Path $DwmKey)) { New-Item -Path $DwmKey -Force | Out-Null }
Set-ItemProperty -Path $DwmKey -Name 'OverlayTestMode' -Value 5 -Type DWordPower User - Automated Setup ​
Run elevated, reboot at the end
- Every snippet must be run from an elevated PowerShell session (right-click → Run as administrator).
- Each block is standalone - paste only the ones you need.
- These steps delete services and remove files from AMD's stack. Only run what you understand. If you use HDMI/DP audio, skip the optional audio-driver removal block.
- Reboot once you're done so the driver and Radeon Software pick up the new state.
This packages the same configuration applied manually above as drop-in PowerShell snippets. Registry work uses Set-ItemProperty / New-Item / Remove-ItemProperty; service removal uses Stop-Service + Invoke-CimMethod -MethodName Delete on Win32_Service - no reg.exe, no cmd /c shim - so the same code runs on Windows PowerShell 5.1 and PowerShell 7.x.
- Radeon Software must exist at the default path :
C:\Program Files\AMD\CNext\CNext\RadeonSoftware.exe
Prerequisites ​
- AMD display driver installed (preferably via RadeonSoftwareSlimmer as in Driver Installation above).
- Radeon Software launched at least once so per-user
HKCU\Software\AMD\CNkeys exist (section 5 opens it for you if needed). - Execution policy for the current process:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force1. Remove startup entries, scheduled task, and optional audio stack ​
# --- Run / RunOnce noise ----------------------------------------------------
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'AMDNoiseSuppression' -ErrorAction SilentlyContinue
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce' -Name 'StartRSX' -ErrorAction SilentlyContinue
# --- Radeon "StartCN" scheduled task ---------------------------------------
Unregister-ScheduledTask -TaskName 'StartCN' -Confirm:$false -ErrorAction SilentlyContinue
# --- Optional: remove HDMI/DP-related AMD audio services -------------------
# Skip this entire foreach if you rely on sound over the display cable.
$AudioServices = 'amdacpbus', 'AMDSAFD', 'AtiHDAudioService'
foreach ($Name in $AudioServices) {
$cim = Get-CimInstance -ClassName Win32_Service -Filter "Name='$Name'" -ErrorAction SilentlyContinue
if (-not $cim) { continue }
Stop-Service -Name $Name -Force -ErrorAction SilentlyContinue
$cim | Invoke-CimMethod -MethodName Delete | Out-Null
}
# --- AMD Bug Report Tool shortcuts / binary -------------------------------
Remove-Item "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\AMD Bug Report Tool" `
-Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:SystemRoot\SysWOW64\AMDBugReportTool.exe" -Force -ErrorAction SilentlyContinue
# --- AMD Install Manager (if still registered) ----------------------------
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*' -ErrorAction SilentlyContinue |
Where-Object DisplayName -Like '*AMD Install Manager*' |
ForEach-Object {
Start-Process -FilePath msiexec.exe `
-ArgumentList @('/x', $_.PSChildName, '/qn', '/norestart') `
-Wait -NoNewWindow
}
# --- Leftover extraction cache ---------------------------------------------
Remove-Item "$env:SystemDrive\AMD" -Recurse -Force -ErrorAction SilentlyContinue2. Flatten the Start Menu shortcut ​
$folderName = "AMD Software$([char]0xA789) Adrenalin Edition"
$startMenu = "$env:ProgramData\Microsoft\Windows\Start Menu\Programs"
Move-Item -Path "$startMenu\$folderName\$folderName.lnk" `
-Destination "$startMenu" `
-Force -ErrorAction SilentlyContinue
Remove-Item "$startMenu\$folderName" -Recurse -Force -ErrorAction SilentlyContinue3. Let the stack settle, then bootstrap Radeon Software once ​
Some HKCU\Software\AMD\CN values only appear after Radeon Software has run at least once. After a fresh driver install, wait until the installer has fully exited, then:
Start-Sleep -Seconds 15
$RsExe = 'C:\Program Files\AMD\CNext\CNext\RadeonSoftware.exe'
if (-not (Test-Path -LiteralPath $RsExe)) {
throw "Radeon Software not found at $RsExe. Install the driver + UI first."
}
Start-Process -FilePath $RsExe
Start-Sleep -Seconds 30
Stop-Process -Name 'RadeonSoftware' -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 24. Apply Adrenalin registry settings (system, graphics, display, preferences) ​
REG_BINARY values in the driver INF are expressed as hex strings in the original automation script. The helper below converts those hex strings to byte[] for Set-ItemProperty -Type Binary.
function ConvertFrom-HexBinary {
param([Parameter(Mandatory)][string]$Hex)
$Hex = ($Hex -replace '\s', '')
if (($Hex.Length % 2) -ne 0) { throw 'Hex string must have an even length.' }
$bytes = New-Object byte[] ($Hex.Length / 2)
for ($i = 0; $i -lt $bytes.Length; $i++) {
$bytes[$i] = [Convert]::ToByte($Hex.Substring($i * 2, 2), 16)
}
return ,$bytes
}
function Set-UMDBinaryValue {
param(
[Parameter(Mandatory)][string]$ValueName,
[Parameter(Mandatory)][string]$HexData
)
$DisplayClass = 'HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}'
$blob = ConvertFrom-HexBinary -Hex $HexData
Get-ChildItem -Path $DisplayClass -Recurse -ErrorAction SilentlyContinue |
Where-Object PSChildName -EQ 'UMD' |
ForEach-Object {
Set-ItemProperty -LiteralPath $_.PSPath -Name $ValueName -Value $blob -Type Binary -ErrorAction SilentlyContinue
}
}
# --- HKCU: Radeon Software / Adrenalin ------------------------------------
$CN = 'HKCU:\Software\AMD\CN'
if (-not (Test-Path $CN)) { New-Item -Path $CN -Force | Out-Null }
foreach ($rel in @('CustomResolutions', 'DisplayOverride', 'FreeSync', 'OverlayNotification', 'VirtualSuperResolution')) {
$p = Join-Path $CN $rel
if (-not (Test-Path $p)) { New-Item -Path $p -Force | Out-Null }
}
Set-ItemProperty -Path $CN -Name 'AutoUpdate' -Value 0 -Type DWord
Set-ItemProperty -Path $CN -Name 'WizardProfile' -Value 'PROFILE_CUSTOM' -Type String
Set-ItemProperty -Path $CN -Name 'SystemTray' -Value 'false' -Type String
Set-ItemProperty -Path $CN -Name 'CN_Hide_Toast_Notification' -Value 'true' -Type String
Set-ItemProperty -Path $CN -Name 'AnimationEffect' -Value 'false' -Type String
Set-ItemProperty -Path (Join-Path $CN 'CustomResolutions') -Name 'EulaAccepted' -Value 'true' -Type String
Set-ItemProperty -Path (Join-Path $CN 'DisplayOverride') -Name 'EulaAccepted' -Value 'true' -Type String
# Wait for Vertical Refresh → Always Off | Texture filtering → Performance
Set-UMDBinaryValue -ValueName 'VSyncControl' -HexData '3000'
Set-UMDBinaryValue -ValueName 'TFQ' -HexData '3200'
# Tessellation → Override application settings, level Off
Set-UMDBinaryValue -ValueName 'Tessellation' -HexData '3100'
Set-UMDBinaryValue -ValueName 'Tessellation_OPTION' -HexData '3200'
# --- Per-EDID: disable HDCP-style protection (matches automation profile) --
$DisplayClass = 'HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}'
Get-ChildItem -Path $DisplayClass -Recurse -ErrorAction SilentlyContinue |
Where-Object PSChildName -Match '^EDID_[A-F0-9]+_[A-F0-9]+_[A-F0-9]+$' |
ForEach-Object {
if ($_.PSChildName -notmatch '^(EDID_[A-F0-9]+_[A-F0-9]+)_[A-F0-9]+$') { return }
$baseEdidPath = Join-Path (Split-Path $_.PSPath) $Matches[1]
$optionPath = Join-Path $baseEdidPath 'Option'
New-Item -Path $baseEdidPath -Force -ErrorAction SilentlyContinue | Out-Null
New-Item -Path $optionPath -Force -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -LiteralPath $optionPath -Name 'All_nodes' -Value (ConvertFrom-HexBinary '50726F74656374696F6E436F6E74726F6C00') -Type Binary
Set-ItemProperty -LiteralPath $optionPath -Name 'default' -Value (ConvertFrom-HexBinary '64') -Type Binary
Set-ItemProperty -LiteralPath $optionPath -Name 'ProtectionControl' -Value (ConvertFrom-HexBinary '0100000001000000') -Type Binary
}
# Vari-Bright → maximize brightness (abmlevel = 0)
Get-ChildItem -Path $DisplayClass -Recurse -ErrorAction SilentlyContinue |
Where-Object PSChildName -EQ 'power_v1' |
ForEach-Object {
Set-ItemProperty -LiteralPath $_.PSPath -Name 'abmlevel' -Value (ConvertFrom-HexBinary '00000000') -Type Binary -ErrorAction SilentlyContinue
}
# Reset first-run notification bucket, then mark panels as "already seen"
Remove-Item -Path (Join-Path $CN 'Notification') -Recurse -Force -ErrorAction SilentlyContinue
New-Item -Path (Join-Path $CN 'Notification') -Force | Out-Null
Set-ItemProperty -Path (Join-Path $CN 'FreeSync') -Name 'AlreadyNotified' -Value 1 -Type DWord
Set-ItemProperty -Path (Join-Path $CN 'OverlayNotification') -Name 'AlreadyNotified' -Value 1 -Type DWord
Set-ItemProperty -Path (Join-Path $CN 'VirtualSuperResolution') -Name 'AlreadyNotified' -Value 1 -Type DWordReboot to apply
Reboot after the snippets you ran. The next time Radeon Software opens, the toggles described in Configure Radeon Software above should already match these values.