HP ProBook 4530s - Fan always on - Help with DSDT editing or NHC ACPI module

Discussion in 'HP Business Class Notebooks' started by jhonq, Apr 14, 2012.

Thread Status:
Not open for further replies.
  1. dragonuk

    dragonuk Notebook Consultant

    Reputations:
    4
    Messages:
    188
    Likes Received:
    0
    Trophy Points:
    30
    hp power assistant doesnt effect anything, im running it
     
  2. ladas

    ladas Newbie

    Reputations:
    0
    Messages:
    6
    Likes Received:
    0
    Trophy Points:
    5
    Spot on!! For some reason (I'm probably used to older bios interfaces) I never noticed ALL the options in bios!! Thanks Ghecco!
     
  3. there148

    there148 Notebook Geek

    Reputations:
    125
    Messages:
    85
    Likes Received:
    0
    Trophy Points:
    15
    I've been seeking a fan control software for awhile. The problem I have is I run a laptop that is too noisy. The model is tx2500.

    I open RW and was able to locate the temperature offset. Editing that value does indeed turn on and off the fan. I tried hpfancontrol but there is no option to change the EC temperature offset which in my case is 58. Can the author of the program please add an option to allow user defined EC temperature offset. Allowing this could pave way for a generic fan control for all laptops. Thanks.

    I've attach my rw reading with the temp reading from aida.

    [​IMG]
     
  4. jhonq

    jhonq Notebook Guru

    Reputations:
    4
    Messages:
    72
    Likes Received:
    0
    Trophy Points:
    15
    You should also find the byte that controls the fan. If you find it, the job is very easy efter that. There will be a new tool soon that has all the offsets configurable.

    After you find your fan control byte, try this version of tpfc, it has more options in the .ini - http://www.staff.uni-marburg.de/~schmitzr/TPFanControl4W520.zip or even ACFC - http://staff-www.uni-marburg.de/~schmitzr/ACFanControl_setup.zip

    Btw, when you edit byte 88, at what value does the fan turn off and on?

    Let us know how things go.
     
  5. there148

    there148 Notebook Geek

    Reputations:
    125
    Messages:
    85
    Likes Received:
    0
    Trophy Points:
    15
    I've tried both tpfc and acfc but those tools are not working. I believe they work by controling the fan directly which may limit them to the model/bios they were design to access. Hpfc is actually the tool I think may be portable to all laptops because it sends a false temperature value to the thermal zone preventing the fan from ever starting or even starting earlier depending on the value given. I'm glad to hear that a new version is coming out to allow adjustment of the EC temperature offset.

    As for editing byte 88 in my case, any temperature above 60 changes the fan mode from passive to active. I've used hex value 41 and the fan turns on for about a second until the value reverts back to its original state.
     
  6. jhonq

    jhonq Notebook Guru

    Reputations:
    4
    Messages:
    72
    Likes Received:
    0
    Trophy Points:
    15
    You just need to find the byte that controls the fan. You can't use cpu byte editing as the value does not stick....

    A custom hpfc that would send another value to byte 88 over and over would not work, as you don't seem to have a gpu temp byte to use as reference for turning the fan on/off etc.

    Just work on finding the fan control byte and things are super easy after that.

    But as i understant, you notebook is fanless untill 60C is reached. What would you want more? You risk burning it if you keep the fan off at higher temps.

    This is the new tool i was talking about - http://img844.imageshack.us/img844/9822/newpbfc.jpg

    It's still in developement, it can fake the cpu temp, but it needs the fan control byte.
     
  7. capvermell

    capvermell Notebook Consultant

    Reputations:
    0
    Messages:
    105
    Likes Received:
    0
    Trophy Points:
    30
    So for now HPFC is only a way to turn off your fan permanently if you can find the correct controlling byte register? It is not a way to set higher thresholds at which the fan triggers?

    With that being so and our notebooks only having a one year warranty I don't see how it can be safe to use it, especially with the summer in the northern hemisphere just beginning to start.

    If and when there is a version of HPFC where the fan trigger temperatures can be adjusted to be set at sensible values then I will happily start using it.

    So I think jhonq's earlier claims to have "done it" on HP's own support forum are a little premature and that more work is needed by him and/or Troubador before a solution that is satisfactory to most normal sensible cautious users of their PC becomes available. I would happily pay 15 USD for a properly working safe (won't fry our laptops) version of the utility to control fan speed as and when it is ever becomes available.
     
  8. jhonq

    jhonq Notebook Guru

    Reputations:
    4
    Messages:
    72
    Likes Received:
    0
    Trophy Points:
    15
    capvermell, what have you been reading? :confused:

    There is nothing premature about the "we have done it" claim.

    HPFC, available for some time, works flawlessly with the 4530s. You chose at what temp you want the fan to start, ramp up, slow down, turn off. No problems...

    Now, for other models/brands, the tool(s) can be adapted, but you can't expect me or anyone to know where the fan control byte is, just by posting a RW screenshot.

    That's why some common sense and testing is required. Just have a look at the EC, make the fan ramp up by using a cpu intensive tool and observe where the control byte might be. Easy!

    This is part of the config file of the latest beta of a new tool:

    If people would spend the time to find their ec bytes, things would be easy.
     
  9. tkg2

    tkg2 Newbie

    Reputations:
    0
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    5
    Hi,

    I think I found some information that might solve a bit more of the puzzle of suspend/resume issue that some encountered and also to improve the fan control algorithm. I have an 8460p laptop that has the same fan issue as you all discovered. I have looked a bit (well about 3 days now :) at the DSDT decompiled code form RWEverything (What an amazing tool!) and it seems that my DSDT is very similar to yours.

    From my dsdt (and one ssdt) I confim that in the ec offsets 0x2e is the reported fan speed and 0x2f is the fan requested (target) speed . To decode the values read from there for instance from RWEverything, you can use the same algorithm as the dsdt code which seems to be quite standard.
    if x is the value you see for instance at offset 0x2e(46 in dec), you bassicaly divide 245760/x to obtain the rpm (obviously for x different than 0). For instance for a value of 0x5a (90) you get approx 2730 RPM. Why this particular value 245760, well it is standard for a 2 pole, 5 edges fan (or a simulation of it). I can provide more details if needed. But it can be easy to see that setting some low values for x will exceed the fan capabilities and it will only spin as fast as the value from field 0x2e (my dsdt thinks that my fan should be spinning at max 5000 rpm, in reality it got to 5130 thus pretty close). The same happens for large values (say over 0x80 as the fan might not be able to spin so low under PWM control). Value 0xff is for fan off (if possible).

    NOW, the interesting part is that offsets 38 and 50 thought to be CPU temp and GPU temp are actually multiplexed and basically they can show or set several temps based on the value set at offset 34. In the DSDT the field at offset 34 is named CRZN (Possibly from current (thermal) zone) and offet 38 is TEMP and offset 50 is DTEMP (Possibly Diode or detected temp).
    The slight problem with CRZN is that if you read it is shows 0 but basically (at least) the values at offset 38 and 50 are depended on the last write here.
    This might be why is some app that queries temps through acpi might change it and you see values you do not expect in the 38 and 50 fields.

    I believe a value of 1 in this field corresponds to thermal zone 1 cpu (and 234 for GPU, LOC or SK(I)N zones, and 5 might be for battery), this requires more investigation.

    If you ever let your computer came from standy and fields 38 and 50 seem frozen (while they were not before the standby) and having lower values than expected, it might be due to the last thermal zone read or written was other than the cpu zone. To reset it to the cpu zone write 1 at CRZN and then you shall see the expected values at TEMP and DTEMP. If you change the TEMP value, the DTEMP will still show the real value of that zone while the TEMP will have the one set by you (if you write a 0 there, it will reenable self update of the TEMP field).

    Thus a proper way to play with setting the temp for the target zone for instance in the RWEverything might be.

    1. Acquire EC ACPI lock
    2. Write 1 to offset 34
    3. Read cpu (if 1 is written to offset 34 it should be tz cpu) temp from sensors which is at offset 50.
    4. Write the intended "fake" temp to reg 38 (eg 1C)
    5. Write (if needed, for some temps the acpi itself will turn the fan off based on the thermal zone setting) the fan value to offset 47.
    6. Release the EC lock

    Operations 1 and 5 are really needed so that acpi itself or a program reading the thermal zone values does not interfere with it, however in RWEverything this cannot be done but at least RWEverything seems to do 1 and 5 for each write to EC.

    Conclusion (summary)
    More to be done, but at least this might help get rid of the aida dependecies.
    As I said the important part is to understand that locations 38 and 50 might contain temps from different sensors depnding on the setting at offset 34.
    Again, if you read the value from offset 34 it will be zero ..., regardless of what you wrote, but the EC sets fields 38 and 50 based on the last write to this offset.
    Please understand that if all the operations are not performed under the ec lock another call can arrive for instance from a monitoring app and you might read garbage or worse write to the wrong thermal zone.
     
  10. tkg2

    tkg2 Newbie

    Reputations:
    0
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    5
    A slight correction. In my previous post in stead of "Operations 1 and 5" should read "Operations 1 and 6". Obviously it was about the lock/release pair, and adding one more step got it out of sync.

    Regarding the values for offset 34, from the acpi dsdt thermal zones for 8460p (might be the same for 4530s):
    1 - CPUZ (cpu zone)
    2 - GFXZ (gpu zone)
    3 - EXTZ
    4 - LOCZ
    5 - BATZ (battery)

    The dstd code defines 3 more zones such as PCH (Platform Controller Hub) and DIMM1 (memory slot 1, might be located on the memory chip so it might only show if the memory in the slot has it) and DIMM2 (memory slot 2) but those do not seem to be relevant for offset 34. also befores somebody asks :) it is unclear what a value of 0 would do if written to offset 34.
    Also in the dsdt it might be that the zone indices is lower by 1 (meaning cpuz is 0, when reading data from various structures), but for the offsset 34 scope they are as above.
     
Loading...
Thread Status:
Not open for further replies.

Share This Page