Personally, no. I tried a part of it (decompiling the dsdt, searching for a fan speed in it) without finding anything, but then I don't understand much of what is in a dsdt anyway.

Now, given that, with undervolting and the "quiet" profile, I need to have my ear right next to the left vent to hear the fan spinning at a very low speed, it seems there is little need for dsdt patching. Turning off the harddrive or upgrading to a SSD, maybe

I have tried dsdt patching but (a) there is no fan device in the dsdt and (b) modifying the temperature readout does not affect fan speed, i.e. the fan controller either uses the non-acpi temperature sensor (there are two of them) or it reads the acpi one directly from the hardware before being modified from the dsdt.

It is possible to modify fan speed by continuously writing to EC register 0xE5 (this is a temperature readout that is connected to fan speed and 0x5E (set bit #1 to shut down the fan).

Using the "silent" coolsense profile with an undervolted processor will limit fan speeds to 1500rpm which is relatively quiet and unobtrusive (not silent though). I tried shutting down the fan completely and, without undervolting, temperatures surpass 70C which is not something I am comfortable with. I'll try again with the undervolted CPU and report back.

Unfortunately, the cooler is very small and doesn't work well for passive cooling. The ideal would be to limit the fan to 800-1200rpm for temps under ~55C which would should be undetectable noise-wise under all but the most silent environments. Unfortunately, I haven't found a way to do this (and I'm not willing to do a hardware mod on a brand new system!)

It's clean (tested with on http://virustotal.com), run it as admin, select the MSR tab and click the "user defined" button (can't recall the name exactly, it's something like that) and add the addresses 0xC0010064/65/66/71. This will appear at the bottom of the MSR tab, so scroll down and double click each value to modify it. For each value you double-click, a new window will appear. You need to modify the second value on this window, starting from down-right. Concrete example:

for register 0xC0010064 the values will be something like: 80|00|..|..|..|00|28|10. You need to modify the '28' (increase the value to undervolt). Do note that these values are in hex, so you count 28, 29, 2a, ..., 2f, 30 (i.e. 28->30 is eight steps!)

Note that you need to change pstate before your changes 'take'. I think rw-everything is scriptable, so you can make it apply the undervolted values automatically (you can even add it as a scheduled task on startup to avoid the UAC prompt!)

@thierryg: I created a little bash script for undervolting, simpler than compiling a program. It's something like:

Still need to find out how to run it as root at startup but I think this should work.

I don't know of any libraries that provide access to wrmsr/rdmsr on windows. These are ring-0 instructions and require a (signed) kernel driver - something should exist but I haven't been able to find it yet. (I've only found out about WinIO but I don't think this provides access to those instructions).

for register 0xC0010064 the values will be something like: 80|00|..|..|..|00|28|10. You need to modify the '28' (increase the value to undervolt). Do note that these values are in hex, so you count 28, 29, 2a, ..., 2f, 30 (i.e. 28->30 is eight steps!)

Wait, wait! Don't increase that 28 one by one, otherwise you are changing the frequency as well! Increase two by two! 28, 2A, 2C, 2E, 30. Bits 15 to 9 on the MSR are the vid, 8-4 the core frequency divisor most significant digit ! So 29 means a 1 in bit 8 (i.e. the previous to last two digits in the register are bits 15 to 8, and cover just a little bit more than the vid).

Quote:

Note that you need to change pstate before your changes 'take'. I think rw-everything is scriptable, so you can make it apply the undervolted values automatically (you can even add it as a scheduled task on startup to avoid the UAC prompt!)

And that, when you apply, if a single core is in another P-state, then the CPU will choose the highest voltage (lowest vid) of both.

Quote:

@thierryg: I created a little bash script for undervolting, simpler than compiling a program. It's something like:

Still need to find out how to run it as root at startup but I think this should work.

Run it from /etc/rc.local, for example.

Nice touch the use of cpufreq-selector. I left it out; it changes P-states often enough to have the changes apply sooner than later.

What I've done is a simple C program with has the following interface:

Code:

./undervolt -p 0:0x1A -p 1:0x1A -p 2:0x35

I'm slowly adding to it a cpu type check, a MSR status check, and maybe the switch to P-states to make sure the changes are applied. It's more involved than your shell script, but not by much.

Quote:

I don't know of any libraries that provide access to wrmsr/rdmsr on windows. These are ring-0 instructions and require a (signed) kernel driver - something should exist but I haven't been able to find it yet. (I've only found out about WinIO but I don't think this provides access to those instructions).

Yes, I had a colleague brief me at lunch how messy it would be for me to use the x86 assembler instructions (rdmsr and wrmsr) instead of the msr kernel module

i downloaded the program and had a bit of a try, looks like it'll be pretty easy even for a software illiterate like me, the detailed instructions helped greatly.i'll try if for real tonight when i get home, much easier to hear the fan and ill have my desktop in front of me in case i mess up.

now some questions:i figured that the addresses 0xC0010064/65/66 correspond to the p states 0-2, so what is the address 0xC0010071 for?i need some help on how to enable the quiet fan profile, i've got the ec window open but i don't know how to find the ec addresses 0x5A and 0x5B... though i wouldn't be surprised if i was in the completely wrong section...

i figured that the addresses 0xC0010064/65/66 correspond to the p states 0-2, so what is the address 0xC0010071 for?

0xC0010071 contains a lot of information on the P-states. Of interest, its end (bits 15 to 0) list the values for the current P-state in the same way they are in the P-state register (that is, if the end of your P-state register is 2810, when this P-state is active on both core, the end of the register 0xC0010071 will be 2810). Just before that part, bits 18:16 of 0xC0010071, you have the current P-state.

The bits before in 0xC0010071 have things like the max / min ViD, max frequency, is a P-state change underway, which P-state is used after a reset, etc... Of note is the fact that the max frequency listed is 3.2GHz, which could make either overclocking possible / or hp being ready to use higher specd zacate processors.

I have started a sourceforge project, undervolt, with the source code for the undervolt program listed above. Now I need to find out how to do a release!

i've figured most of it out now, i can activate the quiet profile and undervolt

undervolting only at 1.6ghz so far and i've reached 0x40 which is 1.15v, orthos stable for 5+ minutes(it's late), it seems that each step up shaves off 0.015v. temp difference is 6C, 67C v 73C, stock v is 1.3, interestingly 73C bumps up the fan speed a notch.

how should i go about stress testing the minimum and middle p states? orthos/prime maxes out the cpu so that only tests the p0 state.

edit: with the slower fan i've started noticing the hdd, it's surprisingly loud for a laptop hdd, a bad combination of 7200rpm spindle speed, hard mounting and chassis resonance i suspect.

max undervolt @1.6ghz that i could get was 0x4A which was 1.087v (5min orthos stable), any lower would result in an immediate lock. temps maxed out at an impressive 61C.for kicks i played some hd video, according to amd system monitor this stressed the gpu about 30%, temps jumped to 63C.

at p2(800mhz) i undervolted to 0.8v with no problems, no stress testing though, idle temps went as low as 45C which was the lowest i'd ever seen, though it seems that temps plateaued there pretty early.

max undervolt @1.6ghz that i could get was 0x4A which was 1.087v (5min orthos stable), any lower would result in an immediate lock. temps maxed out at an impressive 61C.for kicks i played some hd video, according to amd system monitor this stressed the gpu about 30%, temps jumped to 63C.

That's *very* impressive!

Quote:

at p2(800mhz) i undervolted to 0.8v with no problems, no stress testing though, idle temps went as low as 45C which was the lowest i'd ever seen, though it seems that temps plateaued there pretty early.

45C is the cutoff point for the CPU fan in the quiet profile, so the plateau sounds logical.

unfortunately battery life is just too hard to measure, with such a low powered system though every watt counts and i don't doubt that there will me an appreciable increase in battery life.

the hdd noise is disappointing, very close to a 7200rpm 3.5" hdd.. and not a current gen one but an old ball bearing one!

i haven't figured out an easier way to undervolt other than launching read & write and manually punching in the new values, there's a save option but i don't know what to do with the resulting file... any suggestions?

unfortunately battery life is just too hard to measure, with such a low powered system though every watt counts and i don't doubt that there will me an appreciable increase in battery life.

I've been using it like that for a few days now, on and off from the mains, and it seems to give a bit more of battery life, even as I maintain highest brightness and wifi on.

Quote:

the hdd noise is disappointing, very close to a 7200rpm 3.5" hdd.. and not a current gen one but an old ball bearing one!

i haven't figured out an easier way to undervolt other than launching read & write and manually punching in the new values, there's a save option but i don't know what to do with the resulting file... any suggestions?

Hum. I don't know how this rw-everything tool can be scripted. Yes, there seems to be hints of scripting but, well, this Windows is unknown territory for me

just activating the quiet profile without hp thermal assistant is a big win for me. i could finally uninstall hp support assistant(big piece of poop) which it was part of, and activating it this way seems permanent. before, the profile would automatically go back to optimized after a reboot.

just activating the quiet profile without hp thermal assistant is a big win for me. i could finally uninstall hp support assistant(big piece of poop) which it was part of, and activating it this way seems permanent. before, the profile would automatically go back to optimized after a reboot.

Oh, so you have this behavior too? For a few reboots, I would check the register, and yes, it kept the setting, which is very convenient.

(Note: replace the 38, 3C and 74 values with the ones you found in your undervolting tests! These are specific to the E-350 processor, so please make sure you use the correct MSR values if you use a different processor)

3. Open the task scheduler and add a new scheduled task with the following parameters:- Name: "Zacate Undervolting"- Run whether user is logged in or not- Run with highest privileges- Action: C:\[Path to rw-everything here]\rw.exe /Command=ZacateUndervolting.rw /Logfile=log.txt- Working directory (found when creating the action): C:\[Path to rw-everything here]- Trigger: On Startup

And that's it! Restart and your undervolting will be applied automagically. Just stash rw-everything somewhere out of the way and make sure you modify the scheduled task if you ever move the program folder.

Quote:

just activating the quiet profile without hp thermal assistant is a big win for me. i could finally uninstall hp support assistant(big piece of poop) which it was part of, and activating it this way seems permanent. before, the profile would automatically go back to optimized after a reboot.

Indeed, that's a big win already!

EC values are permanent. However, if you ever need to reset them (because e.g. the system doesn't boot), remove the power cord, remove the battery, remove all USB devices and press the power button for 10-15 seconds. This will reset them to their defaults.

Sorry for the double-post, I just wanted to add that I am using a SSD which indeed makes a difference noise-wise. Using the quiet fan profile, the HD used to be the biggest noise-maker under normal use. Now that I've swapped in the SSD, noise is back to the fan (which runs at 1500rpm at the lowest setting).

With a SSD, you can expect an additional 15-20' of battery length and the system will also become more responsive (even though the HDs in the dm1z are actually pretty fast).

Now, the next step for me is to find a way to reduce fan speed to 1000rpm. This should still help cool the system (I've tried running fanless but temperature quickly exceeds 65C under normal use, which I don't like) but should also reduce noise to the point where it's undetectable in all but the most silent environments. It would also be nice if we could undervolt the GPU, since that is the cause of at least 50% of the CPU power consumption.

Another thing I've noticed is that my Ubuntu installation has stopped obeying my undervolting commands. As soon as a use wrmsr, all VIDs get locked to 28 (the highest setting!) and temperatures rise significantly! Could this be the cause of the power bug phoronix is talking about? (But I did my undervolting tests no linux, so I'm surprised by this behavior).

Adding a SSD is a step I'm considering too. And buying an external DVD drive; since the netbook trend started a few years ago, we're now running out of dvd drives in the house since the last three systems we bought came without any (including my wife's 13"3 notebook).

The next step I've been thinking about is yes GPU undervolting. I've tried a small C program found on the phoronix forums, and it list two profiles for the ATI 6310, and a voltage range 925-1000mV, but the profile 0 is already at 925mV I will have a look at ATI documentation and if it sounds easy enough, I'll try.

Quote:

Another thing I've noticed is that my Ubuntu installation has stopped obeying my undervolting commands. As soon as a use wrmsr, all VIDs get locked to 28 (the highest setting!) and temperatures rise significantly! Could this be the cause of the power bug phoronix is talking about? (But I did my undervolting tests no linux, so I'm surprised by this behavior).

One thing I noticed with your instructions is that the cpufreq-selector commands you are using only apply to the first CPU, not to both. You need to use option -c 0 and -c 1 to touch both cores. To be honest, I don't even bother changing the P-state before writing the new Vid values, sooner or later they will be active due to all the P-state changes.

I also noticed that the two cores seems to have their MSR registers linked one way or another, since when my program write the Vid for core 0, this also changes the Vid for core 1 as well.

bsod!guess i was a bit overzealous with my undervolt, 30min of orthos isn't worth much i can't be bothered stress testing again so i just increased the voltages by a notch or two, no problems for 1hr+ now. currently 1.125v, 0.975v and 0.8v.

i followed the instructions from StApostol and i've got it to undervolt automatically at login now... reminds me of the good old k8 crystal cpuid days.

(Note: replace the 38, 3C and 74 values with the ones you found in your undervolting tests! These are specific to the E-350 processor, so please make sure you use the correct MSR values if you use a different processor)

3. Open the task scheduler and add a new scheduled task with the following parameters:- Name: "Zacate Undervolting"- Run whether user is logged in or not- Run with highest privileges- Action: C:\[Path to rw-everything here]\rw.exe /Command=ZacateUndervolting.rw /Logfile=log.txt- Working directory (found when creating the action): C:\[Path to rw-everything here]- Trigger: On Startup

And that's it! Restart and your undervolting will be applied automagically. Just stash rw-everything somewhere out of the way and make sure you modify the scheduled task if you ever move the program folder.

Quote:

just activating the quiet profile without hp thermal assistant is a big win for me. i could finally uninstall hp support assistant(big piece of poop) which it was part of, and activating it this way seems permanent. before, the profile would automatically go back to optimized after a reboot.

Indeed, that's a big win already!

EC values are permanent. However, if you ever need to reset them (because e.g. the system doesn't boot), remove the power cord, remove the battery, remove all USB devices and press the power button for 10-15 seconds. This will reset them to their defaults.

Great!(Note: replace the 38, 3C and 74 values with the ones you found in your undervolting tests!--How can i find in my undervolting tests.

Reno, you're welcome. I checked and your post is well done. One question: when you use rw-everything, do you change both CPUs or only one ?

porkchop, I had too lockups last night and had to raise my p2 voltage a notch. It seems a good stress test is a lengthy compilation, such as compiling a large C++ program. And I also have a K8 for my HTPC, undervolted in a similar way but with cpupowerd.

thierryg, I tried both and I had the same result. If I changed one register, both are changed. Like you said the two cores seems to have their MSR registers linked.But, in doubt, I change MSR registers for the two core.

I reset the EC values( press the power button for 10-15 seconds). How can i check that it is the defaults?

THESE VALUES ARE NOT TEMPERATURES, DO NOT CHANGE THEM LIKE THIS! (Sorry for shouting, need to make this extra clear).

These value control the voltage in your CPU. This is a process called undervolting and you must be very careful while doing it (search google for "undervolting tutorial" to find how to find the correct values for your CPU). The general idea is that you run a CPU stress test and lower the voltage until it crashes. Once you find the lowest safe voltage for your CPU, you can use the process in the previous posts to apply them and reduce CPU temperatures.

Fortunately, the changes you made were not dangerous and a simple reboot is enough clear them (these are not EC values and a simple reboot will clear them). You must be very careful when changing voltages, because if you mistype a digit an raise the voltage instead of reduce it, you can fry your CPU. You were very lucky here!

Unfortunately, there is no direct fan control for dm1z at this point. The best you can do is use HP Coolsense to set the cooling profile to "quiet".

that's me back again, with some info about undervolting the GPU part of the E-350, and a request for tests and help.

So, it seems that the North Bridge is providing power to the GPU part, through two NBP-states: NbP0 and NbP1. In the same way as a CPU, NbP0 is the high performance mode, NbP1 the low performance one. There is a Vid and a COF for each state as well.

Starting with a value of 998ac226, I increased vid one by one with the values: 998ad226 998ae226 998af226 998b0226.

Code:

setpci -s 00:18.3 0xDC.L=998b2226

But, I'm not sure this has any effect. It does not change what GPU tools tell about the GPU status (voltage stays at 925mV(NbP1 or GPU Profile 0) and 1000mV(NbP0 or GPU Profile 1)). So far, it's hard to see temperature differences (Linux lacks good GPU benchmarks!). Additionally, any sleep will reset NbP1 Vid to 0x32.

So, if anybody is keen to try and go further, under windows or Linux. It seems setpci may be compiled under Windows...

Who is online

Users browsing this forum: No registered users and 2 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum