{ "info": { "author": "George Whewell", "author_email": "georgerw@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "*Warning! This program is untested (apart from by myself) and it may damage your hardware! Use at your own risk.*\n\n==================\nundervolt |travis|\n==================\n\n.. |travis| image:: https://travis-ci.org/georgewhewell/undervolt.svg\n :target: https://travis-ci.org/georgewhewell/undervolt\n :alt: Build Status\n\n*undervolt* is a program for undervolting Intel CPUs under Linux. It works in\na similar manner to the Windows program *ThrottleStop* (i.e, `MSR 0x150`). You\ncan apply a fixed voltage offset to one of 5 voltage planes, and override your\nsystems temperature target (CPU will throttle when this temperature is reached).\n\nFor more information, read\n`here `_.\n\nInstalling\n----------\n\nFrom PyPi::\n\n $ pip install undervolt\n\nFrom source::\n\n $ git clone https://github.com/georgewhewell/undervolt.git\n\nExamples\n--------\n\nRead current offsets::\n\n $ undervolt --read\n temperature target: -0 (100C)\n core: 0.0 mV\n gpu: -19.53 mV\n cache: -30.27 mV\n uncore: -29.3 mV\n analogio: -70.31 mV\n\nApply -100mV offset to CPU Core and Cache::\n\n $ undervolt --core -100 --cache -100\n\nApply -75mV offset to GPU, -100mV to all other planes::\n\n $ undervolt --gpu -75 --core -100 --cache -100 --uncore -100 --analogio -100\n\nSet temperature target to 97C::\n\n $ undervolt --temp 97\n\nGenerated the command to run to recreate your Throttlestop settings::\n\n $ undervolt --throttlestop ThrottleStop.ini --tsindex 3\n undervolt --core -100.5859375\n $ undervolt --throttlestop ThrottleStop.ini\n undervolt --core -125.0 --gpu -125.0 --cache -125.0\n\nUsage\n-----\n\n.. code-block::\n\n $ undervolt -h\n usage: undervolt.py [-h] [-v] [-f] [-r] [-t TEMP]\n [--temp-bat TEMP_BAT] [--throttlestop THROTTLESTOP]\n [--tsindex TSINDEX] [--core CORE] [--gpu GPU]\n [--cache CACHE] [--uncore UNCORE] [--analogio ANALOGIO]\n\n optional arguments:\n -h, --help show this help message and exit\n -v, --verbose print debug info\n -f, --force allow setting positive offsets\n -r, --read read existing values\n -t TEMP, --temp TEMP set temperature target on AC (and battery power if --temp-bat is not used)\n --temp-bat TEMP_BAT set temperature target on battery power\n --throttlestop THROTTLESTOP\n extract values from ThrottleStop\n --tsindex TSINDEX ThrottleStop profile index\n --core CORE offset (mV)\n --gpu GPU offset (mV)\n --cache CACHE offset (mV)\n --uncore UNCORE offset (mV)\n --analogio ANALOGIO offset (mV)\n\nRunning automatically on boot (systemd)\n---------------------------------------\n\nFirst, create a unit file ``/etc/systemd/system/undervolt.service`` with\nfollowing contents, replacing the arguments with your own offsets::\n\n [Unit]\n Description=undervolt\n\n [Service]\n Type=oneshot\n # If you have installed undervolt globally (via sudo pip install):\n ExecStart=undervolt -v --core -150 --cache -150 --gpu -100\n # If you want to run from source:\n # ExecStart=/path/to/undervolt.py -v --core -150 --cache -150 --gpu -100\n\nCheck that your script works::\n\n $ systemctl start undervolt\n\nThen create a timer ``/etc/systemd/system/undervolt.timer`` to trigger the task periodically: ::\n\n [Unit]\n Description=Apply undervolt settings\n\n [Timer]\n Unit=undervolt.service\n # Wait 2 minutes after boot before first applying\n OnBootSec=2min\n # Run every 30 seconds\n OnUnitActiveSec=30\n\n [Install]\n WantedBy=multi-user.target\n\nNow enable and start the timer::\n\n $ systemctl enable undervolt.timer\n $ systemctl start undervolt.timer\n\nBy including the *OnBootSec* command, settings will not be immediately applied.\nIf you have set overly-aggressive offsets, you will have a short period to\ndisable the timer before it crashes your system::\n\n $ systemctl stop undervolt.timer\n\nNow you can edit your ``undervolt.service`` before re-starting the timer.\n\nRunning automatically on boot (runit)\n-------------------------------------\n\nFirst, create a directory for the service::\n\n $ sudo mkdir -p /etc/sv/undervolt\n\nThen create a file named \"run\" in that directory and edit it to contain these contents::\n\n #!/bin/sh\n undervolt --core -85 --uncore -85 --analogio -85 --cache -85 --gpu -85\n sleep 60\n\nReplace the offsets with your own. Then mark the file as executable::\n\n $ sudo chmod a+x /etc/sv/undervolt/run\n\nThen enable the service::\n\n $ sudo ln -s /etc/sv/undervolt /var/services/\n\nHardware support\n----------------\n\nUndervolting should work on any CPU later than Haswell.\n\n======================== ========= ==========\n System CPU Working? \n======================== ========= ==========\nAcer Aspire 7 (A715-71G) i5-7300HQ Yes\nAcer Nitro 5 i5-7300HQ Yes\nDell Latitude 5480 i5-6300U Yes\nDell Latitude 7390 i7-8650U Yes\nDell Precision 5530 i9-8950HK Yes\nDell Precision M3800 i7-4712HQ Yes\nDell XPS 13 9343 i5-5200U Yes\nDell XPS 15 9530 i7-4712HQ Yes\nDell XPS 15 9550 i7-6700HQ Yes\nDell XPS 15 9560 i7-7700HQ Yes\nDell XPS 15 9570 i9-8950HK Yes\nDell XPS 15 9575 i7-8705G Yes\nHP Spectre X360 i7-8809G Yes\nHP Zbook Studio G5 i7-8750H Yes\nLenovo Thinkpad T470p i7-7700HQ Yes\nLenovo Thinkpad x250 i7-5600U Yes\nLenovo X1 Gen 5 i7-7500U Yes\nLenovo X1 Yoga Gen 2 i7-7600U Yes\nLenovo Yoga 920 i7-8550U Yes\nMacBook Air Mid 2013 i5-4250U Yes\nLenovo Thinkpad T430 i7-3610QM No\nToshiba Chromebook 2 N2840 No\nAsus FX504GE i7-8750h Yes\n======================== ========= ==========\n\nTroubleshooting\n---------------\n\n- **Core or Cache offsets have no effect.**\n It is not possible to set different offsets for CPU Core and Cache. The CPU\n will take the smaller of the two offsets, and apply that to both CPU and\n Cache. A warning message will be displayed if you attempt to set different\n offsets.\n\n- ``OSError: [Errno 1] Operation not permitted``\n First try running with ``sudo``. If the error persists, your system is\n probably booted in Secure Boot mode. In this case, the Linux kernel will\n prevent userspace programs (even as root) from writing to the CPU's\n model-specific registers. Disable UEFI Secure Boot in your system's BIOS\n and the error should go away.\n\n\nGUI\n----------------\nThere is also a small gui written in Java avaiable here: https://github.com/zmalrobot/JavaLinuxUndervolt\n\nIt will allow you to set each value core, gpu, cache, uncore, analogio (temperature target isn't implemented yet),save a profile, load a profile and reset the value.\n\n\nCredit\n------\nThis project is a trivial wrapper around the work of others from the following resources:\n\n- https://github.com/mihic/linux-intel-undervolt\n- http://forum.notebookreview.com/threads/undervolting-e-g-skylake-in-linux.807953\n- https://forums.anandtech.com/threads/what-controls-turbo-core-in-xeons.2496647\n\nMany thanks to all who contributed.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/georgewhewell/undervolt", "keywords": "undervolt", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "undervolt", "package_url": "https://pypi.org/project/undervolt/", "platform": "", "project_url": "https://pypi.org/project/undervolt/", "project_urls": { "Homepage": "http://github.com/georgewhewell/undervolt" }, "release_url": "https://pypi.org/project/undervolt/0.2.10/", "requires_dist": null, "requires_python": "", "summary": "Undervolt Intel CPUs under Linux", "version": "0.2.10" }, "last_serial": 5261816, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "59e4e3557e947406a265dfc45bfe459d", "sha256": "dcf363330eaaaab6befcd006c2b7660757e09f99a5a919003c7a2865328e4533" }, "downloads": -1, "filename": "undervolt-0.1.tar.gz", "has_sig": false, "md5_digest": "59e4e3557e947406a265dfc45bfe459d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3388, "upload_time": "2017-12-30T20:05:50", "url": "https://files.pythonhosted.org/packages/21/18/10adaa2ef318c4982e29209d607b0752d6d43359fe06599c5bfe62b68276/undervolt-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "eeaefb76548e533b5763e9582b0dacda", "sha256": "a48aa5bfbd6f502a236b903f170af761111a1d0dbcb25641555f6a4fb814cac1" }, "downloads": -1, "filename": "undervolt-0.1.1.tar.gz", "has_sig": false, "md5_digest": "eeaefb76548e533b5763e9582b0dacda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3401, "upload_time": "2017-12-30T20:53:11", "url": "https://files.pythonhosted.org/packages/85/22/611112160ccebc865f7d8a3ed0e0279dfcd9c81c90e831c8967eb0aead1c/undervolt-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "c835d6e066c6b7eabb083b39c518caad", "sha256": "4d311129c1277ea36f86cd914b2c74dc988a9cc8611b5980bcfeb0f3645f6608" }, "downloads": -1, "filename": "undervolt-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c835d6e066c6b7eabb083b39c518caad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3428, "upload_time": "2017-12-30T21:27:47", "url": "https://files.pythonhosted.org/packages/f7/5f/cd20d5aeb36d30f802864e39d1e5fc4097a79946adf741871fcfd1a7f0ff/undervolt-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c621aec35bec4efee462eace4ada227f", "sha256": "f7b5f528f24bb7e29b36b26205ccad99d2c97faa41f17edbf508bbbf459b40f2" }, "downloads": -1, "filename": "undervolt-0.1.3.tar.gz", "has_sig": false, "md5_digest": "c621aec35bec4efee462eace4ada227f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4360, "upload_time": "2018-01-04T22:43:45", "url": "https://files.pythonhosted.org/packages/2f/a6/182d584ca6efd7c9f0766bf05cf75f51f66fad4e021d8c078b2ca3b29e32/undervolt-0.1.3.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "2a58f0a5b1b73207abd7fa34ef5f0541", "sha256": "b4a368dd9b6b8755efdc1a74919686fec836680a7e4eae3c97d367c6e54f5d60" }, "downloads": -1, "filename": "undervolt-0.2.10.tar.gz", "has_sig": false, "md5_digest": "2a58f0a5b1b73207abd7fa34ef5f0541", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7746, "upload_time": "2019-05-13T11:45:13", "url": "https://files.pythonhosted.org/packages/d2/31/7473375f080c6d1b515bb0d052bf2c860b7933c1feee2311976329b5963c/undervolt-0.2.10.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "c7d9ed35e83cc90bb7b94225a229bb16", "sha256": "74a6f10519857922015dc4833bbf47b44c285c19adfeb93a0d617ccffac99073" }, "downloads": -1, "filename": "undervolt-0.2.3.tar.gz", "has_sig": false, "md5_digest": "c7d9ed35e83cc90bb7b94225a229bb16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4971, "upload_time": "2018-03-19T15:36:53", "url": "https://files.pythonhosted.org/packages/b6/29/60943a9b0de7134f876cb653f41048dd0ea573c070787c79788cb84fd240/undervolt-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "0224340b2eb6b63f1d134dc6355b6ad4", "sha256": "d352aaaab2d00bca1d045998b7db3a833ba560537cf6ad442040dbd967c2e48b" }, "downloads": -1, "filename": "undervolt-0.2.4.tar.gz", "has_sig": false, "md5_digest": "0224340b2eb6b63f1d134dc6355b6ad4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5189, "upload_time": "2018-04-15T18:18:09", "url": "https://files.pythonhosted.org/packages/72/06/0b589ab9d20fd58596cc20ba8e14c21b42612b608ede43851263b13a927c/undervolt-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "03532e2a4cd38114709448527270cccd", "sha256": "3a0a822c31fa4cec5b50a23b960625c30a4a006007f066a7ac655964a81f48b6" }, "downloads": -1, "filename": "undervolt-0.2.5.tar.gz", "has_sig": false, "md5_digest": "03532e2a4cd38114709448527270cccd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5628, "upload_time": "2018-06-07T15:15:53", "url": "https://files.pythonhosted.org/packages/ce/b8/91d88d8bef9b07cd6555b6bdbf995d921a49504e894a1d739e22cc19f5d5/undervolt-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "df44492da82c2dfea16ae7cc0f97b2f8", "sha256": "b14d201d1cc4b1d4424ee8ece16656dd5d90fd40bf50dd1f225e9cc7c93c39a3" }, "downloads": -1, "filename": "undervolt-0.2.6.tar.gz", "has_sig": false, "md5_digest": "df44492da82c2dfea16ae7cc0f97b2f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6714, "upload_time": "2018-07-24T14:41:29", "url": "https://files.pythonhosted.org/packages/12/da/c5348fe6d4a06ed2124d1af763034666300adc8f4d1ea95db5d8b225f30f/undervolt-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "1e18b73e8b99ffb7ef59239e73b6bef2", "sha256": "8c3fd92ebbc0bc0619480b5ada19ce657f7de1f5ccbe5b5ee216d40fa5b8ef99" }, "downloads": -1, "filename": "undervolt-0.2.7.tar.gz", "has_sig": false, "md5_digest": "1e18b73e8b99ffb7ef59239e73b6bef2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7100, "upload_time": "2018-07-31T15:31:31", "url": "https://files.pythonhosted.org/packages/01/6e/7a65c79c7709f095e9dc7d1f88538f2395ceab61bafeb654bf14b4d2a2a3/undervolt-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "c554c848c52619089eb3feea1d71d5e7", "sha256": "45a6c7b09332b0187080081c720ffa97a2172326b6b7b54cd49a7335c54f73d0" }, "downloads": -1, "filename": "undervolt-0.2.8.tar.gz", "has_sig": false, "md5_digest": "c554c848c52619089eb3feea1d71d5e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6931, "upload_time": "2018-08-15T23:12:39", "url": "https://files.pythonhosted.org/packages/f5/b5/d65dd10fa86b4fe0b457e8a8861916e545efb125d3bf86a4148dfb8913d2/undervolt-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "b7940162633148ba6eabee456fff8887", "sha256": "e554ccf1cc90080f96806dff2e74e2acf8e6937c332e1b4be26568ae322edb22" }, "downloads": -1, "filename": "undervolt-0.2.9.tar.gz", "has_sig": false, "md5_digest": "b7940162633148ba6eabee456fff8887", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7002, "upload_time": "2018-08-31T15:10:59", "url": "https://files.pythonhosted.org/packages/29/c7/52ce96e39c5ab8501b590ed852b6f8c8892a8cc1aa6221687142cf379aef/undervolt-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2a58f0a5b1b73207abd7fa34ef5f0541", "sha256": "b4a368dd9b6b8755efdc1a74919686fec836680a7e4eae3c97d367c6e54f5d60" }, "downloads": -1, "filename": "undervolt-0.2.10.tar.gz", "has_sig": false, "md5_digest": "2a58f0a5b1b73207abd7fa34ef5f0541", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7746, "upload_time": "2019-05-13T11:45:13", "url": "https://files.pythonhosted.org/packages/d2/31/7473375f080c6d1b515bb0d052bf2c860b7933c1feee2311976329b5963c/undervolt-0.2.10.tar.gz" } ] }