Problems with fans and Ubuntu MATE 24.04 LTS on a Mini PC

I have an issue with the refrigeration fan of my Mini PC when I use Ubuntu MATE

The PC works as usual without any type of issue but I'm noticing that the fan doesn't activate even when the temperature is near 80ºC.

I'd try activating thermald by setting up an XML in order to try to "force" the fan to wake up when the temperature hits an specific value and turn off when the temperature reaches other value. It looks like it also won't work.

Here it is what I can see when I run sensors

antonio@antonio-GN34:~$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 0:        +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:        +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 2:        +42.0°C  (high = +105.0°C, crit = +105.0°C)
Core 3:        +42.0°C  (high = +105.0°C, crit = +105.0°C)

iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +42.0°C  

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +44.0°C  

thermal-conf.xml for thermald is set-up as the following

antonio@antonio-GN34:~$ cat /etc/thermald/thermal-conf.xml
<thermal_conf version="1">
    <thermal_zone>
        <type>coretemp</type>
        <trip_point>
            <type>active</type>
            <temperature>50000</temperature>
            <hysteresis>5000</hysteresis>
            <control type="fan" path="/sys/class/thermal/cooling_device0/cur_state" />
        </trip_point>
    </thermal_zone>
</thermal_conf>

Fans should start when temperature reaches 50ºC and stop when it cools down to 45ºC but, sadly, that doesn't happen.

The content of /sys/class/thermal/cooling_device0 is

antonio@antonio-GN34:/sys/class/thermal/cooling_device0$ ls -la
total 0
drwxr-xr-x  4 root root    0 jul  1 20:40 .
drwxr-xr-x 13 root root    0 jul  1 20:40 ..
-rw-r--r--  1 root root 4096 jul  1 20:40 cur_state
lrwxrwxrwx  1 root root    0 jul  1 20:52 device -> ../../../platform/PNP0C0B:00
-r--r--r--  1 root root 4096 jul  1 20:40 max_state
drwxr-xr-x  2 root root    0 jul  1 20:52 power
drwxr-xr-x  2 root root    0 jul  1 20:52 stats
lrwxrwxrwx  1 root root    0 jul  1 20:40 subsystem -> ../../../../class/thermal
-r--r--r--  1 root root 4096 jul  1 20:40 type
-rw-r--r--  1 root root 4096 jul  1 20:40 uevent

Am I missing something or doing something wrong? I don't want the miniPC to have problems with temperature now that summer is here...

Thank you all so much in advance!

Your sensor output makes clear that 'thermald' can't see or control your cpu fan.
(As you can see there is no 'fan' variable under 'coretemp-isa-0000')

You need to install the proper module(driver) for it first.
Best to install lm-sensors (if you did not install it already) and let it detect and install de modules for you (automatically)

sudo apt install lm-sensors

and then run sensors-detect to detect the chips that control your fans and sensors

sudo sensors-detect

It will probe your hardware and asks a lot of questions. Just answer 'yes' on every question and it will install the missing temperature module/driver.
You can now either load this module or reboot (which also loads the module).

To check if all is installed well, you can check the sensor/fancontrollers here:

ls /sys/class/hwmon/

this is what they do (or how they identify themselves)

cat /sys/class/hwmon/hwmon*/name

and here is a list of controlled fans per hwmon (not every hwmon controls fans)

find /sys/class/hwmon/hwmon*/fan*_min
3 Likes

Hello @tkn

First of all, thanks for your complete answer! I'd run all the steps and here it is the output

sensors-detect output
antonio@antonio-GN34:~$ sudo sensors-detect
# sensors-detect version 3.6.0
# System: BESSTAR TECH LIMITED GN34 [Default string]
# Board: BESSTAR Tech AB1A
# Kernel: 6.8.0-36-generic x86_64
# Processor: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz (6/92/9)

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): YES
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
AMD Family 15h thermal sensors...                           No
AMD Family 16h thermal sensors...                           No
AMD Family 17h thermal sensors...                           No
AMD Family 15h power sensors...                             No
AMD Family 16h power sensors...                             No
Hygon Family 18h thermal sensors...                         No
Intel digital thermal sensor...                             Success!
    (driver `coretemp')
Intel AMB FB-DIMM thermal sensor...                         No
Intel 5500/5520/X58 thermal sensor...                       No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): YES
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No

Some systems (mainly servers) implement IPMI, a set of common interfaces
through which system health data may be retrieved, amongst other things.
We first try to get the information from SMBIOS. If we don't find it
there, we have to read from arbitrary I/O ports to probe for such
interfaces. This is normally safe. Do you want to scan for IPMI
interfaces? (YES/no): YES
Probing for `IPMI BMC KCS' at 0xca0...                      No
Probing for `IPMI BMC SMIC' at 0xca8...                     No

Some hardware monitoring chips are accessible through the ISA I/O ports.
We have to write to arbitrary I/O ports to probe them. This is usually
safe though. Yes, you do have ISA I/O ports even if you do not have any
ISA slots! Do you want to scan the ISA I/O ports? (YES/no): YES
Probing for `National Semiconductor LM78' at 0x290...       No
Probing for `National Semiconductor LM79' at 0x290...       No
Probing for `Winbond W83781D' at 0x290...                   No
Probing for `Winbond W83782D' at 0x290...                   No

Lastly, we can probe the I2C/SMBus adapters for connected hardware
monitoring devices. This is the most risky part, and while it works
reasonably well on most systems, it has been reported to cause trouble
on some systems.
Do you want to probe the I2C/SMBus adapters now? (YES/no): YES
Using driver `i2c-i801' for device 0000:00:1f.1: Broxton (SOC)

Next adapter: Synopsys DesignWare I2C adapter (i2c-0)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: Synopsys DesignWare I2C adapter (i2c-1)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: Synopsys DesignWare I2C adapter (i2c-2)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: Synopsys DesignWare I2C adapter (i2c-3)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: Synopsys DesignWare I2C adapter (i2c-4)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: Synopsys DesignWare I2C adapter (i2c-5)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: Synopsys DesignWare I2C adapter (i2c-6)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: Synopsys DesignWare I2C adapter (i2c-7)
Do you want to scan it? (YES/no/selectively): YES
Adapter doesn't support all probing functions.
Some addresses won't be probed.

Next adapter: SMBus I801 adapter at f040 (i2c-8)
Do you want to scan it? (YES/no/selectively): YES

Next adapter: i915 gmbus dpb (i2c-9)
Do you want to scan it? (yes/NO/selectively): YES

Next adapter: i915 gmbus dpc (i2c-10)
Do you want to scan it? (yes/NO/selectively): YES

Next adapter: i915 gmbus misc (i2c-11)
Do you want to scan it? (yes/NO/selectively): YES
  
Next adapter: AUX C/DDI C/PHY C (i2c-12)
Do you want to scan it? (yes/NO/selectively): YES


Now follows a summary of the probes I have just done.
Just press ENTER to continue: 

Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
coretemp
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)YES
Successful!

Monitoring programs won't work until the needed modules are
loaded. You may want to run '/etc/init.d/kmod start'
to load them.

Unloading cpuid... OK

Here's also the output from ls, cat and find's commands

antonio@antonio-GN34:~$ ls /sys/class/hwmon/
hwmon0  hwmon1  hwmon2  hwmon3

antonio@antonio-GN34:~$ cat /sys/class/hwmon/hwmon*/name
ADPK
acpitz
coretemp
iwlwifi_1

antonio@antonio-GN34:~$ find /sys/class/hwmon/hwmon*/fan*_min
find: ‘/sys/class/hwmon/hwmon*/fan*_min’: No such file or directory

Am I doing something wrong again? :sweat_smile:

Thank you so much in advance!

Not at all :slight_smile: You have done everything right.
Only the temperature sensors were detected but unfortunately no fans.

It seems that either the fan can not be controlled by software or it's controllerchip is too new for the driverinstaller to be recognized as such.

You may either control the fan from BIOS or add a customized fan control on a fixed voltage.

1 Like

There isn't any option to control the fan from BIOS. It's a very simple one.

How can I add a customized fan control on a fixed voltage?

Thanks

The most simple solution is to connect it directly to you powersupply.

I hope you understand that I have no idea what kind of mini PC you have but if it is fitted with regular standardized connectors (molex) and you have absolutely no space in your computercase, then a cable like below would be perfect.
molex_to_4p-fan
You can not control the fanspeed, it will continuously be on full-speed.

If you have a bit more space in your case, like a free fullsize slot. you might want to use something like this:


It uses a SATA powerconnector which is standard in every computer.
You can adjust the fanspeed manually.

If you want the fanspeed be controlled by temperature you need something like this:


Although the one on this picture is missing the 12V connector, but you can kind of get what I'm aiming at. :wink:

3 Likes

Hi, again @tkn Thank you so much for your answer

Sadly, my miniPC doesn't have size to fit those components

The miniPC looks like this

I guess that my options are running out so I'll try to think for another uses that can fit for this miniPC with this issue since I think that I can't use it on a daily basis as it could reach pretty high temperatures.

Again, thank you so much for all your help.

2 Likes