I am trying to find a way to access and/or control fan speed via Linux on an Intel Q45 Express/ICH10DO chipset. This chipset contains a feature called Intel Quiet System Technology (Intel QST), which is a part of the Intel Management Engine (Intel ME) running on an embedded co-processor. Intel describes QST as follows:
The Intel Management Engine (ME) hosts a firmware subsystem – Intel
Quiet System Technology (QST) – that provides support for the
monitoring of temperature, voltage, current and fan speed sensors that
are provided within the Chipset, the Processor and other devices on
the Motherboard. For each sensor, a Health Status, based upon
established thresholds, will be determined at regular intervals. Intel
QST also provides support for acoustically-optimized fan speed
control. Based upon readings obtained from the temperature sensors,
Intel QST will determine, over time, the optimal speeds at which to
operate the available cooling fans, in order to address existing
thermal conditions with the lowest possible acoustic impact.
The Intel ICH10 datasheet states:
5.24 Intel® Quiet System Technology (Intel® QST)
The ICH10 implements three PWM and 4 TACH signals for Intel Quiet
System Technology (QST).Note: Intel Quiet System Technology
functionality requires a correctly configured system, including an
appropriate (G)MCH with Intel ME, Intel ME Firmware, and system BIOS
support.
It goes on to describe the PWM Outputs, TACH Inputs and Thermal Sensors.
This article claims that a Linux driver for Intel QST was available in December 2012:
Earlier this year there was early support for Intel QST in LM_Sensors
while being announced now is a new Intel QST driver for Linux. The
code for this new Quiet System Technology driver is currently on
GitHub.
The above-mentioned code was not actually in github, but rather on a privately hosted git repository (http://mose.dyndns.org/mei.git) that used the defunct dyndns.org
service.
I have spent some time looking through the Linux kernel source (v4.16.7) but so far, I haven't found any trace of this driver.
- Was Intel QST support ever included in the Linux kernel?
- If so, which driver/kernel module(s) are required for Intel QST support?
Best Answer
This answer documents definitive information on Linux support for Intel QST, which was assembled by tracking down archives of the defunct
lm-sensors
mailing list and directly contacting the authors of some of those messages. The information here is organized in chronological order of the development of Linux QST support.History of Linux QST Support
In February 2010, the Intel QST SDK was made publicly available.
A June 2011 Intel forum post later mentioned that the HECI driver from www.openamt.org was no longer needed to run the SDK.
A February 2012 message on the
lm-sensors
mailing list showed the kind of information available via a modified version of the Intel QST SDK (the "gigaplex version"), and indicated thathwmon
QST support would be welcome, if it could be implemented without relying on the QST SDK:By December 2012, someone had actually developed just such a driver, as evidenced in this message on the LKML:
The module was originally developed for Linux 2.6.39, was named
qst-hwmon
, and provided support for QST v1 by implementing an entire mei driver from scratch. There was further discussion about a second moduleqst2-hwmon
that would implement support for QST v2.A March 2013 note on the hwmon hardware support page indicates that all known attempts to implement Linux support for Intel QST had apparently stalled:
However, a November 2014 bug report by the original developer of
qst-hwmon
indicated that the driver was still being worked on as late as November 29, 2014, and that it had been ported to Linux 3.14.18.Current State of Linux QST Support
The qst-hwmon kernel module
I finally managed to track down the current location of the git repository for the kernel module. To get a copy of the source code:
This kernel module has not yet made it into the main Linux kernel source (as of kernel 4.19).
The code compiles cleanly for Linux 4.16.7, producing 4 modules, which should be copied to the appropriate modules directory:
And update the module dependencies:
Then the modules may be loaded:
And then you can verify that the
/sys/bus/intel-mei/devices/
folder contains some relevant entries. This is not currently working for me, but I believe it is due to having the default Intel MEI driver compiled into the kernel.Further work will be needed to get
lm_sensors
to detect theqst_hwmon
driver. The above mailing list archives indicate that lib-sensors may need to be patched to properly identify theintel-mei
bus provided by these modules.Update: I'm in contact with the developer of the driver, so I hope to get the definitive instructions documented here soon.
Alternative Approach using Intel QST SDK and meifand
Here is a writeup (December 2015) on controlling fans via the "gigaplex version" of the Intel QST SDK (February 2012), and using meifand (not
lm-sensors
) as a daemon process to access the sensor information.