Skip to content

Latest commit

ย 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

n-control // NVIDIA RTX GPU Fan Curve, Telemetry & Remote Management Suite

A modern, lightweight, and professional hardware telemetry and fan control suite designed specifically for Linux-based NVIDIA GPU workstations, AI compute servers, and main home-lab rigs (tailored for GeForce RTX 50-series such as RTX 5090 and RTX 40-series cards).

Unlike Windows, Linux workstations and AI inference servers traditionally lacked an intuitive, responsive graphical fan controller. n-control bridges this gap: it runs natively on the Linux host as a dedicated systemctl --user daemon (FastAPI + WebSockets + NVML) and serves a sleek, glassmorphic React web interface (Vite + Tailwind CSS). This allows you to monitor and control your GPU directly in a local browser or manage it remotely from your Windows workstation, laptop, or mobile device across the network.


๐Ÿ“ธ Dashboard Overview

n-control Dashboard Overview


๐ŸŽฏ Ideal For

  • ๐Ÿง  AI & LLM Inference Servers: Running local AI workloads like Ollama, vLLM, PyTorch, or ComfyUI? Monitor exact VRAM allocations per process and prevent thermal throttling during heavy continuous generation.
  • ๐Ÿ–ฅ๏ธ Linux Workstations & GPU Servers: Full zero-RPM and custom multi-fan control for your daily driver Linux machine (Pop!_OS, Ubuntu, Debian, etc.).
  • ๐ŸŒ Remote GPU Management from Windows: Keep your power-hungry Linux AI/compute rig in another room or rack while monitoring thermals, switching profiles, and tweaking curves from your Windows desktop via browser or encrypted SSH tunnel.

โœจ Features

  • ๐Ÿ“Š Real-Time Hardware Telemetry (1 Hz):

    • Physical GPU core temperature, hotspot, and GDDR7/GDDR6X VRAM junction temperatures.
    • True physical tachometer feedback (RPM & %) with hardware zero-RPM detection (no fake states).
    • Core and memory clock frequencies (MHz), power draw (Watts & % of power envelope).
    • VRAM utilization gauge and core utilization tracking.
  • ๐Ÿ“ˆ Interactive Fan Curve Editor with Auto-Apply:

    • Drag-and-drop curve control points directly on the chart canvas.
    • Live Temperature Tracker: A vertical real-time indicator shows the current GPU temperature and its active target fan speed.
    • Auto-Apply: Curve changes immediately take effect upon releasing points.
    • Hysteresis Drop Protection: Smooth cooling transitions prevent fan ramping up and down during transient temperature spikes.
    • Hardware Zero-RPM Support: Automatically activates BIOS-level quiet mode (GPUFanControlState=0) under 50ยฐC.
    • Emergency Thermal Safeguard: Automated 100% emergency override if temperatures reach critical limits (e.g. 88ยฐC).

Fan Curve Editor

  • ๐Ÿ” Integrated nvidia-smi Suite & Process Explorer:

    • VRAM Process Monitor: Detailed breakdown of every process running on the GPU (PID, executable name, compute/graphics classification, exact VRAM footprint in MB and %).
    • Live CLI Terminal: Authentic, monospaced nvidia-smi ASCII box output in a terminal view with a 1-click copy button and auto-refresh.
    • PCIe & Power Limits: Real-time PCIe link generation and bus width (Current vs. Max, e.g. Gen 4 @ 16x) and enforced power envelopes (Min, Default, Current, Max).
  • โš™๏ธ Profile Management & Live Timeline:

    • Built-in presets: Silent / Zero-RPM, Gaming / Balanced, Extreme Cool, and Factory Default.
    • Create and switch custom profiles stored persistently in profiles.json.
    • 60-second rolling telemetry graph for core temperature and fan speeds.

Fan Profiles and Telemetry History

  • โ„๏ธ 1-Click Cooldown Turbo Mode:

    • Instantly ramps all fans to 100% turbo power for 60 seconds with an animated live countdown.
    • Safely cancels at any moment with a single click, returning fans smoothly to the active curve.
  • ๐Ÿ› ๏ธ System Diagnostics & Coolbits Validation:

    • Instant checks for NVIDIA driver readiness (580.x+), NVML handle status, Coolbits (28) activation, and nvidia-settings execution permissions.

System Diagnostics and Coolbits Check

  • ๐ŸŒ Seamless Remote Access & Dual Language (EN / DE):
    • Native bilingual interface with instant [ DE | EN ] toggle in the header navbar.
    • Optimized for remote browser management from Windows, macOS, or Linux clients.

Remote Management Configuration

  • ๐Ÿ“‹ Structured Live Log Stream:
    • Transparent in-memory and file-based execution logging (n-control.log).
    • Records every driver command, exit code, STDOUT, and STDERR with keyword filtering and line-by-line copying.

๐Ÿš€ Quick Setup (All-In-One Automated Installer)

The installer handles the complete setup in one step: Python virtual environment, dependencies, Coolbits 28 configuration, Linux firewall opening, sudoers permissions, and systemd user service registration.

Step 1: Clone Repository

On your Linux GPU machine / server:

git clone <repository-url>
cd n-control

Step 2: Run All-In-One Installer

./install_service.sh

What the installer automatically configures:

  1. Python Virtual Environment: Installs dependencies (fastapi, uvicorn, pynvml).
  2. NVIDIA Coolbits 28: Writes /etc/X11/xorg.conf.d/20-nvidia-coolbits.conf to unlock manual GPU fan speed control.
  3. Linux Firewall (Port 9191/tcp): Automatically permits incoming TCP traffic on port 9191 in UFW or firewalld for LAN/remote management.
  4. Driver Sudoers Rule: Sets up /etc/sudoers.d/n-control-nvidia so nvidia-settings can execute uninterrupted in the background.
  5. Systemd User Service: Registers and starts n-control.service with loginctl enable-linger (keeps running across logouts and headless reboots).

