RTXFixer 2.2 – Black Screen Handshake Utility
A downloadable tool for Windows
Does your monitor stay black when waking your PC?
If you own an NVIDIA RTX 40‑series or 50‑series GPU and experience intermittent black screens, “No Signal”, or failed wake‑from‑sleep events, RTXFixer 2.2 is designed to help.
RTXFixer is a lightweight background utility that safely forces Windows to re‑apply valid display modes.
This triggers the GPU and monitor to re‑negotiate their DisplayPort / HDMI handshake, often restoring video output instantly — without rebooting, logging out, or restarting GPU drivers.
What’s New in Version 2.2
-
🧠 Nuclear Reset Fallback
When the standard resolution‑cycle fails (e.g. the GPU driver is completely hung), RTXFixer now automatically performs a full display‑adapter reset (CDS_RESET) and retries the handshake — breaking through even deeply locked‑up states. -
⚡ Always Responsive
Display resets now run on a background thread. The tray menu stays fully interactive, even during a fix. -
🎯 Smarter Single‑Monitor Handling
On single‑monitor systems, the tool automatically switches to a full reset — no more silent “no‑op” when targeting secondary displays. -
💾 Resolution Preservation
Instead of forcing a “maximum native” mode, RTXFixer now captures your exact configured resolution, refresh rate, and monitor placement and restores them precisely after the handshake. -
⌨ Easier Panic Hotkey
The hotkey has been changed to Ctrl + Shift + F12 (no more Alt). Faster to press when your screen is black. -
📋 Enhanced Logging
Logs now include millisecond timestamps and thread IDs, making it easier to diagnose what happened.
Works With
- NVIDIA RTX 40 Series (4060, 4070, 4080, 4090, etc.)
- NVIDIA RTX 50 Series (5060, 5070, 5080, 5090, etc.)
- Windows 10 & Windows 11
- HDMI and DisplayPort monitors
- Single‑ and multi‑monitor setups
Features
-
✔ Reliable Handshake Reset + Nuclear Fallback
Captures your current display settings (resolution, refresh, position) → drops to 1024×768 to break the handshake → restores your exact original settings. If the drop fails, a full adapter reset is triggered automatically and the handshake is retried. -
✔ Smart Display Targeting
Choose from the tray menu: Reset Secondary Only (default, safest), Reset Primary Only, or Reset ALL Displays. Single‑monitor systems are handled intelligently — no skipped resets. -
✔ Automatic Resume Protection
Detects system wake‑from‑sleep and only fires if no active display paths are found, preventing unnecessary flicker. -
✔ Fully Responsive Tray App
No window, no taskbar clutter. Resets run in the background — the tray icon and menu never freeze. -
✔ Cooldown & Concurrency Safety
Prevents retry storms (hotkey spam, overlapping wake events) with an in‑memory cooldown — no registry writes. -
✔ Detailed Logging
Every action, return code, and step is written to%LocalAppData%\RTXFixer\rtx_fixer.log. -
✔ Audio Feedback (Screen‑Independent)
• 2 low beeps = Fix started
• 1 high beep = Success
• 3 low beeps = Failed or suppressed (cooldown / no valid target)
Hotkey
Ctrl + Shift + F12
Triggers the fix using the current target mode (set via tray menu).
(Previously Ctrl+Alt+Shift+F12 — now even easier to press during a black‑screen emergency.)
How to Use
- Download and extract the ZIP file (do not run directly from inside the archive).
- Run RTXFixer.exe — the app starts silently in your system tray.
- Manual fix:
- Press Ctrl + Shift + F12, or
- Right‑click the tray icon → Force Handshake Fix
- Advanced targeting: right‑click tray icon → select Reset Secondary Only, Reset Primary Only, or Reset ALL Displays.
Optional: Run on Startup (Recommended)
- Right‑click
RTXFixer.exe→ Create shortcut - Press Win + R, type
shell:startupand press Enter - Move the shortcut into that folder
RTXFixer will now launch silently at login.
Emergency Backup (Windows Shortcut)
If RTXFixer cannot restore your display:
Win + Ctrl + Shift + B
(Restarts the graphics driver — more disruptive, but effective)
RTXFixer is recommended first because it is gentler and preserves open apps.
What This Tool Does NOT Do
RTXFixer does not:
- Install, modify, or replace GPU drivers
- Permanently change display settings
- Overclock hardware
- Modify system files beyond safe Windows APIs
RTXFixer only re‑applies existing, valid display modes.
⚠️ IMPORTANT: What This Does NOT Fix
This tool is designed for display handshake bugs only.
It will NOT fix:
❌ Physically faulty HDMI / DisplayPort cables
❌ Dead monitors or GPUs
❌ System crashes or freezes (BSOD)
❌ PCs that are fully unresponsive to input
If your keyboard LEDs don’t respond, this tool cannot help.
Disclaimer
RTXFixer is a community‑made utility and is not affiliated with NVIDIA.
Provided as‑is, without warranty of any kind.
Tested on Windows 11. Use at your own risk.
Download
Click download now to get access to the following files:
Development log
- v2.1 Update: Advanced Monitor Targeting & Smarter Safety LogicFeb 10, 2026
- v1.1 Update: Smarter Resolution DetectionFeb 06, 2026

