{"id":13586512,"url":"https://github.com/liquidctl/liquidctl","last_synced_at":"2025-12-11T23:02:43.276Z","repository":{"id":37747726,"uuid":"142497496","full_name":"liquidctl/liquidctl","owner":"liquidctl","description":"Cross-platform CLI and Python drivers for AIO liquid coolers and other devices","archived":false,"fork":false,"pushed_at":"2025-12-03T00:27:16.000Z","size":4305,"stargazers_count":2484,"open_issues_count":63,"forks_count":250,"subscribers_count":42,"default_branch":"main","last_synced_at":"2025-12-06T00:52:56.062Z","etag":null,"topics":["aquacomputer","asus","corsair","cross-platform","dram","driver","evga","fan-controller","gigabyte","graphics-card","led-controller","liquid-cooler","nzxt","power-supply","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/liquidctl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-07-26T21:51:04.000Z","updated_at":"2025-12-06T00:40:56.000Z","dependencies_parsed_at":"2024-04-12T02:24:19.207Z","dependency_job_id":"7ac74606-1c31-4b1e-9d13-a0ba14a58039","html_url":"https://github.com/liquidctl/liquidctl","commit_stats":{"total_commits":1889,"total_committers":52,"mean_commits":36.32692307692308,"dds":"0.16357861302276333","last_synced_commit":"c20fbb0f6ae4a0ee6cc6bd091ecd7ad99502cb0e"},"previous_names":["jonasmalacofilho/liquidctl"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/liquidctl/liquidctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquidctl%2Fliquidctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquidctl%2Fliquidctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquidctl%2Fliquidctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquidctl%2Fliquidctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liquidctl","download_url":"https://codeload.github.com/liquidctl/liquidctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liquidctl%2Fliquidctl/sbom","scorecard":{"id":592147,"data":{"date":"2025-08-11","repo":{"name":"github.com/liquidctl/liquidctl","commit":"115cbcaabe91ddb0693e416198bb9898c5172cea"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.9,"checks":[{"name":"Maintained","score":10,"reason":"3 commit(s) and 13 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 4/30 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/style-check.yml:1","Warn: no topLevel permission defined: .github/workflows/test-from-sources.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/style-check.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/liquidctl/liquidctl/style-check.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/style-check.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/liquidctl/liquidctl/style-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-from-sources.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/liquidctl/liquidctl/test-from-sources.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-from-sources.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/liquidctl/liquidctl/test-from-sources.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/test-from-sources.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/test-from-sources.yml:56","Warn: pipCommand not pinned by hash: .github/workflows/test-from-sources.yml:58","Warn: pipCommand not pinned by hash: .github/workflows/test-from-sources.yml:79","Warn: pipCommand not pinned by hash: .github/workflows/test-from-sources.yml:81","Warn: pipCommand not pinned by hash: .github/workflows/test-from-sources.yml:82","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   6 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: liquidctl-1.15.0-py3-none-any.whl.asc: https://github.com/liquidctl/liquidctl/releases/tag/v1.15.0","Info: signed release artifact: liquidctl-1.14.0-py3-none-any.whl.asc: https://github.com/liquidctl/liquidctl/releases/tag/v1.14.0","Info: signed release artifact: liquidctl-1.13.0-py3-none-any.whl.asc: https://github.com/liquidctl/liquidctl/releases/tag/v1.13.0","Info: signed release artifact: liquidctl-1.12.1-py3-none-any.whl.asc: https://github.com/liquidctl/liquidctl/releases/tag/v1.12.1","Info: signed release artifact: liquidctl-1.12.0-py3-none-any.whl.asc: https://github.com/liquidctl/liquidctl/releases/tag/v1.12.0","Warn: release artifact v1.15.0 does not have provenance: https://api.github.com/repos/liquidctl/liquidctl/releases/212049307","Warn: release artifact v1.14.0 does not have provenance: https://api.github.com/repos/liquidctl/liquidctl/releases/192845211","Warn: release artifact v1.13.0 does not have provenance: https://api.github.com/repos/liquidctl/liquidctl/releases/113613211","Warn: release artifact v1.12.1 does not have provenance: https://api.github.com/repos/liquidctl/liquidctl/releases/88963343","Warn: release artifact v1.12.0 does not have provenance: https://api.github.com/repos/liquidctl/liquidctl/releases/88245298"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T22:13:18.107Z","repository_id":37747726,"created_at":"2025-08-20T22:13:18.107Z","updated_at":"2025-08-20T22:13:18.107Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27614465,"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","status":"online","status_checked_at":"2025-12-09T02:00:09.185Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aquacomputer","asus","corsair","cross-platform","dram","driver","evga","fan-controller","gigabyte","graphics-card","led-controller","liquid-cooler","nzxt","power-supply","python"],"created_at":"2024-08-01T15:05:37.328Z","updated_at":"2025-12-11T23:02:43.265Z","avatar_url":"https://github.com/liquidctl.png","language":"Python","readme":"# liquidctl – liquid cooler control\n\n_Cross-platform tool and drivers for liquid coolers and other devices_\n\n[![Our Discord server](https://img.shields.io/discord/780568774964805672)](https://discord.gg/GyCBjQhqCd)\n[![Status of the tests](https://github.com/liquidctl/liquidctl/workflows/tests/badge.svg)](https://github.com/liquidctl/liquidctl/commits/main)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4949/badge)](https://bestpractices.coreinfrastructure.org/projects/4949)\n\n```\n$ liquidctl list\nDevice #0: Corsair Vengeance RGB DIMM2\nDevice #1: Corsair Vengeance RGB DIMM4\nDevice #2: NZXT Smart Device (V1)\nDevice #3: NZXT Kraken X (X42, X52, X62 or X72)\n\n# liquidctl initialize all\nNZXT Smart Device (V1)\n├── Firmware version             1.7\n├── LED accessories                2\n├── LED accessory type    HUE+ Strip\n└── LED count (total)             20\n\nNZXT Kraken X (X42, X52, X62 or X72)\n└── Firmware version    6.2\n\n# liquidctl status\nNZXT Smart Device (V1)\n├── Fan 1 speed            1499  rpm\n├── Fan 1 voltage         11.91  V\n├── Fan 1 current          0.05  A\n├── Fan 1 control mode      PWM\n├── Fan 2 [...]\n├── Fan 3 [...]\n└── Noise level              61  dB\n\nNZXT Kraken X (X42, X52, X62 or X72)\n├── Liquid temperature    34.7  °C\n├── Fan speed              798  rpm\n└── Pump speed            2268  rpm\n\n# liquidctl status --match vengeance --unsafe=smbus,vengeance_rgb\nCorsair Vengeance RGB DIMM2\n└── Temperature    37.5  °C\n\nCorsair Vengeance RGB DIMM4\n└── Temperature    37.8  °C\n\n# liquidctl --match kraken set fan speed  20 30  30 50  34 80  40 90  50 100\n# liquidctl --match kraken set pump speed 70\n# liquidctl --match kraken set sync color fixed 0080ff\n# liquidctl --match \"smart device\" set led color moving-alternating \"hsv(30,98,100)\" \"hsv(30,98,10)\" --speed slower\n```\n\n\n## Contents\n[Contents]: #contents\n\n1. [Supported devices]\n1. [Installation]\n    1. [Linux distributions]\n    1. [macOS Homebrew]\n    2. [FreeBSD and DragonFly BSD Ports]\n    1. [Manual installation]\n        1. [Linux dependencies]\n        1. [macOS system dependencies]\n        1. [Windows system dependencies]\n        1. [Creating a virtual environment]\n        1. [Installing from PyPI or GitHub]\n        1. [Allowing access to the devices]\n        1. [Additional files]\n    1. [Working locally]\n1. [The command-line interface]\n    1. [Listing and selecting devices]\n    1. [Initializing and interacting with devices]\n    1. [Supported color specification formats]\n1. [Using liquidctl in other programs and scripts]\n1. [Automation and running at boot]\n    1. [Set up Linux using systemd]\n    1. [Set up Windows using Task Scheduler]\n    1. [Set up macOS using various methods]\n1. [Troubleshooting]\n1. [Additional documentation]\n1. [License]\n1. [Related projects]\n\n\n## Supported devices\n[Supported devices]: #supported-devices\n\nThe following devices are supported by liquidctl.  In the table, MRLV stands\nfor the _minimum recommended liquidctl version._  The linked documents contain\nspecific usage instructions and other useful information.\n\n\u003c!--\n\nThe table is manually sorted to keep certain device families, like confusing\ngenerations of Corsair coolers and NZXT Smart Devices, in chronological order.\n\nCategories are sorted in a somewhat subjective \"from more to less liquid\ncontrol-ly\" order.\n\nCommon prefixes or suffixes are deduplicated and brought before device\ndifferentiators: for example, \"Platinum H100i, H100i SE, H115i\" instead of\n\"H100i Platinum, H100i Platinum SE, H115i Platinum\".\n\nIf a newly supported device is a member of an already supported family, the\nfamily is temporarily split between old and new devices until the next release.\n\nDevice notes are sorted alphabetically, major (upper case) notes before minor\n(lower case) ones.\n\n--\u003e\n\n| Type               | Device family and specific documentation | Notes | MRLV |\n| :--                | :-- | --: | :-: |\n| AIO liquid cooler  | [ASUS Ryujin II 360](docs/asus-ryujin-guide.md) | \u003csup\u003e_p_\u003c/sup\u003e | 1.14.0 |\n| AIO liquid cooler  | [ASUS Ryuo I 240](docs/asus-ryuo-guide.md) | \u003csup\u003e_p_\u003c/sup\u003e | git |\n| AIO liquid cooler  | [Corsair Hydro H110i GT](docs/coolit-guide.md) | \u003csup\u003e_p_\u003c/sup\u003e | 1.14.0 |\n| AIO liquid cooler  | [Corsair Hydro H80i GT, H100i GTX, H110i GTX](docs/asetek-690lc-guide.md) | \u003csup\u003e_Z_\u003c/sup\u003e | 1.9.1 |\n| AIO liquid cooler  | [Corsair Hydro H80i v2, H100i v2, H115i](docs/asetek-690lc-guide.md) | \u003csup\u003e_Z_\u003c/sup\u003e | 1.9.1 |\n| AIO liquid cooler  | [Corsair Hydro Pro H100i, H115i, H150i](docs/asetek-pro-guide.md) | \u003csup\u003e_Z_\u003c/sup\u003e | 1.9.1 |\n| AIO liquid cooler  | [Corsair Hydro Platinum H100i, H100i SE, H115i](docs/corsair-platinum-pro-xt-guide.md) | | 1.8.1 |\n| AIO liquid cooler  | [Corsair Hydro Pro XT H60i, H100i, H115i, H150i](docs/corsair-platinum-pro-xt-guide.md) | | 1.8.1 |\n| AIO liquid cooler  | [Corsair iCUE Elite Capellix H100i, H115i, H150i](docs/corsair-commander-core-guide.md) | \u003csup\u003e_Bp_\u003c/sup\u003e | 1.14.0 |\n| AIO liquid cooler  | [Corsair iCUE Elite RGB H100i, H115i, H150i](docs/corsair-platinum-pro-xt-guide.md) | | 1.14.0 |\n| AIO liquid cooler  | [EVGA CLC 120 (CL12), 240, 280, 360](docs/asetek-690lc-guide.md) | \u003csup\u003e_Z_\u003c/sup\u003e | 1.9.1 |\n| AIO liquid cooler  | [MSI MPG Coreliquid K360](docs/msi-mpg-coreliquid-guide.md) | \u003csup\u003e_p_\u003c/sup\u003e | 1.14.0 |\n| AIO liquid cooler  | [NZXT Kraken M22](docs/kraken-x2-m2-guide.md) | | 1.10.0 |\n| AIO liquid cooler  | [NZXT Kraken X40, X60](docs/asetek-690lc-guide.md) | \u003csup\u003e_LZ_\u003c/sup\u003e | 1.9.1 |\n| AIO liquid cooler  | [NZXT Kraken X31, X41, X61](docs/asetek-690lc-guide.md) | \u003csup\u003e_LZ_\u003c/sup\u003e | 1.9.1 |\n| AIO liquid cooler  | [NZXT Kraken X42, X52, X62, X72](docs/kraken-x2-m2-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.11.1 |\n| AIO liquid cooler  | [NZXT Kraken X53, X63, X73](docs/kraken-x3-z3-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.11.1 |\n| AIO liquid cooler  | [NZXT Kraken Z53, Z63, Z73](docs/kraken-x3-z3-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.14.0 |\n| AIO liquid cooler  | [NZXT Kraken 2023 Standard, Elite](docs/kraken-x3-z3-guide.md) | \u003csup\u003e_p_\u003c/sup\u003e | 1.14.0 |\n| AIO liquid cooler  | [NZXT Kraken 2024 Elite RGB](docs/kraken-x3-z3-guide.md) | \u003csup\u003e_p_\u003c/sup\u003e | 1.15.0 |\n| Pump controller    | [Aquacomputer D5 Next](docs/aquacomputer-d5next-guide.md) | \u003csup\u003e_hp_\u003c/sup\u003e | 1.15.0 |\n| Fan/LED controller | [Aquacomputer Octo](docs/aquacomputer-octo-guide.md) | \u003csup\u003e_hp_\u003c/sup\u003e | 1.15.0 |\n| Fan/LED controller | [Aquacomputer Quadro](docs/aquacomputer-quadro-guide.md) | \u003csup\u003e_hp_\u003c/sup\u003e | 1.15.0 |\n| Fan/LED controller | [Corsair Commander Pro](docs/corsair-commander-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.11.1 |\n| Fan/LED controller | [Corsair Commander Core, Core XT, ST](docs/corsair-commander-core-guide.md) | \u003csup\u003e_Bp_\u003c/sup\u003e | 1.14.0 |\n| Fan/LED controller | [Corsair Lighting Node Core, Pro](docs/corsair-commander-guide.md) | | 1.8.1 |\n| Fan/LED controller | [Corsair Obsidian 1000D](docs/corsair-commander-guide.md) | | 1.9.1 |\n| Fan/LED controller | [NZXT Grid+ V3](docs/nzxt-smart-device-v1-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.11.1 |\n| Fan/LED controller | [NZXT HUE 2, HUE 2 Ambient](docs/nzxt-hue2-guide.md) | | 1.7.2 |\n| Fan/LED controller | [NZXT RGB \u0026 Fan Controller](docs/nzxt-hue2-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.11.1 |\n| Fan/LED controller | [NZXT RGB \u0026 Fan Controller (3+6 channels)](docs/nzxt-hue2-guide.md) | \u003csup\u003e_hp_\u003c/sup\u003e | 1.12.1 |\n| Fan/LED controller | [NZXT Smart Device](docs/nzxt-smart-device-v1-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.11.1 |\n| Fan/LED controller | [NZXT Smart Device V2](docs/nzxt-hue2-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.11.1 |\n| Fan/LED controller | [NZXT H1 V2](docs/nzxt-hue2-guide.md) | | 1.10.0 |\n| DDR4 memory        | [Corsair Vengeance RGB](docs/ddr4-guide.md) | \u003csup\u003e_Uax_\u003c/sup\u003e | 1.7.2 |\n| DDR4 memory        | [Generic DDR4 temperature sensor](docs/ddr4-guide.md) | \u003csup\u003e_Uax_\u003c/sup\u003e | 1.8.1 |\n| Power supply       | [Corsair HX750i, HX850i, HX1000i, HX1200i, HX1500i](docs/corsair-hxi-rmi-psu-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.14.0 |\n| Power supply       | [Corsair ATX 3.1 HX1200i](docs/corsair-hxi-rmi-psu-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | git |\n| Power supply       | [Corsair RM650i, RM750i, RM850i, RM1000i](docs/corsair-hxi-rmi-psu-guide.md) | \u003csup\u003e_h_\u003c/sup\u003e | 1.14.0 |\n| Power supply       | [NZXT E500, E650, E850](docs/nzxt-e-series-psu-guide.md) | \u003csup\u003e_p_\u003c/sup\u003e | 1.7.2 |\n| LED controller     | [Aquacomputer Farbwerk 360](docs/aquacomputer-farbwerk360-guide.md) | \u003csup\u003e_hp_\u003c/sup\u003e | 1.15.0 |\n| Graphics card RGB  | [Select ASUS GTX and RTX cards](docs/nvidia-guide.md) | \u003csup\u003e_Ux_\u003c/sup\u003e | 1.9.1 |\n| Graphics card RGB  | [Select EVGA GTX 1070, 1070 Ti and 1080 cards](docs/nvidia-guide.md) | \u003csup\u003e_Ux_\u003c/sup\u003e | 1.9.1 |\n| Motherboard RGB    | [ASUS Aura LED motherboards](docs/asus-aura-led-guide.md) | | 1.10.0 |\n| Motherboard RGB    | [Gigabyte RGB Fusion 2.0 motherboards](docs/gigabyte-rgb-fusion2-guide.md) | | 1.5.2 |\n\n\u003csup\u003e_B_\u003c/sup\u003e _Broken in at least one significant way._\u003cbr\u003e\n\u003csup\u003e_L_\u003c/sup\u003e _Requires the `--legacy-690lc` flag._\u003cbr\u003e\n\u003csup\u003e_U_\u003c/sup\u003e _Requires `--unsafe` features._\u003cbr\u003e\n\u003csup\u003e_Z_\u003c/sup\u003e _Requires replacing the device driver [on Windows][Windows system dependencies]._\u003cbr\u003e\n\u003csup\u003e_a_\u003c/sup\u003e _Architecture-specific limitations._\u003cbr\u003e\n\u003csup\u003e_h_\u003c/sup\u003e _Can leverage hwmon driver._\u003cbr\u003e\n\u003csup\u003e_p_\u003c/sup\u003e _Only partially supported._\u003cbr\u003e\n\u003csup\u003e_x_\u003c/sup\u003e _Only supported on Linux._\u003cbr\u003e\n\n\n## Installation\n[Installation]: #installation\n\nThe following sections cover the various methods to set up liquidctl.\n\n### Linux distributions\n[Linux distributions]: #linux-distributions\n\nA considerable number of Linux distributions already package liquidctl,\ngenerally at fairly recent versions.\n\n```bash\n# Alpine\nsudo apk add liquidctl\n\n# Arch/Artix/[Manjaro]/Parabola\nsudo pacman -S liquidctl\n\n# Fedora\nsudo dnf install liquidctl\n\n# Manjaro\nsudo pamac install liquidctl\n\n# Nix\nnix-env -iA nixos.liquidctl\n```\n\nliquidctl is also available in some non-official/community-based repositories,\nas well as, at older versions, for more distributions.  [Repology] shows more\ninformation about the packaging status in various distributions.\n\n[Repology]: https://repology.org/project/liquidctl/versions\n\n### macOS Homebrew\n[macOS Homebrew]: #macos-homebrew\n\nFor macOS, liquidctl is available on Homebrew, generally at the most recent\nversion.  It is also easy to install the latest development snapshot from the\nofficial source code repository.\n\n```bash\n# latest stable version\nbrew install liquidctl\n\n# or latest development snapshot from the official source code repository\nbrew install liquidctl --HEAD\n```\n\n### FreeBSD and DragonFly BSD Ports\n[FreeBSD and DragonFly BSD Ports]: #freebsd-and-dragonfly-bsd-ports\n\nOn FreeBSD and DragonFly BSD, liquidctl is maintained in the Ports Collections,\nand is available as a pre-built binary package.\n\n```\npkg install py39-liquidctl\n```\n\n### Manual installation\n[Manual installation]: #manual-installation\n\n_Warning: on systems that still default to Python 2, replace `python`\nwith `python3`._\n\n_Changed in 1.9.0: liquidctl now uses a PEP 517 build system._\u003cbr\u003e\n\nliquidctl can be manually installed from the Python Package Index (PyPI), or\ndirectly from the source code repository.\n\nIn order to manually install it, certain system-level dependencies must be\nsatisfied first.  In some cases it may also be preferable to use the Python\nlibraries already provided by the operating system.\n\n#### Linux dependencies\n[Linux dependencies]: #linux-dependencies\n\nOn Linux, the following dependencies are required at runtime (common package\nnames are listed in parenthesis):\n\n- Python 3.9 or later _(python3, python)_\n- pkg\\_resources Python package _(python3-setuptools, python3-pkg-resources, python-setuptools)_\n- PyUSB _(python3-pyusb, python3-usb, python-pyusb)_\n- colorlog _(python3-colorlog, python-colorlog)_\n- crcmod 1.7 _(python3-crcmod, python-crcmod)_\n- cython-hidapi _(python3-hidapi, python3-hid, python-hidapi)_\n- docopt _(python3-docopt, python-docopt)_\n- pillow _(python-pillow, python3-pil)_\n- smbus Python package _(python3-i2c-tools, python3-smbus, i2c-tools)_\n- LibUSB 1.0 _(libusb-1.0, libusb-1.0-0, libusbx)_\n\nAdditionally, to build, install and test liquidctl, the following are also\nneeded:\n\n- setuptools\\_scm Python package _(python3-setuptools-scm, python3-setuptools_scm, python-setuptools-scm)_\n- pip (optional) _(python3-pip, python-pip)_\n- pytest (optional) _(python3-pytest, pytest, python-pytest)_\n\n#### macOS system-level dependencies\n[macOS system dependencies]: #macos-system-level-dependencies\n\nOn macOS, Python (3.9 or later) and LibUSB 1.0 must be installed beforehand.\n\n```\nbrew install python libusb\n```\n\n#### Windows system-level dependencies\n[Windows system dependencies]: #windows-system-level-dependencies\n\nOn Windows, Python (3.9 or later) must be installed beforehand, which can be\ndone from the [official website][python.org].  It is recommended to select the\noption to add `python` and other tools to the `PATH`.\n\nA LibUSB 1.0 DLL is also necessary, but it will generally be provided\nautomatically by liquidctl. In case that's not possible, and a USB \"No backend\navailable\" error is shown, the suitable DLL from an official [LibUSB release]\nshould be copied into `C:\\Windows\\System32\\`. The DLL must match your Python\ninstallation: in most cases it will be latest VS build for x64 in the archive\nfrom LibUSB (e.g. `VS2015-x64/dll/libusb-1.0.dll`).\n\nAdditionally, products that are not Human Interface Devices (HIDs), or that do\nnot use the Microsoft HID Driver, require a libusb-compatible driver (these are\nlisted in [Supported devices] with a `Z` note).  In most cases of these cases\nthe Microsoft WinUSB driver is recommended, and it can easily be set up for a\ndevice using [Zadig]: open Zadig, select your device from the dropdown list\nand, finally, click \"Replace Driver\".\n\n_Warning: replacing the driver for a device where that is not necessary will\nlikely cause it to become inaccessible from liquidctl._\u003cbr\u003e\n\n_Changed in 1.9.0: a LibUSB 1.0 DLL is now provided by libusb-package, provided\nthere are suitable wheels available at the time of installation._\u003cbr\u003e\n\n[python.org]: https://www.python.org/\n[LibUSB release]: https://github.com/libusb/libusb/releases\n[Zadig]: https://zadig.akeo.ie/\n\n#### Creating a virtual environment\n[Creating a virtual environment]: #creating-a-virtual-environment\n\nSetting up a virtual environment is an optional step.  Even so, installing\nPython packages directly in the global environment is not generally advised.\n\nInstead, it is usual to first set up a [virtual environment]:\n\n```bash\n# create virtual enviroment at \u003cpath\u003e\npython -m venv \u003cpath\u003e\n```\n\nOnce set up, the virtual environment can be activated on the current shell\n(more information in the [official documentation][virtual environment]).\nAlternatively, the virtual environment can also be used directly, without\nactivation, by prefixing all `python` invocations with the environment's bin\ndirectory.\n\n```bash\n# Linux/macOS/BSDs (POSIX)\n\u003cpath\u003e/bin/python [arguments]\n\n# Windows\n\u003cpath\u003e\\Scripts\\python [arguments]\n```\n\n[virtual environment]: https://docs.python.org/3/library/venv.html\n\n#### Installing from PyPI or GitHub\n[Installing from PyPI or GitHub]: #installing-from-pypi-or-github\n\n[pip] can be used to install liquidctl from the Python Package Index (PyPI).\nThis will also install the necessary Python libraries.\n\n\n```bash\n# the latest stable version\npython -m pip install liquidctl\n\n# a specific version (e.g. 1.15.0)\npython -m pip install liquidctl==1.15.0\n```\n\nIf [git] is installed, pip can also install the latest snapshot of the official\nliquidctl source code repository on GitHub.\n\n```bash\n# the latest snapshot of the official source code repository (requires git)\npython -m pip install git+https://github.com/liquidctl/liquidctl#egg=liquidctl\n```\n\n[git]: https://git-scm.com/\n[pip]: https://pip.pypa.io/en/stable/\n\nTo set up rootless access to devices on Linux and BSDs, install documentation and completions, or to learn more about auxiliary scripts, continue reading for the next few sections.\n\n#### Allowing access to the devices\n[Allowing access to the devices]: #allowing-access-to-the-devices\n\nAccess permissions are not a concern on platforms like macOS or Windows, where\nunprivileged access is already allowed by default.  However, devices are not\ngenerally accessible by unprivileged users on Linux, FreeBSD or DragonFly BSD.\n\nFor Linux, we provide a set of udev rules in [`71-liquidctl.rules`] that can be\nused to allow unprivileged read and write access to all devices supported by\nliquidctl.  These rules are generally already included in downstream Linux\npackages of liquidctl.\n\nAlternatively, `sudo`, `doas` and similar mechanisms can be used to invoke\n`liquidctl` as the super user, on both Linux and BSDs.\n\n[`71-liquidctl.rules`]: extra/linux/71-liquidctl.rules\n\n#### Additional files\n[Additional files]: #additional-files\n\nOther files and tools are included in the source tree, which may be of use in\ncertain scenarios:\n\n- [liquidctl(8) man page][liquidctl.8];\n- [completions for the liquidctl CLI in Bash][liquidctl.bash];\n- [host-based automatic fan/pump speed control][yoda.py];\n- [send liquidctl data to HWiNFO][LQiNFO.py];\n- [and more...][extra/].\n\n[LQiNFO.py]: extra/windows/LQiNFO.py\n[extra/]: extra/\n[liquidctl.8]: liquidctl.8\n[liquidctl.bash]: extra/completions/liquidctl.bash\n[yoda.py]: extra/yoda.py\n\n### Working locally\n[Working locally]: #working-locally\n\n_Changed in 1.9.0: liquidctl now uses a PEP 517 build system._\u003cbr\u003e\n\nWhen working on the project itself, it is sometimes useful to set up a local\ndevelopment environment, making it possible to directly run the CLI and the\ntest suite, without first building and installing a local package.\n\nFor this, start by installing [git] and any system-level dependencies mentioned\nin [Manual installation].  Then, clone the repository and change into the\ncreated directory:\n\n```\ngit clone https://github.com/liquidctl/liquidctl\ncd liquidctl\n```\n\nOptionally, set up a [virtual environment][Creating a virtual environment].\n\nFinally, if the necessary Python build, test and runtime libraries are not\nalready installed on the environment (virtual or global), manually install\nthem:\n\n```\npython -m pip install --upgrade pip setuptools setuptools_scm wheel\npython -m pip install --upgrade colorlog crcmod==1.7 docopt hidapi pillow pytest pyusb\npython -m pip install --upgrade \"libusb-package; sys_platform == 'win32' or sys_platform == 'cygwin'\"\npython -m pip install --upgrade \"smbus; sys_platform == 'linux'\"\npython -m pip install --upgrade \"winusbcdc\u003e=1.5; sys_platform == 'win32'\"\n```\n\nAt this point, the environment is set up.  To run the test suite, execute:\n\n```\npython -m pytest\n```\n\nTo run the CLI directly, without building and installing a local package,\nexecute:\n\n```\npython -m liquidctl [arguments]\n```\n\nAnd to install `liquidctl` into the environment:\n\n```\npython -m pip install .\n```\n\n## Introducing the command-line interface\n[The command-line interface]: #introducing-the-command-line-interface\n\nThe complete list of commands and options can be found in `liquidctl --help` and in the man page, but the following topics cover the most common operations.\n\nBrackets `[ ]`, parenthesis `( )`, less than/greater than `\u003c \u003e` and ellipsis `...` are used to describe, respectively, optional, required, positional and repeating elements.  Example commands are prefixed with a number sign `#`, which also serves to indicate that on Linux root permissions (or suitable udev rules) may be required.\n\nThe `--verbose` option will print some extra information, like automatically made adjustments to user-provided settings.  And if there is a problem, the `--debug` flag will make liquidctl output more information to help identify its cause; be sure to include this when opening a new issue.\n\n_Note: in addition to `--debug`, setting the `PYUSB_DEBUG=debug` and `LIBUSB_DEBUG=4` environment variables can be helpful with problems suspected to relate to PyUSB or LibUSB._\n\n### Listing and selecting devices\n[Listing and selecting devices]: #listing-and-selecting-devices\n\nA good place to start is to ask liquidctl to list all recognized devices.\n\n```\n$ liquidctl list\nDevice #0: NZXT Smart Device (V1)\nDevice #1: NZXT Kraken X (X42, X52, X62 or X72)\n```\n\nIn case more than one supported device is found, one them can be selected with `--match \u003csubstring\u003e`, where `\u003csubstring\u003e` matches part of the desired device's description using a case insensitive comparison.\n\n```\n$ liquidctl --match kraken list\nResult #0: NZXT Kraken X (X42, X52, X62 or X72)\n```\n\nMore device properties can be show by passing `--verbose` to `liquidctl list`.  Any of those can also be used to select a particular product.\n\n```\n$ liquidctl --bus hid --address /dev/hidraw4 list\nResult #0: NZXT Smart Device (V1)\n\n$ liquidctl --serial 1234567890 list\nResult #0: NZXT Kraken X (X42, X52, X62 or X72)\n```\n\nAmbiguities for any given filter can be solved with `--pick \u003cnumber\u003e`.\n\n### Initializing and interacting with devices\n[Initializing and interacting with devices]: #initializing-and-interacting-with-devices\n\nDevices will usually need to be initialized before they can be used, though each device has its own requirements and limitations.  This and other information specific to a particular device will appear on the documentation linked from the [Supported devices] section.\n\nDevices can be initialized individually or all at once.\n\n```\n# liquidctl [options] initialize [all]\n```\n\nMost devices provide some status information, like fan speeds and liquid temperatures.  This can be queried for all devices or using the filtering methods mentioned before.\n\n```\n# liquidctl [options] status\n```\n\nFan and pump speeds can be set to fixed values or, if the device supports them, custom profiles.  The specific documentation for each device will list the available modes, as well as which sensor is used for custom profiles.  In general, liquid coolers only support custom profiles that are based on the internal liquid temperature probe.\n\n```\n# liquidctl [options] set \u003cchannel\u003e speed (\u003ctemperature\u003e \u003cpercentage\u003e) ...\n# liquidctl [options] set \u003cchannel\u003e speed \u003cpercentage\u003e\n```\n\nLighting is controlled in a similar fashion.  The specific documentation for each device will list the available channels, modes and additional options.\n\n```\n# liquidctl [options] set \u003cchannel\u003e color \u003cmode\u003e [\u003ccolor\u003e] ...\n```\n\n### Supported color specification formats\n[Supported color specification formats]: #supported-color-specification-formats\n\nWhen configuring lighting effects, colors can be specified in different representations and formats:\n\n - as an implicit hexadecimal RGB triple, either with or without the `0x` prefix: e.g. `ff7f3f`\n - as an explicit RGB triple: e.g. `rgb(255, 127, 63)`\n - as a HSV (hue‑saturation‑value) triple: e.g. `hsv(20, 75, 100)`\n    * hue ∊ [0, 360] (degrees); saturation, value ∊ [0, 100] (percent)\n    * note: this is sometimes called HSB (hue‑saturation‑brightness)\n  - as a HSL (hue‑saturation‑lightness) triple: e.g. `hsl(20, 100, 62)`\n    * hue ∊ [0, 360] (degrees); saturation, lightness ∊ [0, 100] (percent)\n\nColor arguments containing spaces, parenthesis or commas need to be quoted, as these characters can have special meaning on the command-line; the easiest way to do this on all supported platforms is with double quotes.\n\n```\n# liquidctl --match kraken set ring color fading \"hsv(0,80,100)\" \"hsv(180,80,100)\"\n```\n\nOn Linux it is also possible to use single-quotes and `\\(`, `\\)`, `\\ ` escape sequences.\n\n\n## Using liquidctl in other programs and scripts\n[Using liquidctl in other programs and scripts]: #using-liquidctl-in-other-programs-and-scripts\n\nThe liquidctl driver APIs can be used to build Python programs that monitor or\ncontrol the devices, and offer features beyond the ones provided by the CLI.\n\nThe APIs are documented, and this documentation can be accessed through\n`pydoc`, or directly read from the source files.\n\n```python\nfrom liquidctl import find_liquidctl_devices\n\n# Find all connected and supported devices.\ndevices = find_liquidctl_devices()\n\nfor dev in devices:\n\n    # Connect to the device. In this example we use a context manager, but\n    # the connection can also be manually managed. The context manager\n    # automatically calls `disconnect`; when managing the connection\n    # manually, `disconnect` must eventually be called, even if an\n    # exception is raised.\n    with dev.connect():\n        print(f'{dev.description} at {dev.bus}:{dev.address}:')\n\n        # Devices should be initialized after every boot. In this example\n        # we assume that this has not been done before.\n        print('- initialize')\n        init_status = dev.initialize()\n\n        # Print all data returned by `initialize`.\n        if init_status:\n            for key, value, unit in init_status:\n                print(f'- {key}: {value} {unit}')\n\n        # Get regular status information from the device.\n        status = dev.get_status()\n\n        # Print all data returned by `get_status`.\n        print('- get status')\n        for key, value, unit in status:\n            print(f'- {key}: {value} {unit}')\n\n        # For a particular device, set the pump LEDs to red.\n        if 'Kraken' in dev.description:\n            print('- set pump to radical red')\n            radical_red = [0xff, 0x35, 0x5e]\n            dev.set_color(channel='pump', mode='fixed', colors=[radical_red])\n```\n\nMore examples can be found in the scripts in [`extra/`](extra/).\n\nIn addition to the APIs, the `liquidctl` CLI is friendly to scripting: errors\ncause it to exit with non-zero codes and only functional output goes to\n`stdout`, everything else (error messages, warnings and other auxiliary\ninformation) going to `stderr`.\n\nThe `list`, `initialize` and `status` commands also support a `--json` flag to\nswitch the output to JSON, a more convenient format for machines and scripts.\nIn `--json` mode, setting `LANG=C` on the environment causes non-ASCII\ncharacters to be escaped.\n\n```\n# liquidctl --match kraken list --json | jq\n[\n  {\n    \"description\": \"NZXT Kraken X (X42, X52, X62 or X72)\",\n    \"vendor_id\": 7793,\n    \"product_id\": 5902,\n    \"release_number\": 512,\n    \"serial_number\": \"49874481333\",\n    \"bus\": \"hid\",\n    \"address\": \"/dev/hidraw3\",\n    \"port\": null,\n    \"driver\": \"Kraken2\",\n  },\n  ...\n]\n\n# liquidctl --match kraken status --json | jq\n[\n  {\n    \"bus\": \"hid\",\n    \"address\": \"/dev/hidraw3\",\n    \"description\": \"NZXT Kraken X (X42, X52, X62 or X72)\",\n    \"status\": [\n      {\n        \"key\": \"Liquid temperature\",\n        \"value\": 30.1,\n        \"unit\": \"°C\"\n      },\n      {\n        \"key\": \"Fan speed\",\n        \"value\": 1014,\n        \"unit\": \"rpm\"\n      },\n      ...\n    ]\n  },\n  ...\n]\n```\n\nNote that the examples above pipe the output to [jq], as the original output\nhas no line breaks or indentation.  An alternative to jq is to use [`python -m\njson.tool`][json.tool], which is already included in standard Python\ndistributions.\n\nFinally, the stability of both the APIs and the CLI commands is documented in\nour [stability guarantee].  In particular, the specific keys, values and units\nreturned by the commands above, as well as their API equivalents, _are subject\nto changes._  Consumers should verify that the returned data matches their\nexpectations, and react accordingly.\n\n[jq]: https://stedolan.github.io/jq/\n[json.tool]: https://docs.python.org/3/library/json.html#module-json.tool\n[stability guarantee]: docs/developer/process.md#stability-and-backward-compatibility\n\n\n## Automation and running at boot\n[Automation and running at boot]: #automation-and-running-at-boot\n\nIn most cases you will want to automatically apply your settings when the system boots.  Generally a simple script or a basic service is enough, and some specifics about this are given in the following sections.\n\nFor even more flexibility, you can also write a Python program that calls the driver APIs directly.\n\n### Set up Linux using systemd\n[Set up Linux using systemd]: #set-up-linux-using-systemd\n\nOn systems running Linux and systemd a service unit can be used to configure liquidctl devices.  A simple example is provided bellow, which you can edit to match your preferences.  Save it to `/etc/systemd/system/liquidcfg.service`.\n\n```\n[Unit]\nDescription=AIO startup service\n\n[Service]\nType=oneshot\nExecStart=liquidctl initialize all\nExecStart=liquidctl --match kraken set pump speed 90\nExecStart=liquidctl --match kraken set fan speed  20 30  30 50  34 80  40 90  50 100\nExecStart=liquidctl --match \"smart device\" set sync speed 55\nExecStart=liquidctl --match kraken set sync color fading 350017 ff2608\n\n[Install]\nWantedBy=default.target\n```\n\nAfter reloading the configuration, the new unit can be started manually or set to automatically run during boot using standard systemd tools.\n\n```\n# systemctl daemon-reload\n# systemctl start liquidcfg\n# systemctl enable liquidcfg\n```\n\nA slightly more complex example can be seen at [jonasmalacofilho/dotfiles](https://github.com/jonasmalacofilho/dotfiles/tree/master/liquidctl), which includes dynamic adjustments of the lighting depending on the time of day.\n\nIf necessary, it is also possible to have the service unit explicitly wait for the device to be available: see [making systemd units wait for devices](docs/linux/making-systemd-units-wait-for-devices.md).\n\n### Set up Windows using Task Scheduler\n[Set up Windows using Task Scheduler]: #set-up-windows-using-task-scheduler\n\nThe configuration of devices can be automated by writing a batch file and setting up a new task for (every) login using Windows Task Scheduler.  The batch file can be really simple and only needs to contain the invocations of liquidctl that would otherwise be done manually.\n\n```batchfile\nliquidctl initialize all\nliquidctl --match kraken set pump speed 90\nliquidctl --match kraken set fan speed  20 30  30 50  34 80  40 90  50 100\nliquidctl --match \"smart device\" set sync speed 55\nliquidctl --match kraken set sync color fading 350017 ff2608\n```\n\nMake sure that liquidctl is available in the context where the batch file will run: in short, `liquidctl --version` should work within a _normal_ Command Prompt window.\n\nYou may need to install Python with the option to set the PATH variable enabled, or manually add the necessary folders to the PATH.\n\nA slightly more complex example can be seen in [issue #14](https://github.com/liquidctl/liquidctl/issues/14#issuecomment-456519098) (\"Can I autostart liquidctl on Windows?\"), that uses the LEDs to convey progress or eventual errors.  Chris' guide on [Replacing NZXT’s CAM software on Windows for Kraken](https://codecalamity.com/replacing-nzxts-cam-software-on-windows-for-kraken/) is also a good read.\n\nAs an alternative to using Task Scheduler, the batch file can simply be placed in the startup folder; you can run `shell:startup` to [find out where that is](https://support.microsoft.com/en-us/help/4026268/windows-10-change-startup-apps).\n\n### Set up macOS using various methods\n[Set up macOS using various methods]: #set-up-macos-using-various-methods\n\nYou can follow either or both of the guides below to automatically configure your devices during login or after waking from sleep. The guides are hosted on tonymacx86:\n\n- [This guide](https://www.tonymacx86.com/threads/gigabyte-z490-vision-d-thunderbolt-3-i5-10400-amd-rx-580.298642/post-2138475) is for controllers that lose their state during sleep (e.g. Gigabyte RGB Fusion 2.0) and need to be reinitialized after wake-from-sleep. This guide uses _Automator_ to initialize supported devices at login, and _sleepwatcher_ to initialize supported devices after wake-from-sleep.\n- [This guide](https://www.tonymacx86.com/threads/asus-z690-proart-creator-wifi-thunderbolt-4-i7-12700k-amd-rx-6800-xt.318311/post-2306524) is for controllers that do not lose their state during sleep (e.g. ASUS Aura LED). This driver uses the _launchctl_ method to initialize supported devices at login.\n\n\n## Troubleshooting\n[Troubleshooting]: #troubleshooting\n\n### Device not listed (Windows)\n\nThis is likely caused by having replaced the standard driver of a USB HID.  If the device in question is not marked in [Supported devices] as requiring a special driver, try uninstalling the custom driver.\n\n### Device not listed (Linux)\n\nFirst, check that the liquidctl version (`liquidctl --version`) you're running supports the device in question. An overview of supported devices and minimum recommended versions for them are available in [Supported devices]. Support for new devices can happen to be available only in Git for some time.\n\nIf the device is supported, this is usually caused by having an unexpected kernel driver bound to a USB HID. In most cases this is the result of having used a program that accessed the device (directly or indirectly) via libusb-1.0, but failed to reattach the original driver before terminating.\n\nThis can be temporarily solved by manually rebinding the device to the kernel `usbhid` driver. Replace `\u003cbus\u003e` and `\u003cport\u003e` with the correct values from `lsusb -vt` (also assumes there is only HID interface, adjust if necessary):\n\n```\necho '\u003cbus\u003e-\u003cport\u003e:1.0' | sudo tee /sys/bus/usb/drivers/usbhid/bind\n```\n\nA more permanent solution is to politely ask the authors of the program that is responsible for leaving the kernel driver detached to use `libusb_attach_kernel_driver` or `libusb_set_auto_detach_kernel_driver`.\n\n### Access denied or open failed (Linux)\n\nThese errors are usually caused by a lack of permission to access the device.  On Linux distros that normally requires root privileges.\n\nAlternatively to running liquidctl as root (or with `sudo`), you can install the udev rules provided in [`extra/linux/71-liquidctl.rules`](extra/linux/71-liquidctl.rules) to allow unprivileged access to the devices supported by liquidctl.\n\n### Other problems\n\nIf your problem is not listed here, try searching the [issues](https://github.com/liquidctl/liquidctl/issues).  If no issue matches your problem, you still need help, or you have found a bug, please open one.\n\nWhen commenting on an issue, please describe the problem in as much detail as possible.  List your operating system and the specific devices you own.\n\nAlso include the arguments and output of all relevant/failing liquidctl commands, using the `--debug` option to enable additional debug information.\n\n\n## Additional documentation\n[Additional documentation]: #additional-documentation\n\nBe sure to browse [`docs/`](docs/) for additional documentation, and [`extra/`](extra/) for some example scripts and other possibly useful things.\n\nYou are also encouraged to contribute to the documentation and to these examples, including adding new files that cover your specific use cases or solutions.\n\n\n## License\n[License]: #license\n\nCopyright 2018–2023 Jonas Malaco, Marshall Asch, CaseySJ, Tom Frey, Andrew\nRobertson, ParkerMc, Aleksa Savic, Shady Nawara and contributors\n\nSome modules also incorporate or use as reference work by leaty, Ksenija\nStanojevic, Alexander Tong, Jens Neumaier, Kristóf Jakab, Sean Nelson, Chris\nGriffith, notaz, realies and Thomas Pircher. This is mentioned in the module\ndocstring, along with appropriate additional copyright notices.\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU General Public License as published by the Free Software\nFoundation, either version 3 of the License, or (at your option) any later\nversion.\n\nThis program is distributed in the hope that it will be useful, but without any\nwarranty; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE.  See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with\nthis program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n\n## Related projects\n[Related projects]: #related-projects\n\n### [liquidctl/liquidtux](https://github.com/liquidctl/liquidtux)\n\nSibling project of Linux kernel _hwmon_ drivers for devices supported by\nliquidctl.\n\n### [coolercontrol/coolercontrol](https://gitlab.com/coolercontrol/coolercontrol)\n\nGraphical interface to monitor and control cooling devices supported by\nliquidctl.\n\n### [CalcProgrammer1/OpenRGB](https://gitlab.com/CalcProgrammer1/OpenRGB)\n\nGraphical interface to control many different types of RGB devices.\n","funding_links":[],"categories":["Python","HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliquidctl%2Fliquidctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliquidctl%2Fliquidctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliquidctl%2Fliquidctl/lists"}