Created
March 15, 2026 04:54
-
-
Save doggeddalle/153bb481161d32924a3cfcb5dff62e92 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Convert NVIDIA GPU Power (W) → Temperature Sensor for Fan Control | |
| This guide shows how to convert NVIDIA GPU power usage (watts) into a temperature-style sensor that can be used inside Fan Control. | |
| The method works by: | |
| Reading GPU power draw using NVIDIA System Management Interface | |
| Converting watts → percentage of GPU TDP | |
| Writing the result to a .sensor file | |
| Importing that file into Fan Control as a File Sensor | |
| Fan Control then treats the number as °C, letting you drive fan curves from GPU power consumption instead of temperature. | |
| Concept | |
| Example with a 350W GPU: | |
| GPU Power Calculation Sensor Output | |
| 0W 0 / 350 × 100 0 | |
| 175W 175 / 350 × 100 50 | |
| 350W 350 / 350 × 100 100 | |
| Fan Control reads: | |
| 50 | |
| and interprets it as: | |
| 50°C | |
| This allows you to design curves like: | |
| 30°C = idle GPU power | |
| 70°C = gaming load | |
| 100°C = full power draw | |
| Architecture | |
| nvidia-smi | |
| │ | |
| │ (read GPU watts) | |
| ▼ | |
| gpu_power.ps1 | |
| │ | |
| │ (scale vs TDP) | |
| ▼ | |
| gpu_power.sensor | |
| │ | |
| ▼ | |
| Fan Control File Sensor | |
| Update loop: | |
| gpu_power.bat | |
| └── runs PowerShell script every ~3 seconds | |
| Startup: | |
| hide_gpu_script.vbs | |
| └── launches the loop hidden | |
| Files | |
| Your gist should contain: | |
| gpu-power-to-temp/ | |
| │ | |
| ├── gpu_power.ps1 | |
| ├── gpu_power.bat | |
| └── hide_gpu_script.vbs | |
| 1. Power Conversion Script | |
| gpu_power.ps1 | |
| # GPU TDP in Watts | |
| $TDP = 350 | |
| # Query GPU power draw | |
| $power = & nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits | |
| $power = [float]$power | |
| # Convert to percentage of TDP | |
| $value = ($power / $TDP) * 100 | |
| # Round to whole number | |
| $value = [math]::Round($value) | |
| # Write to sensor file | |
| Set-Content -Path ".\gpu_power.sensor" -Value $value | |
| 2. Loop Script | |
| gpu_power.bat | |
| Runs the script repeatedly so the sensor stays updated. | |
| @echo off | |
| :loop | |
| powershell -ExecutionPolicy Bypass -File "%~dp0gpu_power.ps1" | |
| timeout /t 3 >nul | |
| goto loop | |
| Update interval: | |
| 3 seconds | |
| You can change it if desired. | |
| 3. Hidden Launcher | |
| hide_gpu_script.vbs | |
| Runs the loop without opening a console window. | |
| Set WshShell = CreateObject("WScript.Shell") | |
| WshShell.Run chr(34) & "gpu_power.bat" & Chr(34), 0 | |
| Set WshShell = Nothing | |
| 4. Configure GPU TDP | |
| Edit the PowerShell script: | |
| $TDP = 350 | |
| Replace with your GPU's stock TDP. | |
| Examples: | |
| GPU TDP | |
| RTX 3060 170 | |
| RTX 3070 220 | |
| RTX 3080 320 | |
| RTX 3090 350 | |
| RTX 4090 450 | |
| The script assumes you already know your GPU's TDP. | |
| 5. Enable Startup | |
| Press: | |
| Win + R | |
| Type: | |
| shell:startup | |
| Place: | |
| hide_gpu_script.vbs | |
| inside this folder. | |
| Now the sensor generator starts automatically when Windows logs in. | |
| 6. Configure Fan Control | |
| Open Fan Control. | |
| Add File Sensor | |
| Sensors | |
| → Add | |
| → File Sensor | |
| Select: | |
| gpu_power.sensor | |
| Fan Control will now read the value as: | |
| Temperature (°C) | |
| Example Fan Curve | |
| Example GPU case fan curve: | |
| Sensor Value Fan Speed | |
| 20 20% | |
| 40 35% | |
| 60 50% | |
| 80 75% | |
| 100 100% | |
| Meaning: | |
| 80% GPU TDP = ~80°C sensor value | |
| Why This Is Useful | |
| GPU temperature can lag behind power spikes. | |
| Using power draw instead: | |
| fans respond immediately | |
| reflects actual GPU workload | |
| smoother fan ramping | |
| Useful for: | |
| GPU-heavy workloads | |
| ML inference | |
| video encoding | |
| gaming spikes | |
| Troubleshooting | |
| Sensor stuck at 0 | |
| Ensure: | |
| nvidia-smi | |
| works in terminal. | |
| Sensor file not updating | |
| Check the script folder contains: | |
| gpu_power.sensor | |
| and verify the loop script is running. | |
| Fan Control can't read file | |
| Confirm the file contains only a number: | |
| 57 | |
| No text or decimals. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment