[GH-ISSUE #369] Config: Lenovo Ideapad U160 #332

Closed
opened 2026-02-26 00:32:21 +03:00 by kerem · 3 comments
Owner

Originally created by @GreyWorks on GitHub (Oct 31, 2017).
Original GitHub issue: https://github.com/hirschmann/nbfc/issues/369

Hi,
I created a config for the Lenovo IdeaPad U160.
(Sorry for not doing a pull request but i don't have much experience with them)

<FanControlConfigV2 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NotebookModel>Lenovo Ideapad U160</NotebookModel>
  <EcPollInterval>2000</EcPollInterval>
  <ReadWriteWords>false</ReadWriteWords>
  <CriticalTemperature>95</CriticalTemperature>
  <FanConfigurations>
    <FanConfiguration>
      <ReadRegister>149</ReadRegister>
      <WriteRegister>148</WriteRegister>
      <MinSpeedValue>255</MinSpeedValue>
      <MaxSpeedValue>64</MaxSpeedValue>
      <IndependentReadMinMaxValues>false</IndependentReadMinMaxValues>
      <MinSpeedValueRead>0</MinSpeedValueRead>
      <MaxSpeedValueRead>0</MaxSpeedValueRead>
      <ResetRequired>true</ResetRequired>
      <FanSpeedResetValue>64</FanSpeedResetValue>
      <FanDisplayName>System Fan</FanDisplayName>
      <TemperatureThresholds>
        <TemperatureThreshold>
          <UpThreshold>0</UpThreshold>
          <DownThreshold>0</DownThreshold>
          <FanSpeed>0</FanSpeed>
        </TemperatureThreshold>
        <TemperatureThreshold>
          <UpThreshold>55</UpThreshold>
          <DownThreshold>50</DownThreshold>
          <FanSpeed>25</FanSpeed>
        </TemperatureThreshold>
        <TemperatureThreshold>
          <UpThreshold>60</UpThreshold>
          <DownThreshold>58</DownThreshold>
          <FanSpeed>50</FanSpeed>
        </TemperatureThreshold>
        <TemperatureThreshold>
          <UpThreshold>65</UpThreshold>
          <DownThreshold>63</DownThreshold>
          <FanSpeed>75</FanSpeed>
        </TemperatureThreshold>
        <TemperatureThreshold>
          <UpThreshold>70</UpThreshold>
          <DownThreshold>68</DownThreshold>
          <FanSpeed>90</FanSpeed>
        </TemperatureThreshold>
        <TemperatureThreshold>
          <UpThreshold>80</UpThreshold>
          <DownThreshold>65</DownThreshold>
          <FanSpeed>100</FanSpeed>
        </TemperatureThreshold>
      </TemperatureThresholds>
    </FanConfiguration>
  </FanConfigurations>
  <RegisterWriteConfigurations>
    <RegisterWriteConfiguration>
      <WriteMode>Set</WriteMode>
      <WriteOccasion>OnInitialization</WriteOccasion>
      <Register>147</Register>
      <Value>20</Value>
      <ResetRequired>true</ResetRequired>
      <ResetValue>4</ResetValue>
      <ResetWriteMode>Set</ResetWriteMode>
      <Description>Turn Off Auto Control</Description>
    </RegisterWriteConfiguration>
  </RegisterWriteConfigurations>
</FanControlConfigV2>

Notes:

  • I set the last DownThreshold to 65 so it cools down after heavy load as the bottom of the netbook gets pretty hot after constant high load. You can change it to 78 if you want.
  • It is possible to set the MaxSpeedValue below 64 but the fan will spin faster than the default fan controller speed. I think this may be bad for the fan. As with this value the temperature sets at about 85°C even under artificial load. At least on my model.
  • Bit 0x10 in register 147 sets the manual control. Bit 0x04 is always on. Therefore the values 20 and 4.
  • Registers 148 and 149 seem to be the fan duty cycle (write&read). 255 -> off
  • Registers 168 and 169 would be thermal zones 0 and 1.
Offset (0x95),
FANS,   8,
Offset (0xA8),
THS0,   8,
THS1,   8,

Created and tested under Arch Linux 4.13.9-1-ARCH #1 SMP PREEMPT Sun Oct 22 09:07:32 CEST 2017.

BIOS Information
   Vendor: LENOVO
   Version: 33CN14WW
   Release Date: 05/10/2010
   ...
   BIOS Revision: 1.5
   Firmware Revision: 1.20

PS: Thank you so much for this great project. This is the first fan control software i got to work on that netbook.

Originally created by @GreyWorks on GitHub (Oct 31, 2017). Original GitHub issue: https://github.com/hirschmann/nbfc/issues/369 Hi, I created a config for the Lenovo IdeaPad U160. (Sorry for not doing a pull request but i don't have much experience with them) ```<?xml version="1.0"?> <FanControlConfigV2 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <NotebookModel>Lenovo Ideapad U160</NotebookModel> <EcPollInterval>2000</EcPollInterval> <ReadWriteWords>false</ReadWriteWords> <CriticalTemperature>95</CriticalTemperature> <FanConfigurations> <FanConfiguration> <ReadRegister>149</ReadRegister> <WriteRegister>148</WriteRegister> <MinSpeedValue>255</MinSpeedValue> <MaxSpeedValue>64</MaxSpeedValue> <IndependentReadMinMaxValues>false</IndependentReadMinMaxValues> <MinSpeedValueRead>0</MinSpeedValueRead> <MaxSpeedValueRead>0</MaxSpeedValueRead> <ResetRequired>true</ResetRequired> <FanSpeedResetValue>64</FanSpeedResetValue> <FanDisplayName>System Fan</FanDisplayName> <TemperatureThresholds> <TemperatureThreshold> <UpThreshold>0</UpThreshold> <DownThreshold>0</DownThreshold> <FanSpeed>0</FanSpeed> </TemperatureThreshold> <TemperatureThreshold> <UpThreshold>55</UpThreshold> <DownThreshold>50</DownThreshold> <FanSpeed>25</FanSpeed> </TemperatureThreshold> <TemperatureThreshold> <UpThreshold>60</UpThreshold> <DownThreshold>58</DownThreshold> <FanSpeed>50</FanSpeed> </TemperatureThreshold> <TemperatureThreshold> <UpThreshold>65</UpThreshold> <DownThreshold>63</DownThreshold> <FanSpeed>75</FanSpeed> </TemperatureThreshold> <TemperatureThreshold> <UpThreshold>70</UpThreshold> <DownThreshold>68</DownThreshold> <FanSpeed>90</FanSpeed> </TemperatureThreshold> <TemperatureThreshold> <UpThreshold>80</UpThreshold> <DownThreshold>65</DownThreshold> <FanSpeed>100</FanSpeed> </TemperatureThreshold> </TemperatureThresholds> </FanConfiguration> </FanConfigurations> <RegisterWriteConfigurations> <RegisterWriteConfiguration> <WriteMode>Set</WriteMode> <WriteOccasion>OnInitialization</WriteOccasion> <Register>147</Register> <Value>20</Value> <ResetRequired>true</ResetRequired> <ResetValue>4</ResetValue> <ResetWriteMode>Set</ResetWriteMode> <Description>Turn Off Auto Control</Description> </RegisterWriteConfiguration> </RegisterWriteConfigurations> </FanControlConfigV2> ``` Notes: - I set the last DownThreshold to 65 so it cools down after heavy load as the bottom of the netbook gets pretty hot after constant high load. You can change it to 78 if you want. - It is possible to set the MaxSpeedValue below 64 but the fan will spin faster than the default fan controller speed. I think this may be bad for the fan. As with this value the temperature sets at about 85°C even under artificial load. At least on my model. - Bit 0x10 in register 147 sets the manual control. Bit 0x04 is always on. Therefore the values 20 and 4. - Registers 148 and 149 seem to be the fan duty cycle (write&read). 255 -> off - Registers 168 and 169 would be thermal zones 0 and 1. ``` Offset (0x95), FANS, 8, Offset (0xA8), THS0, 8, THS1, 8, ``` Created and tested under `Arch Linux 4.13.9-1-ARCH #1 SMP PREEMPT Sun Oct 22 09:07:32 CEST 2017`. ``` BIOS Information Vendor: LENOVO Version: 33CN14WW Release Date: 05/10/2010 ... BIOS Revision: 1.5 Firmware Revision: 1.20 ``` PS: Thank you so much for this great project. This is the first fan control software i got to work on that netbook.
kerem 2026-02-26 00:32:21 +03:00
  • closed this issue
  • added the
    config
    label
Author
Owner

@hirschmann commented on GitHub (Nov 1, 2017):

Thank you very much! 👍
I've added the config to the repo: 147f9c1e7b

<!-- gh-comment-id:341219896 --> @hirschmann commented on GitHub (Nov 1, 2017): Thank you very much! 👍 I've added the config to the repo: 147f9c1e7b8098252f06954a0fdb1d1c6d565796
Author
Owner

@homer314 commented on GitHub (May 15, 2018):

Hi,

@GreyWorks how did you find out manual/auto fan control register? I'm trying to setup a config for a clevo system and i found fan speed and duty registers but i think i need manual mode too

Thanks

<!-- gh-comment-id:389134832 --> @homer314 commented on GitHub (May 15, 2018): Hi, @GreyWorks how did you find out manual/auto fan control register? I'm trying to setup a config for a clevo system and i found fan speed and duty registers but i think i need manual mode too Thanks
Author
Owner

@GreyWorks commented on GitHub (May 25, 2018):

Hi @homer314 ,
sorry for the late reply.

As far as i can remember i poked around the registers near the duty cycle and the thermal zone.
I tried 255 and 0. One did not work and was reset immediately but the other resulted in a different behaviour of the fan. To reset to auto i had to put it back to the value it was before (4).
So somehow i concluded which bits are the auto fan control.
To be clear: i still have no idea what the other bits in the register do (if they do something at all).

Hope that helps at least a little.

<!-- gh-comment-id:392020411 --> @GreyWorks commented on GitHub (May 25, 2018): Hi @homer314 , sorry for the late reply. As far as i can remember i poked around the registers near the duty cycle and the thermal zone. I tried 255 and 0. One did not work and was reset immediately but the other resulted in a different behaviour of the fan. To reset to auto i had to put it back to the value it was before (4). So somehow i concluded which bits are the auto fan control. To be clear: i still have no idea what the other bits in the register do (if they do something at all). Hope that helps at least a little.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nbfc-hirschmann#332
No description provided.