[GH-ISSUE #398] Advice on fixing ASUS gl753ve fan issues #356

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

Originally created by @cdbrendel on GitHub (Dec 4, 2017).
Original GitHub issue: https://github.com/hirschmann/nbfc/issues/398

Hi there,

I'm in the early stages of attempting to develop a nbfc configuration for/fix the DSDT of an ASUS ROG gl753ve, a single-fan system with hybrid intel/nvidia graphics. It has terrible battery life/thermal performance on Linux out of the box (the nvidia card idling produces lots of heat and uses lots of power, even with nvidia/nouveau unloaded), so attempting to use bbswitch to disable the card led me here.

In normal operation (ie, before I mess with anything), the fan spins at a medium-low setting at idle and ramps up/down with processor utilization (I don't know if the kernel is doing this or if this is BIOS-controlled). This is fine.

However, when I use bbswitch to disable the dgpu (\_SB.PCI0.PEG0.PEGP), the call seems to successfully power down the card, but after about 10 seconds the fan spins up from maybe 40% to 100% until shutdown (soft reboot doesn't fix it) despite various attempted fixes as outlined in Bumblebee-Project/Bumblebee#904 and Bumblebee-Project/Bumblebee#764.

Broadly speaking, I'm wondering if anyone else is also trying to fix the thermal performance of this laptop, but I have a few narrower questions. Apologies if this is kind of nascently unorganized; I'm entirely inexperienced in working with ACPI/ACPI tables (@hirschmann's guide was very helpful) and this DSDT seems particularly fussy.

The register 0xEE is involved determining/reporting the fan speed--see the below graph of ec-probe -t 40 -i 1 -r ... where the system is idle until I run stress starting at about second 6. It looks to me like 0xEE is a fan speed target (I think this is LTCL in the DSDT, which is only referenced once in an IndexField), and the 0xE8, labeled PVOL in the DSDT, is perhaps processor voltage? 0xE2 (I think named EGCP) as well as 0xE3 and 0xEC (not named in the DSDT) also seem to increase with stress, but I have no idea what they are. Graph of changes in EC registers under load

Compare to this graph after I run echo "OFF" > /proc/acpi/bbswitch (sorry, the lines are in different colors and on different ranges...). Here, 0xEE is consistently low (although the fan is audibly at 100%), but 0xE8 is consistently high (even though the processor is idling), which is entirely the opposite of what I'd expect based on the test above. What could possibly be going on with these registers? I have no idea. If 0xE8 reports processor voltage, could this false, elevated value be causing some other part of the system to set the fan to 100%? Or maybe it's not processor voltage at all. Graph after bbswitch

At any rate, reading these registers is of limited use since they appear to be read-only, and the majority of registers that can be written to seem to be stored in SystemMemory. I know that ec-probe doesn't attempt to mess with kernel address space, but is there any way to directly read these values using another tool to try to figure out what's going on in the values that some of these methods are using?

In the DSDT itself, I've been able to make a little progress in figuring out what some methods do. Using the acpi_call module, I found that the method \_SB.PCI0.LPCB.EC0.RFOV 0, for example, reports the speed of fan 0 (the only one), and \_SB.PCI0.LPCB.EC0.WFOV 0 0 spins the fan down to the lowest power state. However, after I've bbswitched the dgpu to off, any calls I make to WFOV are overwritten by something else in the system after 1 second (so, if I turn the fan to, say, value 0x30, it'll wind down and run slow for a split second, then immediately spin up to 0xFF again, despite lack of processing load or high temperature readings). Is there any way to listen in on acpi events to figure out what other call is presumably being made to overrule my call to WFOV, or any other suggestion to figure out what could be resetting the fan to 100%?

I'm not really sure what I'm asking for other than hoping I could bounce what I've noticed off of you guys and figure out how I should proceed from here. I'm not even sure if nbfc will ultimately be able to manage this system's fan, but I think figuring out what's going on in the DSDT is the first step in any case.

Some other notes: the only configuration recommended by nbfc, Asus ROG GL702VM, doesn't work for this device. sensors only provides valid output for coretemps; it tries to detect the CPU fan on an ISA bus, but the value is constantly -1. asus_wmi/asus_nb_wmi provides an interface for a fan at hwmon3, but it has the same problem. System is Archlinux running kernel 4.14.3. I also am dual booting Windows 10 perfectly, so if jumping over there to investigate ACPI issues would be helpful, I can do that as well.

Thanks in advance for any help.

Originally created by @cdbrendel on GitHub (Dec 4, 2017). Original GitHub issue: https://github.com/hirschmann/nbfc/issues/398 Hi there, I'm in the early stages of attempting to develop a nbfc configuration for/fix the DSDT of an ASUS ROG gl753ve, a single-fan system with hybrid intel/nvidia graphics. It has terrible battery life/thermal performance on Linux out of the box (the nvidia card idling produces lots of heat and uses lots of power, even with nvidia/nouveau unloaded), so attempting to use bbswitch to disable the card led me here. In normal operation (ie, before I mess with anything), the fan spins at a medium-low setting at idle and ramps up/down with processor utilization (I don't know if the kernel is doing this or if this is BIOS-controlled). This is fine. However, when I use bbswitch to disable the dgpu (`\_SB.PCI0.PEG0.PEGP`), the call seems to successfully power down the card, but after about 10 seconds the fan spins up from maybe 40% to 100% until shutdown (soft reboot doesn't fix it) despite various attempted fixes as outlined in Bumblebee-Project/Bumblebee#904 and Bumblebee-Project/Bumblebee#764. Broadly speaking, I'm wondering if anyone else is also trying to fix the thermal performance of this laptop, but I have a few narrower questions. Apologies if this is kind of nascently unorganized; I'm entirely inexperienced in working with ACPI/ACPI tables (@hirschmann's guide was very helpful) and this DSDT seems particularly fussy. The register 0xEE is involved determining/reporting the fan speed--see the below graph of `ec-probe -t 40 -i 1 -r ...` where the system is idle until I run `stress` starting at about second 6. It looks to me like 0xEE is a fan speed target (I think this is LTCL in the DSDT, which is only referenced once in an IndexField), and the 0xE8, labeled PVOL in the DSDT, is perhaps processor voltage? 0xE2 (I think named EGCP) as well as 0xE3 and 0xEC (not named in the DSDT) also seem to increase with `stress`, but I have no idea what they are. ![Graph of changes in EC registers under load](https://lh3.googleusercontent.com/xgO1I9XRhj2cmQ5eeQa2xNWdkeHiTeFlfej0LRRAHaVVGq6XyAGvm5Vuf7_Z_hX9P6X-vaMM0CSD4oSMG5f2=w2560-h1277) Compare to this graph after I run `echo "OFF" > /proc/acpi/bbswitch` (sorry, the lines are in different colors and on different ranges...). Here, 0xEE is consistently low (although the fan is audibly at 100%), but 0xE8 is consistently high (even though the processor is idling), which is entirely the opposite of what I'd expect based on the test above. What could possibly be going on with these registers? I have no idea. If 0xE8 reports processor voltage, could this false, elevated value be causing some other part of the system to set the fan to 100%? Or maybe it's not processor voltage at all. ![Graph after bbswitch](https://lh5.googleusercontent.com/O4SVx-t-x_8n5TIEmf9_XQicVFTYYRRuX7aV4fJScXgYan70xjsmoNjV3x4hFrSdEIH-WvoR7WYTcWWz2xJq=w2560-h1277) At any rate, reading these registers is of limited use since they appear to be read-only, and the majority of registers that can be written to seem to be stored in SystemMemory. I know that ec-probe doesn't attempt to mess with kernel address space, but is there any way to directly read these values using another tool to try to figure out what's going on in the values that some of these methods are using? In the DSDT itself, I've been able to make a little progress in figuring out what some methods do. Using the acpi_call module, I found that the method `\_SB.PCI0.LPCB.EC0.RFOV 0`, for example, reports the speed of fan 0 (the only one), and `\_SB.PCI0.LPCB.EC0.WFOV 0 0` spins the fan down to the lowest power state. However, after I've bbswitched the dgpu to off, any calls I make to `WFOV` are overwritten by something else in the system after 1 second (so, if I turn the fan to, say, value 0x30, it'll wind down and run slow for a split second, then immediately spin up to 0xFF again, despite lack of processing load or high temperature readings). Is there any way to listen in on acpi events to figure out what other call is presumably being made to overrule my call to WFOV, or any other suggestion to figure out what could be resetting the fan to 100%? I'm not really sure what I'm asking for other than hoping I could bounce what I've noticed off of you guys and figure out how I should proceed from here. I'm not even sure if nbfc will ultimately be able to manage this system's fan, but I think figuring out what's going on in the DSDT is the first step in any case. Some other notes: the only configuration recommended by nbfc, Asus ROG GL702VM, doesn't work for this device. `sensors` only provides valid output for coretemps; it tries to detect the CPU fan on an ISA bus, but the value is constantly -1. `asus_wmi`/`asus_nb_wmi` provides an interface for a fan at hwmon3, but it has the same problem. System is Archlinux running kernel 4.14.3. I also am dual booting Windows 10 perfectly, so if jumping over there to investigate ACPI issues would be helpful, I can do that as well. Thanks in advance for any help.
kerem 2026-02-26 00:32:25 +03:00
  • closed this issue
  • added the
    Stale
    label
Author
Owner

@3230 commented on GitHub (Jan 5, 2018):

I have this laptop nd i tried to have a fanless one. But like you, it speeds when i start a new program or new action... Here is my config : Please if you have a good way tell me...
<?xml version="1.0"?> <FanControlConfigV2 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <NotebookModel>GL753VE</NotebookModel> <Author>STEF</Author> <EcPollInterval>100</EcPollInterval> <ReadWriteWords>false</ReadWriteWords> <CriticalTemperature>92</CriticalTemperature> <FanConfigurations> <FanConfiguration> <ReadRegister>232</ReadRegister> <WriteRegister>238</WriteRegister> <MinSpeedValue>0</MinSpeedValue> <MaxSpeedValue>255</MaxSpeedValue> <IndependentReadMinMaxValues>false</IndependentReadMinMaxValues> <ResetRequired>true</ResetRequired> <FanSpeedResetValue>0</FanSpeedResetValue> <FanDisplayName>CPU FAN</FanDisplayName> <TemperatureThresholds> <TemperatureThreshold> <FanSpeed>0</FanSpeed> <UpThreshold>0</UpThreshold> <DownThreshold>0</DownThreshold> </TemperatureThreshold> <TemperatureThreshold> <FanSpeed>20</FanSpeed> <UpThreshold>75</UpThreshold> <DownThreshold>66</DownThreshold> </TemperatureThreshold> <TemperatureThreshold> <FanSpeed>40</FanSpeed> <UpThreshold>80</UpThreshold> <DownThreshold>72</DownThreshold> </TemperatureThreshold> </TemperatureThresholds> <FanSpeedPercentageOverrides /> </FanConfiguration> <FanSpeedPercentageOverride> <FanSpeedPercentage>0</FanSpeedPercentage> <FanSpeedValue>255</FanSpeedValue> <TargetOperation>ReadWrite</TargetOperation> </FanSpeedPercentageOverride> </FanConfigurations> <RegisterWriteConfigurations> <RegisterWriteConfiguration> <Description>CPU FAN</Description> <WriteOccasion>OnWriteFanSpeed</WriteOccasion> <WriteMode>Set</WriteMode> <Register>160</Register> <Value>0</Value> <ResetRequired>true</ResetRequired> <ResetWriteMode>Set</ResetWriteMode> <ResetValue>0</ResetValue> </RegisterWriteConfiguration> <RegisterWriteConfiguration> <Description>CPU FAN</Description> <WriteOccasion>OnWriteFanSpeed</WriteOccasion> <WriteMode>Set</WriteMode> <Register>166</Register> <Value>0</Value> <ResetRequired>true</ResetRequired> <ResetWriteMode>Set</ResetWriteMode> <ResetValue>0</ResetValue> </RegisterWriteConfiguration> </RegisterWriteConfigurations> </FanControlConfigV2>

<!-- gh-comment-id:355495043 --> @3230 commented on GitHub (Jan 5, 2018): I have this laptop nd i tried to have a fanless one. But like you, it speeds when i start a new program or new action... Here is my config : Please if you have a good way tell me... `<?xml version="1.0"?> <FanControlConfigV2 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <NotebookModel>GL753VE</NotebookModel> <Author>STEF</Author> <EcPollInterval>100</EcPollInterval> <ReadWriteWords>false</ReadWriteWords> <CriticalTemperature>92</CriticalTemperature> <FanConfigurations> <FanConfiguration> <ReadRegister>232</ReadRegister> <WriteRegister>238</WriteRegister> <MinSpeedValue>0</MinSpeedValue> <MaxSpeedValue>255</MaxSpeedValue> <IndependentReadMinMaxValues>false</IndependentReadMinMaxValues> <ResetRequired>true</ResetRequired> <FanSpeedResetValue>0</FanSpeedResetValue> <FanDisplayName>CPU FAN</FanDisplayName> <TemperatureThresholds> <TemperatureThreshold> <FanSpeed>0</FanSpeed> <UpThreshold>0</UpThreshold> <DownThreshold>0</DownThreshold> </TemperatureThreshold> <TemperatureThreshold> <FanSpeed>20</FanSpeed> <UpThreshold>75</UpThreshold> <DownThreshold>66</DownThreshold> </TemperatureThreshold> <TemperatureThreshold> <FanSpeed>40</FanSpeed> <UpThreshold>80</UpThreshold> <DownThreshold>72</DownThreshold> </TemperatureThreshold> </TemperatureThresholds> <FanSpeedPercentageOverrides /> </FanConfiguration> <FanSpeedPercentageOverride> <FanSpeedPercentage>0</FanSpeedPercentage> <FanSpeedValue>255</FanSpeedValue> <TargetOperation>ReadWrite</TargetOperation> </FanSpeedPercentageOverride> </FanConfigurations> <RegisterWriteConfigurations> <RegisterWriteConfiguration> <Description>CPU FAN</Description> <WriteOccasion>OnWriteFanSpeed</WriteOccasion> <WriteMode>Set</WriteMode> <Register>160</Register> <Value>0</Value> <ResetRequired>true</ResetRequired> <ResetWriteMode>Set</ResetWriteMode> <ResetValue>0</ResetValue> </RegisterWriteConfiguration> <RegisterWriteConfiguration> <Description>CPU FAN</Description> <WriteOccasion>OnWriteFanSpeed</WriteOccasion> <WriteMode>Set</WriteMode> <Register>166</Register> <Value>0</Value> <ResetRequired>true</ResetRequired> <ResetWriteMode>Set</ResetWriteMode> <ResetValue>0</ResetValue> </RegisterWriteConfiguration> </RegisterWriteConfigurations> </FanControlConfigV2>`
Author
Owner
<!-- gh-comment-id:439657903 --> @lumiera commented on GitHub (Nov 18, 2018): Possibly relevant? https://askubuntu.com/questions/921580/ubuntu-freezes-on-login-after-prime-select-intel/923216#923216
Author
Owner

@github-actions[bot] commented on GitHub (Dec 6, 2019):

This issue is stale because it has been open more than 180 days with no activity. If nobody comments within 7 days, this issue will be closed

<!-- gh-comment-id:562372399 --> @github-actions[bot] commented on GitHub (Dec 6, 2019): This issue is stale because it has been open more than 180 days with no activity. If nobody comments within 7 days, this issue will be closed
Author
Owner

@3230 commented on GitHub (Dec 6, 2019):

I wait again to found a solution...
See you later...

<!-- gh-comment-id:562495181 --> @3230 commented on GitHub (Dec 6, 2019): I wait again to found a solution... See you later...
Author
Owner

@cdbrendel commented on GitHub (Dec 7, 2019):

I no longer own a gl753ve and can't debug this issue any more, but I never resolved it. @3230, did @lumiera's solution do anything for you?

<!-- gh-comment-id:562798201 --> @cdbrendel commented on GitHub (Dec 7, 2019): I no longer own a gl753ve and can't debug this issue any more, but I never resolved it. @3230, did @lumiera's solution do anything for you?
Author
Owner

@3230 commented on GitHub (Dec 7, 2019):

Hi, i did not see something by @lumiera ...
Thanks.

<!-- gh-comment-id:562822178 --> @3230 commented on GitHub (Dec 7, 2019): Hi, i did not see something by @lumiera ... Thanks.
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#356
No description provided.