Skip to main content

smx10fanctl

Smx10fanctl is a fancontroller for Supermicro boards using IPMI raw commands. I created this project because I wanted a quiet homeserver. Supermicro motherboards expects high RPM fans and expects fans that have at least 600RPM minimal.

I am using a Noctua NH-U12DXi4 CPU cooler which has a minimal RPM of 300. When the CPU is around 20-40 degrees Celcius it will start to ramp up the fans because the Supermicro motherboards have threshholds set. This means that the motherboard wants that the fans are running at least a certain configured RPM speed (you can check those thresholds in your IPMI interface). You can lower the thresholds to 0 for example, but Supermicro motherboards are sometimes reading 0 RPM, I can't find an explaination why Supermicro reads 0RPM, but the internet is full of problems with Noctua fans and Supermicro motherboards.

Because the motherboard reads 0RPM, it will start to ramp up the fans again, this goes over and over again, which is really annoying. Therefor I created this CLI tool to control the fan speeds on the OS based on the CPU temperature. This script will only work on Linux distributions.

Tested on

I have developed this cli tool with the following hardware/software.

  • Supermicro X10SRH-CF
  • Intel Xeon 2680 V4
  • Proxmox 6.3.1

The cli tool may or may not work on x8/x9/x11 motherboards as well. Feel free to report back to me if you have tried this.

Installation

$ pip install smx10fanctl

Systemd

To run the auto command in systemd, so you can enable the service on the background and let it control your fan speed at startup. You can run the following command.

### Copy the systemd unit file
$ wget https://raw.githubusercontent.com/haijeploeg/smx10fanctl/main/smx10fanctl.service

### Check the path to smx10fanctl and adjust it in the service file if needed
$ which smx10fanctl
/usr/local/bin/smx10fanctl
$ vim smx10fanctl

### Move the service file
$ mv smx10fanctl /etc/systemd/system/smx10fanctl.service
$ chown root:root /etc/systemd/system/smx10fanctl.service
$ chmod 644 /etc/systemd/system/smx10fanctl.service

### Enable and start the systemd service
$ systemctl enable --now smx10fanctl

Configuration

To configure the application make sure that one of the following files exists:

/etc/smx10fanctl/smx10fanctl.yml
~/.config/smx10fanctl/smx10fanctl.yml
~/.smx10fanctl/config/smx10fanctl.yml
~/.smx10fanctl.yml
./.smx10fanctl.yml

The application will read those configuration files in that order. So ./.smx10fanctl.yml will overwrite /etc/smx10fanctl/smx10fanctl.yml'. For a full list of options and their description see .smx10fanctl-example.yml in this repository.

Development

This project includes a number of helpers in the Makefile to streamline common development tasks.

Environment Setup

The following demonstrates setting up and working with a development environment:

### create a virtualenv for development
$ make virtualenv
$ source env/bin/activate


### run smx10fanctl cli application
$ smx10fanctl --help

Metadata

Release files for smx10fanctl 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for smx10fanctl 1.0.0
File Size Uploaded Provenance Actions
smx10fanctl-1.0.0.tar.gz 8.5 kB Without provenance Details for smx10fanctl-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for smx10fanctl 1.0.0
File Interpreter ABI Platform Actions
smx10fanctl-1.0.0-py3-none-any.whl Python 3 none any Details for smx10fanctl-1.0.0-py3-none-any.whl

Total release size: 17.7 kB

Release files / smx10fanctl-1.0.0.tar.gz

Download URL smx10fanctl-1.0.0.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c1e6417b1bab875593363e995385bbf38785d43d505a92d4631b2fa03b2adfcf
BLAKE2b-256 checksum
How to use checksums
04428291d4bc5d0a2608e27d17fd68fcab2eec74e2d8c169fb6d5581a83ee635
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

Release files / smx10fanctl-1.0.0-py3-none-any.whl

Download URL smx10fanctl-1.0.0-py3-none-any.whl
Size 9.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a554cbee7d59a742358392554514553a08a0bfa89eb545cf855e5ed4b131fc23
BLAKE2b-256 checksum
How to use checksums
2566a2319d2a41ed378ca4586000dff6f0200cd4b78f943513ed5e25516d50c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

Security for smx10fanctl 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page