โš ๏ธ One-Time Reboot Required if Coolbits was just enabled: The NVIDIA proprietary Linux driver requires a single reboot to apply Coolbits permissions:

sudo reboot

After rebooting, verify fan control status:

nvidia-settings -q [gpu:0]/GPUFanControlState

(Returns Attribute 'GPUFanControlState' ...: 0 $\rightarrow$ Hardware fan control active!)


๐ŸŽฎ Access & Daily Operations

Once installed, the web interface is immediately available at: ๐Ÿ‘‰ http://localhost:9191

Common Systemd Management Commands:

Task Command
Check service status systemctl --user status n-control
View live log stream journalctl --user -u n-control -f
Restart daemon systemctl --user restart n-control
Stop daemon systemctl --user stop n-control
Inspect raw log file cat n-control/backend/n-control.log

๐Ÿ’ป Remote Management from Windows

You can manage your Linux GPU / AI server from any client on the local network:

Option A: Direct LAN Access

Enter your Linux machine's local network IP in your Windows browser:

http://192.168.1.XX:9191

Option B: Encrypted SSH Port Forwarding (Recommended)

Forward the daemon port securely to your Windows PC via PowerShell or Command Prompt:

ssh -N -L 9191:localhost:9191 user@pop-os-ip

(Alternatively, double-click the included scripts/start_tunnel_windows.bat file!)

Then open in your Windows browser: http://localhost:9191

๐Ÿ›ก๏ธ Linux Firewall Configuration (Port 9191):

The installer automatically opens port 9191, but if you manage your firewall manually:

  • UFW (Ubuntu / Pop!_OS / Debian):
    sudo ufw allow 9191/tcp comment "n-control Daemon"
  • firewalld (Fedora / RHEL / CentOS):
    sudo firewall-cmd --add-port=9191/tcp --permanent
    sudo firewall-cmd --reload

๐Ÿงฉ Project Architecture

n-control/
โ”œโ”€โ”€ backend/
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ hardware/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ nvidia.py         # NVML controller, hardware sensors, nvidia-smi data
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ fan_engine.py     # Fan curve math, hysteresis smoothing & safe fallback
โ”‚   โ”‚   โ”œโ”€โ”€ models/               # Pydantic schemas (Telemetry, Profiles, SMI models)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ telemetry.py
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ profile.py
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ smi.py
โ”‚   โ”‚   โ”œโ”€โ”€ logger.py             # Structured file logging & live in-memory ring buffer
โ”‚   โ”‚   โ””โ”€โ”€ main.py               # FastAPI REST/WebSocket server & static asset host
โ”‚   โ”œโ”€โ”€ install_service.sh        # Systemd user-service installer & sudoers setup
โ”‚   โ”œโ”€โ”€ uninstall_service.sh      # Clean uninstaller script
โ”‚   โ”œโ”€โ”€ profiles.json             # Persistent curve & fan configuration
โ”‚   โ””โ”€โ”€ requirements.txt          # Python dependencies
โ”œโ”€โ”€ docs/
โ”‚   โ””โ”€โ”€ images/                   # Screenshots for documentation & README
โ”œโ”€โ”€ frontend/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/           # UI components (CurveEditor, NvidiaSmiModal, Gauges, ...)
โ”‚   โ”‚   โ”œโ”€โ”€ i18n/                 # Localization context & translations (DE / EN)
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/                # WebSocket & telemetry synchronization
โ”‚   โ”‚   โ””โ”€โ”€ App.tsx               # Root application component
โ”‚   โ””โ”€โ”€ dist/                     # Pre-compiled production bundles (committed to Git)
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ set_fans.sh               # Execution wrapper for nvidia-settings commands
โ”‚   โ”œโ”€โ”€ setup_coolbits.sh         # Automated Coolbits 28 X11 configurator
โ”‚   โ”œโ”€โ”€ start_tunnel_windows.bat  # 1-click Windows SSH tunnel launcher
โ”‚   โ””โ”€โ”€ test_fans.py              # Standalone CLI hardware diagnostic tool
โ”œโ”€โ”€ GEMINI.md                     # Engineering rules & hardware constraints
โ”œโ”€โ”€ IDEAS.md                      # Roadmap & planned feature ideas
โ””โ”€โ”€ README.md                     # Project documentation

โ“ Troubleshooting & FAQ

1. Fans do not spin up when clicking Cooldown or setting manual speed?

  • Open the Logs modal in the top header navbar.
  • Check that driver commands return exit code: 0.
  • If you see Operation not permitted or permission issues, re-run ./install_service.sh on the Linux host to ensure the /etc/sudoers.d/n-control-nvidia rule is in place.

2. Fans remain at 0 RPM during low load?

  • This is the intentional Zero-RPM feature active in the Silent / Zero-RPM profile. The fans spin down silently below 50ยฐC by delegating control to the GPU BIOS (GPUFanControlState=0).
  • As temperature rises or when adjusting the curve upwards in the Curve Editor, fans will engage automatically at their calibrated starting speed (30%+).

3. How do I inspect what is consuming VRAM on my AI server?

  • Click the [ nvidia-smi ] button in the header.
  • The Processes (VRAM) tab will display each active process (e.g. ollama_llama_server, python, Xorg), its PID, whether it is a CUDA compute or graphics task, and the exact megabytes of VRAM consumed.

๐Ÿ“„ License

This project is open-source and licensed under the MIT License.

About

Modern Linux daemon & remote web UI for NVIDIA RTX GPUs. Custom fan curves, real-time telemetry, zero-RPM, nvidia-smi process monitor & remote management.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages