Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IT8659 controller either doesn't respect true 0pwm setting or such setting is not handled #1108

Closed
ZeChArtiahSaher opened this issue Oct 24, 2024 · 2 comments

Comments

@ZeChArtiahSaher
Copy link

ZeChArtiahSaher commented Oct 24, 2024

Component

EC firmware

Device

Protectli VP6630

Dasharo version

No response

Dasharo Tools Suite version

No response

Test case ID

No response

Brief summary

when 0pwm fan settings for IT8659 controller are set the fans still don't fully stop, but also when they barely spin they don't really contribute to cooling perf

How reproducible

Reproducible with stock AMI firmware, permanent. (I assume it also applies to coreboot as the fan settings in the source are almost identical to AMI options)

How to reproduce

Set these fan settings in AMI or corebios (link to source):

Fan Mode | VarStore: IT8659_SMF | VarOffset: 0x0 | Size: 0x1
    Manual Mode: 0x0 <-- set to 0x0
    Automatic Mode: 0x1
                                                                                                                        Cpu Fan1 Setting
Manual PWM Setting | VarStore: IT8659_SMF | VarOffset: 0x6 | Size: 0x1
    Min: 0x0 | Max: 0xFF | Step: 0x1 <-- set to 0x0

...                                                                                                                     
                                                                                                                        Cpu Fan2 Setting
Fan Mode | VarStore: IT8659_SMF | VarOffset: 0x8 | Size: 0x1
    Manual Mode: 0x0 <-- set to 0x0
    Automatic Mode: 0x1
                                                                                                                        Cpu Fan2 Setting
Manual PWM Setting | VarStore: IT8659_SMF | VarOffset: 0xE | Size: 0x1
    Min: 0x0 | Max: 0xFF | Step: 0x1 <-- set to 0x0

And with these settings the fans occasionally spin up to like 100 rpm and then turn off leaving no cooling performance benefit on the table except consuming extra energy and producing noise

Expected behavior

In manual pwm mode when setting is set to 0 then fans should just switch off. Or at least in the fan settings there should be a separate boolean toggle that instructs IT8659 to switch off fan ctl completely.

At first you might think but why not leave these 'sane' defaults on. Well my argument is if the user is allowed to set fan speeds that are so low that barely move a cubic millimeter of air per s contributing nothing to the overall heat dissipation performance especially on the i3 vp66 unit might as well allow users to turn the whole thing off the in first place saving on noise levels + giving user the freedom disconnecting extra moving parts from the system if they intend to.

Actual behavior

Fans spin for like 1 second at rouhgly 100-200 rpm and then switch off and cycle like this every 5 seconds or so

Screenshots

No response

Additional context

My findings mainly come from the AMI Bios variant of the firmware however I suspect this applies to coreboot components in the same vein as well. There are clear references to it8659 in AMI BIOS firmware & corebios. I believe should probably smart enough where it can receive a simple instruction of turning off the fan control completely.

Solutions you've tried

Patching AMI BIOS (and flashing directly on chip just to be extra sure) with tinkered Platform Thermal Configuration values to see if this was linked to anything intel thermals related, or any extra hidden values that at least had some relation to fan/pwm controls but to no avail.

I do suspect the main pwm logic lives on that super io chip and programming that chip esp with no datasheet avail would be a great undertaking.

The only other option left on the table is using a fan simulator that would trick the controller into thinking it's running a real fan, but given the supposed openness of the platform and the fact that the fan headers are glued to the unit for some reason I would consider such solution as not preferable.

@miczyg1
Copy link
Contributor

miczyg1 commented Oct 25, 2024

Fan are set to automatic mode and go off when temperature is lower than 40 Celsius degrees. Dasharo has no setup options to control that. You may play around with those settings here: https://github.com/Dasharo/coreboot/blob/dasharo/src/mainboard/protectli/vault_adl_p/devicetree.cb#L282

  • tmp_off - is the temperature threshold at which the fans will go off
  • tmp_start - is the temperature threshold at which the fans will start spinning
  • tmp_full - is the temperature threshold at which the fans will spin at full speed
  • pwm_start - is the initial duty cycle (%) at which the fan starts spinning when the temperature reaches tmp_start
  • slope - controls how fast the PWM duty cycle should ramp up in the tmp_start to tmp_full temperature range, from pwm_start duty cycle up to 100% duty cycle

Then simply recompile and flash the Dasharo ROM. If you wish to have setup options for the fan control, please state that this is a feature request from your side and we may pass it to Protectli. But it depends on Protectli whether it will be implemented or not.

As for the AMI firmware, I can't help much. You are on your own, unfortunately.

@ZeChArtiahSaher
Copy link
Author

Yes the behavior is the same, I'll create a FR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants