Overheating issues

Hello. This is (at least for me) a little strange. I have an old laptop with some temperature issues. Under linux, I don’t get any issue. But under Haiku, if I have heavy cpu usage, the laptop clearly overheat and shutdown automatically.

I set the option at the Process Controller to “low power usage”, but apparently don’t change anything. Also, I had the option “Fans always on” at the BIOS.

There is some reason for this behaviour? Is because somer “power management” lacking in Haiku?

Thanks in advance!

1 Like

attached the output of your syslog, we can’t help much without knowing some info about the laptop.

The output of lsdev and listusb would help also.

1 Like

Hello cb88. Yes, you are right. I recollected all the info in this ticket:
https://dev.haiku-os.org/ticket/14954

Thanks!

1 Like

Theoretically all hardware should have hardware safeguards to prevent overheating. Older systems might simply “shut down” and a lot of newer systems have forced CPU throttling.

I suspect we are doing something to aggravate an existing problem. Since we don’t have GPU acceleration (and do everything CPU-bound), we’re harder on the CPU than a lot of other operating systems.

Just to eliminate one possible cause, have you cleaned your CPU fan lately with a compressed air can?

2 Likes

Hello kallisti5. Thank you for your suggestion. I will try it. I’m pretty sure that the cooling system is not working as it should.

My question was more related about what could causes the (probably) 10 or 15 celsius extra in Haiku. Your suspect about lack of GPU acceleration makes senses. Also, in the listdev output I found something related to Thermal System:

|2|device Signal processing controller [11|80|0]|
|---|---|
|3|  vendor 8086: Intel Corporation|
|4|  device 2932: 82801I (ICH9 Family) Thermal Subsystem|

This device is only to monitoring the CPU temperature, or also had some functionality related to reduce CPU speed or something like that?

Normally the ACPI system handles this on its own. However, I wonder if the “fan always on” mode in the BIOS just disables that, and lets the fan always run, but also always at the minimal speed, instead of spinning faster when there is too much heat? Did you try without that option?

2 Likes

No, usually this option is intended for liquid-cooled systems, which need the power supplied to the “fan plug” to always be at maximum, as it will be running the liquid-cooled pump. So that should not be the case.

It’s a laptop…not sure it has anything to do with liquid cooling unless they just forgot it in there. I had one laptop that had such options but it was mainly as it had a socketed CPU that could run at higher TDPs… and you’d prefer it to run untill thermal thottling against the cooling solution instead of self limiting at a lower TDP to keep fan noise low.

Hello and thanks for all responses! Now, I’m trying disabling the “fan always on” option from the BIOS

I will update this thread (and the ticket) with the results. :slight_smile:

2 Likes

Probably the ideal thing to do is take the back off the laptop and repaste the CPU with a pea sized drop of thermal paste… some Artic MX-4 is cheap and will last the rest of the life of the laptop it’s also non conductive so, low risk to apply.

Old paste from the factory often goes bad after some years… and causes it to hold in the heat more than it should. As far as why it doesn’t do this on Linux… maybe power manangement is just good enough there that it isn’t noticeable, it would be noticeable if you ran a long running task though it would stay throttled.

1 Like

Hello. There is the update:

I tried with the “Fan always on” BIOS option disabled, but the result are the same. Also, in Linux the temperature ranges doesn’t changed after disabling that BIOS option.

1 Like

Is there any sensor monitor to see the temperature? I feel my ‘Lenovo’ z470 is very hot but don’t know how to see that.

There are some thermal-reading drivers in Haiku source I don’t see it in nigthly builds, but you could to build it from source. Usage by cat /dev/power pseudo files.
Temperature of my AMD Rizen 9:

Also I find 3rd party driver amd_temp for older AMD CPUs (starting from K8).

Hey! someone found my repo without me advertising it! NOICE! :stuck_out_tongue:

BTW, for older motherboards that include an ITE IT87xx “Super I/O” low-pin count chip (which include hardware monitoring capabilities)… there’s also my older it87 driver.

Also for other older motherboards, but the one with a Winbond Super I/O LPC chip, I have a working but still not published driver (wbhm) which should support:

  • W83627EHF
  • W83627EHG
  • W83627DHG
  • W83627UHG
  • W83667HG
  • W83627DHG-A (tested on an ASRock N68S-UCC motherboard.)
  • W83627DHG-P
  • W83667HG-B

I’ll try to publish that one soon.

4 Likes

I compiled it after you sent me the link… works on my system!

Good to hear! :slight_smile:

Wish I wasn’t so easily distracted. My intention is to get my (currently) 3 “hardware sensor” drivers more or less in-line with each other, and try to revive/update my “Hardmony” app enough as to be able to use whatever sensor is available.

I suck at GUI work, but if I manage to learn enough about BLayout… one can dream! :smiley:

2 Likes

Thanks for app and it87 driver. It works good for my AMD Athlon II X2 and Gigabyte GA-78LMT-S2P motherboard. But I noticed three issues:

  1. app use “sensor” sub path (as Haiku source three), but driver place self to “sensors” (make driverinstall command). It need to be in coherence.
  2. deskbar viewer shows sensor number 3 and it hardcoded. For me it is temperature of chipset, not CPU. It will be great to config what to show.
  3. Taking a screenshot crash the app. Does not matter active window or whole screen.

Thans @A_S for the report!

About point 1: yeah, at some point I wanted to use /dev/sensors/, because while currently Haiku has /dev/sensor/, in other places it uses plural form (as in /dev/ports/, but on the other hand… it has /dev/disk/, so… I don’t know :smiley:). In any case… app and drivers need to be in sync, of course.

About point 2: yes, ideally we should be able to select what is shown, and also to change the labels and offsets for each sensor (and ideally, provide some pre-made setups for different known motherboards).

About point 3: welp… that is unexpected… but given how bad of a programmer I am… I’m actually impressed that it didn’t just set the computer on fire instead of just crashing :stuck_out_tongue:.

Thanks again for giving it a try!

Also it will be great to have VIn’s calibration (inside it87 driver) and presets for different motherboards. For Gigabyte GA-78LMT-S2P I made this:

it87_refresh(it87_sensors_data& data)
{
//... 
// syslog: it87: ITE8728 found at address = 0x0228. VENDOR_ID: 0x90 - CORE_ID: 0x12 - REV: 0x07
                           //calibration from BIOS HW monitor and driver values
	data.voltages[0] = ITESensorRead(IT87_REG_VIN0) * ADC_RES        * 0.73;
	data.voltages[1] = ITESensorRead(IT87_REG_VIN1) * ADC_RES        * 0.75;
	data.voltages[2] = ITESensorRead(IT87_REG_VIN2) * ADC_RES        * 1.26;
	data.voltages[3] = ITESensorRead(IT87_REG_VIN3) * ADC_RES * 1.68 ;	// +5V. (6854.4 mV / 255). Missed because does not measure in BIOS.
	data.voltages[4] = ITESensorRead(IT87_REG_VIN4) * ADC_RES * 4    * 1.2; 	// +12V. (16320 mV / 255)

//...
}

Comparison of result

Monitoring inside BIOS

2 Likes