Giter Club home page Giter Club logo

nfancurve's Introduction

nfancurve

You are probably wondering why I have chosen to write this script in Bash Shell Script. The reason is very simple; I wanted a script with the minimum number of dependencies possible. To get this script up-and-running you technically only need the temp.sh file, and the config file.

The current version of the script is version 19.6.

This script is currently set up for Celsius. However, it can easily be modified for other temperature scales.

If you need any help configuring my script or don't know how to make it start automatically check the USAGE.md file.

Features

  • comes with a more aggressive fan curve than the nvidia default (lower temps, louder noise)
  • uses nvidia-settings commands
  • automatically enables/disables GPU fan control (but not CoolBits)
  • very lightweight
  • multiple GPU control with individual fan controller support
  • makes use of a config file with explanations for each setting
  • POSIX compliant

Prerequisites

  • a POSIX compliant shell; tested with recent versions of bash and dash
  • nvidia glx driver version greater than 304
  • nvidia-settings for controlling the GPU(s)
  • coreutils
  • procps - you can comment out the function check_already_running if you don't have it

How to install

GitHub

  • Download the .zip file straight from the GitHubs
  • Extract it somewhere, and open a terminal to that directory
  • Make sure CoolBits is enabled (see USAGE.md)
  • Run sh temp.sh (or any compatable shell) or ./temp.sh for a foreground process. Run with the option -D (case sensitive) for a background process (i.e. ./temp.sh -D). Note that using sh or ./ will automatically use your default shell.

git

  • Choose a folder you want to download/install the script in
  • git clone https://github.com/nan0s7/nfancurve
  • Follow the last two steps under the GitHub guide area

Arch Linux

There are unofficial AUR packages:

Using the systemd service

Ensure the script and the config paths are correct. Move or copy the nfancurve.service file to /etc/systemd/user/nfancurve.service then enable and start the service with:

systemctl --user daemon-reload
systemctl --user start nfancurve.service
systemctl --user enable nfancurve.service

Troubleshooting

On some Distro's which are further behind in updates, or if there's a slight misconfiguration with services, you may encounter issues with the service file.

To work around this, you may change the following lines in the nfancurve.service file:

  1. Change After=graphical-session.target to After=default.target
  2. Remove the line Requires=graphical-session.target
  3. Change WantedBy=graphical-session.target to WantedBy=default.target
  4. Under the [Service] heading, add the line ExecStartPre=/bin/sleep 20

Don't forget to reload and reenable the service:

systemctl --user daemon-reload
systemctl reenable --user nfancurve.service

Honourable mentions

  • @aryonoco, for being my multi-GPU guinea pig
  • @civyshk, for making a Python fork
  • @zJelly, for working on an AMD-GPU supporting fork
  • @dpayne, for adding useful script parameters
  • @Scrumplex, for adding check to avoid errors when config is missing, and initialising the AUR packages
  • @stefmitropoulos, for greatly improving the way config files are loaded
  • @mklement0, (stackoverflow) for a POSIX implimentation of resolving file symlinks
  • @xberg, for finding and fixing a bug with the multi-GPU side of the script
  • @edave, for helping test the initial implimentation of multi-fan GPU support
  • @louissmit, for helping test the final multi-fan GPU feature implimentation
  • @D3473R, for adding an example systemd service file
  • @ReneHollander, for maintaining and improving the stable AUR package
  • @kenbeese, for making me aware of a multi-GPU bug
  • @BryanHitchcock, for fixing an issue with single GPU, multi-fan configurations
  • @mooninite, for fixing a couple of bugs

TODO

  • make sure that "CoolBits" is enabled - not really the scope of this script
  • possibly check the currently installed driver version - earlier versions used the GPUCurrentFanSpeed command
  • add in a really detailed guide of how the script works
  • add nouveau support (once they fix Pascal)
  • add AMD support?
  • make fans controllable without needing to use the nvidia-settings app (for headless support)

nfancurve's People

Contributors

avimanyu786 avatar bryanhitc avatar d3473r avatar dpayne avatar edge33 avatar gglin001 avatar jjshoots avatar mooninite avatar nan0s7 avatar oehme avatar renehollander avatar scrumplex avatar smitropoulos avatar suburbski avatar thilou avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.