{"id":13587859,"url":"https://github.com/nan0s7/nfancurve","last_synced_at":"2025-04-08T02:34:05.340Z","repository":{"id":41165349,"uuid":"95277518","full_name":"nan0s7/nfancurve","owner":"nan0s7","description":"A small and lightweight POSIX script for using a custom fan curve in Linux for those with an Nvidia GPU.","archived":false,"fork":false,"pushed_at":"2023-08-05T13:33:19.000Z","size":200,"stargazers_count":300,"open_issues_count":11,"forks_count":54,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-02-14T21:58:33.675Z","etag":null,"topics":["custom-fan-curve","efficient","fan-control","fans","gpu","graphics","graphics-card","linux","nvidia","procps","script","sh","speed","temperature"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nan0s7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-06-24T05:21:01.000Z","updated_at":"2024-01-08T17:03:27.000Z","dependencies_parsed_at":"2023-10-21T00:15:16.306Z","dependency_job_id":null,"html_url":"https://github.com/nan0s7/nfancurve","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nan0s7%2Fnfancurve","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nan0s7%2Fnfancurve/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nan0s7%2Fnfancurve/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nan0s7%2Fnfancurve/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nan0s7","download_url":"https://codeload.github.com/nan0s7/nfancurve/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223300579,"owners_count":17122647,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom-fan-curve","efficient","fan-control","fans","gpu","graphics","graphics-card","linux","nvidia","procps","script","sh","speed","temperature"],"created_at":"2024-08-01T15:06:23.575Z","updated_at":"2024-11-06T07:30:31.975Z","avatar_url":"https://github.com/nan0s7.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"nfancurve\n---------\nYou 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.\n\nThe current version of the script is **version 19.6**.\n\nThis script is currently set up for Celsius. However, it can easily be modified for other temperature scales.\n\nIf you need any help configuring my script or don't know how to make it start automatically check the [USAGE.md](USAGE.md) file.\n\n## Features\n- comes with a more aggressive fan curve than the nvidia default (lower temps, louder noise)\n- uses `nvidia-settings` commands\n- automatically enables/disables GPU fan control (but **not** `CoolBits`)\n- very lightweight\n- multiple GPU control with individual fan controller support\n- makes use of a config file with explanations for each setting\n- POSIX compliant\n\n## Prerequisites\n- a POSIX compliant shell; tested with recent versions of `bash` and `dash`\n- `nvidia glx driver` version greater than 304\n- `nvidia-settings` for controlling the GPU(s)\n- `coreutils`\n- `procps` - you can comment out the function `check_already_running` if you don't have it\n\n## How to install\n### GitHub\n- Download the .zip file straight from the GitHubs\n- Extract it somewhere, and open a terminal to that directory\n- Make sure `CoolBits` is enabled (see [USAGE.md](USAGE.md))\n- 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.\n\n### git\n- Choose a folder you want to download/install the script in\n- `git clone https://github.com/nan0s7/nfancurve`\n- Follow the last two steps under the **GitHub** guide area\n\n### Arch Linux\nThere are unofficial AUR packages:\n- Stable: [nfancurve](https://aur.archlinux.org/packages/nfancurve/)\u003csup\u003eAUR\u003c/sup\u003e, maintained by [@ReneHollander](https://github.com/ReneHollander)\n- Git Master: [nfancurve-git](https://aur.archlinux.org/packages/nfancurve-git/)\u003csup\u003eAUR\u003c/sup\u003e, outdated and unmaintained\n\n## Using the systemd service\nEnsure the script and the config paths are correct.\nMove or copy the nfancurve.service file to /etc/systemd/user/nfancurve.service then enable and start the service with:\n\n    systemctl --user daemon-reload\n    systemctl --user start nfancurve.service\n    systemctl --user enable nfancurve.service\n\n### Troubleshooting\nOn 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.\n\nTo work around this, you may change the following lines in the `nfancurve.service` file:\n1. Change `After=graphical-session.target` to `After=default.target`\n2. Remove the line `Requires=graphical-session.target`\n3. Change `WantedBy=graphical-session.target` to `WantedBy=default.target`\n4. Under the `[Service]` heading, add the line `ExecStartPre=/bin/sleep 20`\n\nDon't forget to reload and reenable the service:\n\n    systemctl --user daemon-reload\n    systemctl reenable --user nfancurve.service\n\n## Honourable mentions\n- [@aryonoco](https://github.com/aryonoco), for being my multi-GPU guinea pig\n- [@civyshk](https://github.com/civyshk), for making a Python fork\n- [@zJelly](https://github.com/zJelly), for working on an AMD-GPU supporting fork\n- [@dpayne](https://github.com/dpayne), for adding useful script parameters\n- [@Scrumplex](https://github.com/Scrumplex), for adding check to avoid errors when config is missing, and initialising the AUR packages\n- [@stefmitropoulos](https://github.com/stefmitropoulos), for greatly improving the way config files are loaded\n- [@mklement0](https://stackoverflow.com/users/45375/mklement0), (stackoverflow) for a [POSIX implimentation](https://stackoverflow.com/questions/29832037/how-to-get-script-directory-in-posix-sh) of resolving file symlinks\n- [@xberg](https://github.com/xberg), for finding and fixing a bug with the multi-GPU side of the script\n- [@edave](https://github.com/edave), for helping test the initial implimentation of multi-fan GPU support\n- [@louissmit](https://github.com/louissmit), for helping test the final multi-fan GPU feature implimentation\n- [@D3473R](https://github.com/D3473R), for adding an example systemd service file\n- [@ReneHollander](https://github.com/ReneHollander), for maintaining and improving the stable AUR package\n- [@kenbeese](https://github.com/kenbeese), for making me aware of a multi-GPU bug\n- [@BryanHitchcock](https://github.com/BryanHitchcock), for fixing an issue with single GPU, multi-fan configurations\n- [@mooninite](https://github.com/mooninite), for fixing a couple of bugs\n\n## TODO\n- ~~make sure that \"CoolBits\" is enabled~~ - _not really the scope of this script_\n- ~~possibly check the currently installed driver version~~ - _earlier versions used the  GPUCurrentFanSpeed command_\n- add in a **really** detailed guide of how the script works\n- add nouveau support (once they fix Pascal)\n- add AMD support?\n- make fans controllable without needing to use the `nvidia-settings` app (for headless support)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnan0s7%2Fnfancurve","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnan0s7%2Fnfancurve","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnan0s7%2Fnfancurve/lists"}