Comments
Log in with itch.io to leave a comment.
Hola,
Primero gracias por la herramienta, la idea es justo lo que necesitaba para el bug de pantallas negras de las RTX 50 series. Quería reportar un caso en el que el fix no funciona, con logs incluidos por si ayuda a depurarlo.
Mi setup: RTX 5070 Ti, 3 monitores (DISPLAY1 y DISPLAY3 secundarios, DISPLAY2 primario), TargetMode=SecondaryOnly.
Cuando ejecuto el fix con las pantallas ya en negro (handshake roto), el log muestra esto:
[WARN] Safe search failed; fallback 1024x768 test RC=-1
[STEP] DROP 1024x768@60Hz Fields=0x207C00A0
[RC] Drop RC=-1
[WARN] No successful resets.
Es decir, incluso el CDS_TEST inicial sobre el modo de fallback (1024x768@60Hz) devuelve RC=-1, antes de intentar aplicar ningún cambio real. Esto pasa tanto en DISPLAY1 como en DISPLAY3, así que no parece específico de un monitor.
Cuando el bug NO ha ocurrido y ejecuto el mismo atajo solo para probar, todo funciona perfecto (TEST, DROP y RESTORE devuelven RC=0 sin problema).
Mi sospecha (sin ser experto) es que cuando el handshake DP/HDMI se rompe del todo, el driver nvlddmkm deja de aceptar cualquier consulta/cambio de modo en los displays secundarios, no solo el modo que la app prueba primero. Si es así, quizás el problema no esté en qué modo eligen probar, sino en que haría falta otro mecanismo aparte del cambio de resolución (por ejemplo, forzar un reset del adaptador de pantalla completo, no solo del modo, o reintentar tras un pequeño delay) para esos casos en los que el subsistema está completamente colgado.
Te paso el log completo por si es útil:
2026-06-18 18:00:43 | [START] RTXFixer started. TargetMode=SecondaryOnly
2026-06-18 18:01:24 | [RUN] Manual=True TargetMode=SecondaryOnly
2026-06-18 18:01:24 | [TARGET] \\.\DISPLAY1 (NVIDIA GeForce RTX 5070 Ti) Primary=False
2026-06-18 18:01:24 | [TEST] 640x480@75Hz RC=0
2026-06-18 18:01:24 | [INFO] Selected drop mode 640x480@75Hz
2026-06-18 18:01:24 | [STEP] DROP 640x480@75Hz Fields=0x7C0080
2026-06-18 18:01:25 | [RC] Drop RC=0
2026-06-18 18:01:26 | [STEP] RESTORE 1920x1080@75Hz
2026-06-18 18:01:27 | [RC] Restore RC=0
2026-06-18 18:01:27 | [OK] Restore applied (RC=0).
2026-06-18 18:01:27 | [INFO] Skipping \\.\DISPLAY2 (Primary=True)
2026-06-18 18:01:27 | [TARGET] \\.\DISPLAY3 (NVIDIA GeForce RTX 5070 Ti) Primary=False
2026-06-18 18:01:27 | [TEST] 640x480@144Hz RC=0
2026-06-18 18:01:27 | [INFO] Selected drop mode 640x480@144Hz
2026-06-18 18:01:27 | [STEP] DROP 640x480@144Hz Fields=0x7C0080
2026-06-18 18:01:28 | [RC] Drop RC=0
2026-06-18 18:01:29 | [STEP] RESTORE 1920x1080@144Hz
2026-06-18 18:01:30 | [RC] Restore RC=0
2026-06-18 18:01:30 | [OK] Restore applied (RC=0).
2026-06-18 19:24:18 | [RUN] Manual=True TargetMode=SecondaryOnly
2026-06-18 19:24:18 | [INFO] Skipping \\.\DISPLAY6 (Primary=True)
2026-06-18 19:24:18 | [TARGET] \\.\DISPLAY7 (NVIDIA GeForce RTX 5070 Ti) Primary=False
2026-06-18 19:24:18 | [WARN] Safe search failed; fallback 1024x768 test RC=-1
2026-06-18 19:24:18 | [STEP] DROP 1024x768@60Hz Fields=0x207C00A0
2026-06-18 19:24:18 | [RC] Drop RC=-1
2026-06-18 19:24:18 | [TARGET] \\.\DISPLAY8 (NVIDIA GeForce RTX 5070 Ti) Primary=False
2026-06-18 19:24:18 | [WARN] Safe search failed; fallback 1024x768 test RC=-1
2026-06-18 19:24:18 | [STEP] DROP 1024x768@60Hz Fields=0x207C00A0
2026-06-18 19:24:18 | [RC] Drop RC=-1
2026-06-18 19:24:18 | [WARN] No successful resets.
2026-06-18 19:24:31 | [RUN] Manual=True TargetMode=SecondaryOnly
2026-06-18 19:24:31 | [INFO] Skipping \\.\DISPLAY6 (Primary=True)
2026-06-18 19:24:31 | [TARGET] \\.\DISPLAY7 (NVIDIA GeForce RTX 5070 Ti) Primary=False
2026-06-18 19:24:31 | [WARN] Safe search failed; fallback 1024x768 test RC=-1
2026-06-18 19:24:31 | [STEP] DROP 1024x768@60Hz Fields=0x207C00A0
2026-06-18 19:24:31 | [RC] Drop RC=-1
2026-06-18 19:24:31 | [TARGET] \\.\DISPLAY8 (NVIDIA GeForce RTX 5070 Ti) Primary=False
2026-06-18 19:24:31 | [WARN] Safe search failed; fallback 1024x768 test RC=-1
2026-06-18 19:24:31 | [STEP] DROP 1024x768@60Hz Fields=0x207C00A0
2026-06-18 19:24:31 | [RC] Drop RC=-1
2026-06-18 19:24:31 | [WARN] No successful resets.
2026-06-18 19:26:42 | [START] RTXFixer started. TargetMode=SecondaryOnly
2026-06-18 19:50:13 | [START] RTXFixer started. TargetMode=SecondaryOnly
Si necesitas que pruebe alguna build de depuración o cambios concretos, encantado de ayudar. Gracias de nuevo por el trabajo.
Un saludo.
Hola,
Working on it, will let you know when I'm done.
Mucho gracias
Hi MIDASs18,
Please download the updated version (2.2) and advise if it's working for you.
Thank you