Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

46 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Zenpower

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Make sure that your Linux kernel have support for your CPUs as Zenpower is using kernel function amd_smn_read to read values from SMN. A fallback method (which may or may not work!) will be used when it is detected that kernel function amd_smn_read lacks support for your CPU. For AMD family 17h Model 70h (Ryzen 3000) CPUs you need kernel version 5.3.4 or newer or kernel with this patch: https://patchwork.kernel.org/patch/11043277/

Installation

You can install this module via dkms.

Installation commands for Ubuntu

sudo apt install dkms git build-essential linux-headers-$(uname -r)
cd ~
git clone https://github.com/ocerman/zenpower.git
cd zenpower
sudo make dkms-install

Module activation

Because zenpower is using same PCI device as k10temp, you have to disable k10temp first.

  1. Check if k10temp is active. lsmod | grep k10temp
  2. Unload k10temp sudo modprobe -r k10temp
  3. (optional*) blacklist k10temp: sudo bash -c 'sudo echo -e "\n# replaced with zenpower\nblacklist k10temp" >> /etc/modprobe.d/blacklist.conf'
  4. Activate zenpower sudo modprobe zenpower

*If k10temp is not blacklisted, you may have to manually unload k10temp after each restart.

Sensors monitoring

You can use this app: zenmonitor, or your favourie sensors monitoring software

Update instructions

  1. Unload zenpower sudo modprobe -r zenpower
  2. Goto zenpower directory cd ~/zenpower
  3. Uninstall old version sudo make dkms-uninstall
  4. Update code from git git pull
  5. Install new version sudo make dkms-install
  6. Activate zenpower sudo modprobe zenpower

Help needed

It would be very helpful for me for further development of Zenpower if you can share debug data from zenpower. Read more

Notes

  • Some users reported that a restart is needed after module installation
  • If you are having trouble compiling zenpower under Ubuntu 18.04 (or older) with new upstream kernel, see #23
  • The meaning of raw current values from SVI2 telemetry are not standardised so the current/power readings may not be accurate on all systems (depends on the board model).

About

Zenpower is Linux kernel driver for reading temperature, voltage(SVI2), current(SVI2) and power(SVI2) for AMD Zen family CPUs.

Topics

Resources

Stars

487 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages