Custom Resolution Utility (CRU) is an EDID editor that focuses on custom resolutions. CRU shows you how the monitor defines resolutions and other capabilities and gives you the power to change it. Add custom resolutions, remove unwanted resolutions, edit FreeSync ranges, and more. CRU creates software EDID overrides in the registry and does not modify the hardware.
Download: cru-1.5.3.zip - Source: cru-1.5.3-src.zip
A message from ToastyX:
Over the years, I have created various monitor-related software and provided support for free. I would like to continue providing updates and work on new ideas, but I need your support. If you find my software useful, please consider supporting me through Patreon:
![[Image: patreon.png]](https://www.monitortests.com/images/patreon.png)
Compatibility issues:
NVIDIA and DSC - ToastyX Wrote:NVIDIA's driver currently ignores EDID overrides if Display Stream Compression (DSC) is active and the maximum resolution @ refresh rate combination exceeds the GPU's single-head pixel clock limit:
GTX 1600-series: 1330 MHz
RTX 2000-series: 1330 MHz
RTX 3000-series: 1335 MHz
RTX 4000-series: 1350 MHz
RTX 5000-series: Not affected
Workarounds:
SRE can add custom GPU-scaled resolutions but not custom refresh rates: https://www.monitortests.com/forum/Threa...Editor-SRE
Use RegEdit to disable using multiple heads, but the pixel clock will be limited to the single-head limit:
Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\#### (usually 0000)
Value: "EnableTiledDisplay"=dword:00000000
NVIDIA and multiple displays - ToastyX Wrote:NVIDIA's driver currently has a bug that can cause Windows to hang during boot when an EDID override is present with multiple displays connected. Workaround using scripts: https://www.monitortests.com/forum/Threa...wn-scripts
Windows 11 with non-PnP displays - ToastyX Wrote:Windows 11 ignores EDID overrides for displays that don't have a valid EDID. This can happen if the EDID is corrupted on the monitor. This will appear as "PNP09FF - Generic Non-PnP Monitor" in CRU with no resolutions or extension blocks listed.
Workarounds:
Try another port on the monitor. Usually each type of port has a separate EDID, so only one might be corrupted.
Use an EDID emulator such as this:
Use Windows 10 with CRU to add the resolutions you need.
Advanced: try to fix the EDID on the monitor using EDWriter with an AMD GPU: https://www.monitortests.com/forum/Threa...yID-Writer
Requirements:
Getting started:
Run CRU.exe. A UAC prompt may appear because it needs permission to access the registry.
Choose a display from the drop-down list.
"(active)" means the display is connected and recognized by the graphics driver.
"*" means changes were made and an override was saved in the registry.
Edit the configuration as desired. Please read the sections below for more information.
Repeat steps 2-3 for other displays if required.
The "Copy" and "Paste" buttons at the top can be used to copy all the resolutions, extension blocks, and range limits if included. It will not copy the name or serial number, but it will copy the inclusion of these items using the display's own information. Import follows the same logic unless "Import complete EDID" is selected.
Click "OK" to save the changes.
Run restart.exe to restart the graphics driver.
If the display does not return after 15 seconds, press F8 for recovery mode. This will temporarily unload all the EDID overrides without deleting them. Restart the driver again to reload any changes.
On some systems, the graphics driver might crash while restarting. If that happens, the driver might be disabled after rebooting. Simply run restart.exe again to enable the driver.
Set the resolution in the Windows display settings. To set the refresh rate:
Windows 10: right-click on the desktop > Display settings > Advanced display settings > Display adapter properties > Monitor tab
Windows Vista/7/8/8.1: right-click on the desktop > Screen resolution > Advanced settings > Monitor tab
Alternative method for Intel GPUs:
If you have an older Intel GPU, use the "Export..." button and choose "EXE file" for the file type to export a self-contained EDID override installer. Then run the .exe file and choose "Install EDID" to install the EDID override on all matching displays.
Detailed resolutions:
Vertical total calculator - Calculates the vertical total required for the specified refresh rate and pixel clock. This can be used to implement Quick Frame Transport (QFT), which can help reduce crosstalk with backlight strobing at lower refresh rates.
Pay attention to pixel clock limits:
HDMI is treated as single-link DVI unless an "HDMI support" data block is defined in a CTA-861 extension block.
HDMI 2.0 requires both an "HDMI support" data block and an "HDMI 2.0 support" data block.
HDMI limits depend on the GPU:
Newer GPUs with HDMI 2.0 support up to 600 MHz with HDMI 2.0 and up to 340 MHz with HDMI 1.x.
AMD HD 7000-series and newer GPUs without HDMI 2.0 support up to 297 MHz. Older GPUs are limited to 165 MHz unless the driver is patched.
Intel GPUs without HDMI 2.0 support up to 300.99 MHz.
AMD/ATI and Intel also listen to the maximum TMDS clock in the "HDMI support" data block. Make sure it's enabled and set to 340 MHz.
DisplayPort limits are listed here: Common pixel clock limits
Passive DisplayPort to HDMI adapters are limited to 165 MHz unless the driver is patched.
These DisplayPort to HDMI 2.0 active adapters support up to 600 MHz pixel clock (Amazon affiliate links):
Standard resolutions are mostly useful for CRT monitors and for adding lower resolutions with LCD monitors. Do not add the native resolution as a standard resolution.
AMD/ATI only supports the resolutions in the drop-down list. Other resolutions will be ignored by the driver. These will be listed in gray.
NVIDIA does not support more than 8 standard resolutions. Additional resolutions will use up detailed resolution slots.
Standard resolutions are limited to certain aspect ratios: 4:3, 5:4, 16:9, 16:10. Use detailed resolutions for other aspect ratios.
The horizontal resolution is limited to 256-2288 and must be a multiple of 8. Use detailed resolutions for other resolutions.
The refresh rate is limited to 60-123 Hz. Use detailed resolutions for other refresh rates.
GPU-specific limtations:
CRU can read extension blocks from displays connected to AMD and NVIDIA GPUs.
CRU can't read extension blocks with Intel GPUs or switchable graphics.
Older drivers or GPUs may only support up to 3 extension blocks.
Extension block types:
CTA-861 extension blocks can contain additional detailed resolutions and data blocks such as TV resolutions, audio formats, and HDMI support. Note: NVIDIA requires at least 2 bytes left for data blocks or the driver will ignore all changes.
Use VTB-EXT to add more standard resolutions. Note: AMD/ATI only supports one VTB-EXT block, and it must be the last block in the list.
Use DisplayID to add resolutions greater than 4095x4095 or 655.35 MHz pixel clock. DisplayID 2.0 supports pixel clocks with three decimal places, but the driver or hardware might not support such precision.
Default extension blocks are placeholders for the monitor's original extension blocks. Extension blocks that can't be read will appear as default extension blocks. Note: NVIDIA does not support default extension blocks and will ignore all changes if a default extension block exists.
If you need to add an extension block manually, importing one of these files will provide a starting point:
Editing FreeSync/VRR ranges:For DisplayPort, use the "Edit..." button at the top to edit the "V rate" under range limits, and make sure "Include if slot available" is enabled. Note: NVIDIA has ranges hard-coded for some monitors. To get around this, change the device ID at the top to anything else, such as ABC1234 (3 letters, 4 hex digits).
For HDMI FreeSync, edit the "FreeSync range" data block in the CTA-861 extension block.
For HDMI 2.1 VRR, edit the "HDMI 2.1 support" data block in the CTA-861 extension block.
.bin - Raw binary EDID compatible with most EDID tools
.dat - Data file compatible with Phoenix EDID Designer and Advantiv EEditZ/EEditGold
.inf - Unsigned monitor driver compatible with Windows Vista and later
.txt - Text file containing whitespace-separated hexadecimal values (16 per line)
.csv - Text file containing comma-separated hexadecimal values (one block per line)
.exe - Self-contained EDID override installer (includes alternative method for Intel GPUs)
Command-line options:
Exported .exe files:
/i - Install EDID without prompting
/r - Reset EDID without prompting
reset-all.exe:
/q - Reset without prompting
restart.exe/restart64.exe:
/q - Restart without prompting (or rename the file to restart-only.exe)
/r - Activate recovery mode without prompting
The GPU will not reduce the memory clock when idle if the vertical blanking is too low because there won't be enough time between refreshes to retrain the memory without screen corruption. Horizontal values can still be reduced if necessary.
Older AMD/ATI GPUs require the "Automatic PC/HDTV" or "CVT-RB standard" vertical blanking to reduce the memory clock when idle.
NVIDIA and newer AMD cards can handle some lower values depending on the resolution and refresh rate.
When using multiple monitors, all of the monitors must be perfectly synchronized so the vertical blanking happens at the same time. This is only possible if all of the monitors support the same resolution and refresh rate with the same exact timing parameters, or if the monitors support variable refresh rate.
Older AMD/ATI GPUs have a design limitation that causes video acceleration to scramble the screen if the vertical blanking is below standard with the GPU's memory overclocked or with multiple monitors connected. Skype is known to trigger this problem. Either don't overclock the GPU's memory, or use the "Automatic PC/HDTV" or "CVT-RB standard" vertical blanking.
Added support for extension override data blocks (HF-EEODB). All extension blocks should now be readable with AMD and NVIDIA GPUs.
Added support for editing existing FreeSync version 3 data blocks with higher maximum range.
EDID detailed resolutions: preserve borders if present.
Support up to 7 extension blocks
NVIDIA can now read all extension blocks
Detailed resolutions:
Added 480p/480i/525p/525i to "Automatic CRT"
Fixed "Exact" and "Exact reduced" for interlaced resolutions
Added "Exact CRT" timing option
Added "Vertical total calculator" timing option
Audio formats: added "Auro-Cx" and "MPEG-D USAC" from CTA-861.6
Colorimetry: added "sRGB" and "Default RGB" from CTA-861.6
Audio formats: added new formats from CTA-861-G/H
Colorimetry: added ICtCp from CTA-861-H
DisplayID 2.0 detailed resolutions: fix "Reset" button resetting to 6 Hz when adding a new resolution
Tiled display topology: split vendor and product IDs to accommodate OUIs (2.0) and non-letter IDs (1.3)
List boxes now retain scroll position after editing
Added DisplayPort YCbCr color formats and maximum color depth (use the "Edit..." button at the top)
Added HDMI 2.1 features including maximum FRL rate, variable refresh rate, and display stream compression
New and improved timing options for detailed resolutions:
"LCD standard" has been split into "Automatic (PC)" and "Automatic (HDTV)" to better accommodate different display standards.
The main difference is how they handle resolutions greater than 1920x1080 @ 60 Hz and 21:9 resolutions. "PC" favors CVT-RB, while "HDTV" favors CTA-861.
"LCD native" has been split into "Native (PC)" and "Native (HDTV)" for the same reason.
"LCD reduced" has been eliminated because it was too arbitrary and only worked for certain resolutions. Try "Exact reduced" for an alternative.
"CRT standard" is now "Automatic (CRT)" and includes 4:3/5:4 VESA DMT resolutions. Use "CVT standard" for the old behavior.
Added "Exact" and "Exact reduced" to calculate exact integer refresh rates.
Added common display standards: CVT, CVT-RB, CVT-RB2, and GTF (previously "Old standard")
Detailed resolutions can now calculate frequencies for all possible pixel clocks (up to 167772.16 MHz for DisplayID 1.3)
CEA-861 extension blocks are now called CTA-861 to reflect the standard's new name
Added support for DisplayID 2.0 extension blocks
Export now saves the original unmodified EDID if no changes were made
List inactive displays with overrides installed
Display properties: interpret "0" ID serial number as blank
Detailed resolutions: "LCD reduced" will no longer go below 56 horizontal blanking
DisplayID detailed resolutions: fixed interlaced calculations to match DisplayID standard
HDMI 2.0 support: enable "SCDC present" by default when adding new data blocks
Added .csv file export: outputs comma-separated hexadecimal values (one block per line)
Added .exe file export: outputs self-contained EDID override installers (includes alternative method for Intel GPUs)
reset-all.exe: Reset alternative method for Intel GPUs, added /q option
restart.exe/restart64.exe: Faster restarts, recovery mode includes alternative method for Intel GPUs, added /r option
Speaker setup: added new speakers from CTA-861-G
HDMI support: fixed undefined latency data saving as 2 ms (since 1.3.99-p1)
HDMI 2.0 support: preserve additional fields for HDMI 2.1
FreeSync range: added support for editing FreeSync 2 ranges
Added support for HDR static metadata blocks
Added support for DisplayID extension blocks:
Added support for "Type I" detailed resolutions.
Added support for tiled display topology data blocks.
Display properties: added support for ID serial number in EDID header
Detailed resolutions: added "Automatic - Old standard" timing option for GTF
TV resolutions: added new resolutions from CTA-861-G (requires driver support)
Colorimetry: added DCI-P3 standard from CTA-861-G
Fixed .inf export for Windows 10 Creators Update
Detailed resolutions: use CEA-861 timing parameters for 3840x2160 @ 60 Hz with "LCD standard" (use "LCD reduced" for old values)
Detailed resolutions: allow 0 back porch
TV resolutions: disable "Native format" for resolutions that don't support this option
Do not add blank extension block if no extension blocks exist by default
Allow invalid but possible product IDs when editing display properties
Fixed '&' character in monitor name and serial number not displaying correctly in detailed resolutions list box
Improved row spacing between UI elements with higher DPI settings
Added support for reading extension blocks from connected monitors with AMD/ATI and NVIDIA
Automatically add blank extension block in registry and exported .inf files to work around NVIDIA driver issues
Added support for multiple extension blocks
Added support for importing other types of extension blocks
Added support for VTB-EXT extension blocks (detailed/standard resolutions only)
Changed default TMDS clock to 340 MHz for new HDMI data blocks
Added support for HDMI 2.0 data blocks
Added support for HDMI FreeSync data blocks
Added BT.2020 formats in colorimetry data blocks
Added text file export (outputs hex values)
Improved UI scaling with higher DPI settings
restart.exe/restart64.exe: fix Start menu, search box, and Radeon Settings not responding after restarting
Fixed a bug affecting non-PnP monitors since 1.2.3 (invalid EDID version with new overrides)
Include range limits by default if min/max horizontal values match and certain conditions are met (for FreeSync monitors)
restart.exe/restart64.exe: restart Radeon Settings (cnext.exe)
Made range limits compatible with FreeSync monitors
Added basic support for range limits and serial number descriptors (use the "Edit..." button at the top)
Show included descriptors in the detailed resolution list
Added "Import complete EDID" option
Detailed resolutions: added "LCD reduced" timing parameters for 2560x1440 @ 144 Hz and higher resolutions
Extension block: added support for colorimetry and video capability data blocks
Redesigned icon to scale better with Windows 10's broken taskbar scaling
Fixed how disabled buttons appear with Windows 10
Detailed resolutions: added "LCD native" option
TV resolutions: added support for 4:2:0 resolutions
HDMI support: added support for HDMI resolutions, latency information, and supported content types
Fixed access violation in comctl32.dll message with higher DPI settings
Fixed layout issues with higher DPI settings and enabled DPI awareness
restart.exe/restart64.exe: implemented a better recovery mode
Added custom extension block editing
Added support for more than 8 standard resolutions (AMD/ATI only)
Added support for other standard resolutions (NVIDIA only)
Updated reset-all.exe to reset Windows resolution settings
Include new version of restart.exe/restart64.exe
Fixed HDMI audio not working with older ATI GPUs
Fixed monitors with invalid signal type information not working with AMD/ATI GPUs
Added "LCD standard" timing parameters for 3840x2160 @ 30 Hz and 1366x768 @ 60 Hz (use "LCD reduced" for old values)
Automatically enable extension block when importing extension block files
Show number of slots left
Import extension block from files (editing coming later)
Automatically fill in likely native resolution when adding a detailed resolution
Disable controls when deleting a monitor
Fixed .inf export
Added support for non-PnP monitors
Changed monitor list sorting
Using older versions is not recommended. Newer versions fix problems and add features. Please report any issues with newer versions that did not exist with older versions. Make sure to run reset-all.exe when testing different versions.
