A few days ago, I undervolted my X120e's E-350, based on the experiences and trial/error of posters with the HP dm1z on SilentPCReview, documented in this thread.
So, before I go on, I'd like to thank soybean84 for posting his experience in the X120e Owner's Lounge thread, as well as the contributers in the SPCR thread: StApostol, thierryg, porkchop, among others.
Undervolting the X120e's E-350 yielded very successful results for me: temperatures are down, and therefore the fan stayed off entirely when idle. At maximum load (tested using Orthos), the highest temperatures achieved were 69C at an ambient temperature of 17-20C, and the fan spinning on the second-lowest speed. Idle temperatures hovered between 55-60C. All temperatures are measured through TPFanControl
Here's a brief overview of what I did, again adapted from the SPCR thread:
Required:
- Computer with the E-350 APU (may not work the same for another CPU; instructions specific for X120e but any E-350 models should work)
- RW-Everything (by Jeff Chan)
- Orthos Prime (by Johnny Lee)
- TPFanControl (by troubadix)
- Windows 7 (if you are running Linux, see Metroid III's guide here)
IMPORTANT: it is very possible to damage your computer if you mess around with RW-Everything if you don't understand fully what you are doing. See the SPCR thread for more information.
1.- Okay, so assuming you don't know a whole lot about all the technical details of how to undervolt the CPU: just follow the next few steps to the dot, and you should be fine.
2.- Download and install RW-Everything. In Windows Explorer, navigate to the folder where it is installed. That should be:
3.- Create a new text file (.txt) on your desktop and open it up in Notepad. Copy and paste the following text exactly into the Notepad window:Code:C:\Program Files (x86)\RW-Everything
NOTE: If you don't fully understand what you are doing, do NOT modify anything in the above text. You could get unexpected behavior or even worse, fry your CPU.Code:>cpu 1 >wrmsr 0xc0010064 0x80000126 0x00003810 >wrmsr 0xc0010065 0x8000011A 0x00003C12 >wrmsr 0xc0010066 0x8000028C 0x00007430 >cpu 2 >wrmsr 0xc0010064 0x80000126 0x00003810 >wrmsr 0xc0010065 0x8000011A 0x00003C12 >wrmsr 0xc0010066 0x8000028C 0x00007430 >RwExit
4.- Save the file as whatever you like. I will call ZacateUndervolting.txt. Now, change the file extension to .rw, so the file name is ZacateUndervolting.rw.
NOTE: If you do not see the file extension, you will have to go to a Windows Explorer window, press Organize > Folder and Search Options > View, and untick "Hide extensions for known file types."
5.- Move the ZacateUndervolting.rw file to the directory where RW-Everything is installed. You may need to provide administrative privileges.
6.- This step ensures that the custom voltages are applied at every startup. Open your Start Menu and click Run. Paste the following text and press Enter to open the Task Scheduler:
7.- Choose "Create New Task" in the bar at the right. Make the following changes in each of the following tabs:Code:Taskschd.msc
A) General:
- Write a useful name, maybe "Zacate Undervolting"
- Choose "Run whether user is logged on or not"
- Check "Run with highest privileges"
- Choose "Windows 7, Windows Server 2008 R2" in the dropdown box
B) Triggers:
- Press "New"
- In the dropdown box, select "At startup"
- Press "Okay"
- Press "New"
- In the dropdown box, select "On workstation unlock"
- Press "Okay"
NOTE: The second trigger is to ensure the voltages are applied after resume from standby--probably only works if you have a password set, though(?)
C) Actions:
- Press "New"
- In the dropdown box, select "Start a program"
- In the "Program/script" box, put the path to the RW-Everything executable, which is likely:
- In the "Add arguments" box, paste (replacing the file name if you have a different name):Code:C:\Program Files (x86)\RW-Everything\rw.exe
- In the "Start in (optional)" box, paste:Code:/Command=ZacateUndervolting.rw /Logfile=log.txt
- Press "Okay"Code:C:\Program Files (x86)\RW-Everything
D) Conditions:
- Make sure all boxes are unchecked
E) Settings:
- Check "Allow task to be run on demand"
- Check "Run task as soon as possible after a scheduled start is missed"
- Check "If the task fails, restart every" and keep the default settings (1 minute, 3 times)
- Uncheck the rest
Press "Okay" when you are done, to create the scheduled task.
8.- If you are using Lenovo's ThinkVantage Power Manager, open PM and make sure you are in "Advanced" mode. Make sure that the power plan you are currently using has, under the "System settings" section, "Adaptive" selected for the "Maximum CPU Speed" for both Battery and AC. If not, you can either change the settings of the power plan, or create a new custom plan (which I suggest) with the above settings.
If you are using Windows 7's power management, make sure the setting is on "Balanced."
NOTE: This setting has to be applied because your custom voltages will not be applied until the CPU cycles through a power state, so you have to be on a power plan that allows power state cycling (ie: not lowest/low/high performance power states).
9.- Restart your X120e.
10.- Install and open CPU-Z. Open Task Manager (Ctrl + Shift + Esc) to watch your CPU load. Wait for your computer to get to idle.
If your CPU is properly undervolted by these settings, the "Core VID" value in the CPU tab of CPU-Z should be 0.825 at idle.
11.- Stress testing to ensure stable undervolt: technically, these settings are still pretty conservative, and you shouldn't have any instability issues, but you should always check nevertheless.
Open Orthos. In the "Test" dropdown box, select "Small FFTs - stress CPU," then press "Start" and let it run. The Orthos window should now say "GO."
Watch your CPU usage (should stay at 100%), your temperatures in TPFanControl, and the CPU-Z window. At load, these settings should have your voltage at 1.200 peak. Your temperatures should stabilize after a while--mine usually stabilize at 65-69C, depending on ambient temperature.
After about 5 minutes, you should probably be good, although I let it run for 15 minutes just for good measure. In the event that you do get "random" BSODs later, however, you should bump each of the voltages up one step, one at a time, to see what is causing the instability.
And then, you're done!
-
-
Further Undervolting Customizations (More Advanced):
The three values I provided in my above code work nicely, and should have no stability issues. It is possible, however, to undervolt further should you wish to. In that case, the following may be of interest to you.
IMPORTANT NOTE: Again, messing with these values can potentially damage your computer if you do not know what you are doing. Obviously, I take no responsibility for that, so make sure you understand what you are doing, and do not underestimate the importance of reading directions!
First, a bit of an explanation of what the "important" parts of the above code mean:
Code:>cpu 1 >wrmsr 0xc0010064 0x80000126 [U]0x0000[B]38[/B]10[/U] [COLOR="#8b0000"](P0)[/COLOR] >wrmsr 0xc0010065 0x8000011A [U]0x0000[B]3C[/B]12[/U] [COLOR="#8b0000"](P1)[/COLOR] >wrmsr 0xc0010066 0x8000028C [U]0x0000[B]74[/B]30[/U] [COLOR="#8b0000"](P2)[/COLOR] >cpu 2 >wrmsr 0xc0010064 0x80000126 [U]0x0000[B]38[/B]10[/U] [COLOR="#8b0000"](P0)[/COLOR] >wrmsr 0xc0010065 0x8000011A [U]0x0000[B]3C[/B]12[/U] [COLOR="#8b0000"](P1)[/COLOR] >wrmsr 0xc0010066 0x8000028C [U]0x0000[B]74[/B]30[/U] [COLOR="#8b0000"](P2)[/COLOR] >RwExit
The bolded values above are the different voltage values for each of the three power states of the E-350 CPU: P0, P1, and P2.
P0 (1600MHz) is the maximum power state, and will be the voltage while at high CPU load.
P1 (1280MHz) is the transition state, and will be the voltage when moving from P2 to P0, and at medium load.
P2 (800MHz) is the minimum power state, and will be the voltage while idling.
The E-350 is a dual-core processor, which is why there are two identical blocks of code, one for each CPU.
The final line, predictably, commands RW-Everything to close after execution of the code.
Basic Premise: To undervolt further, the objective would be to increase the hex values associated with each of the power states.
There are, however, some complexities with this:
- The values are hexidecimal values. For those unfamiliar with it, counting starting from a value of, say, 38, would go 38, 39, 3A, 3B, 3C, ... 3F, 40.
- Each voltage increment corresponds to every other counting hex value. So, to lower P0 by one step would change it from 38 to 3A, not 39.
- You must change the value for CPU1 and CPU2 to be the same undervolted value, otherwise, the lower VID (higher voltage) is taken, I believe.
- You must execute the task again (in Task Scheduler, highlight the task and press "Run") after saving the .rw file every time you edit it to apply the new voltages.
How Far To Go
I would advise taking one step at a time starting from the values I have in my first post, increasing the hex values to decrease the voltage. I suggest using CPU-Z to confirm the voltage has been applied successfully. At each step, you may encounter three different behaviors.
A) Everything seems fine. A few minutes of Orthos results in no abnormal behavior.
B) Everything seems fine. A few minutes of Orthos, however, results in an unexpected BSOD or freezing.
C) Immediate freezing/lockup after applying the new lower voltage.
For A, you're good to go--this should tentatively be a stable step. You could try going lower.
For B, you've likely found the threshold of instability. Bump the voltage up one notch and that will likely be the lowest stable undervolt for that power state.
For C, you've reached an unstable power state. Hard-shutdown your computer.
IMPORTANT NOTE: You may find it worthwhile to disable all the triggers for the scheduled task and run it only on demand, so you can simply reboot if you either BSOD or lock up, and then change the values in the .rw file. Otherwise, you may have to enter Safe Mode every time after you crash to change the values.
Finally, make sure you report back here and share the lowest values you've gotten for each power state. Good luck! -
I love you.
-
Hi I'd like to hear from people who have done this already? Hows that nasty fan noise doing? I only really use mine for surfing the net and this really appeals to me. Thanks for posting MidnightSun.
-
Personally, Fan does not bother me during normal operation.. I have been playing with this since last night, and i was able to get down to 1.150v for P2 state.. I personally like IntelBurnTest.. I ran 5 iterations at 1GB load. Each iteration takes about 300 seconds, and it's a decent way to test. I can't get P0 state to go lower then 0.8.. So, 0.825 is a good place to stop.. Once i found the minimum P2 state voltage, i am going to find the P1 state.. I will share my values once i am done with tweaking.
-
I'm happy so far, im stable at 0.825v
-
Help?
My Core VID is between 1.037 and 1.3v
Followed all instructions and I don't think I missed anything.
Task Scheduler says the task is running.
Also, in the *.rw file, the prompts should be there, right?
>cpu 1
>wrmsr 0xc0010064 0x80000126 0x00003810
>wrmsr 0xc0010065 0x8000011A 0x00003C12
>wrmsr 0xc0010066 0x8000028C 0x00007430
NOT LIKE THIS:
cpu 1
wrmsr 0xc0010064 0x80000126 0x00003810
wrmsr 0xc0010065 0x8000011A 0x00003C12
wrmsr 0xc0010066 0x8000028C 0x00007430
EDIT: In the course of messing about, it worked. I don't know what I did, but it works. THANK YOU!!
I'm not sure, but it might have been this part:
In the "Start in (optional)" box, paste:
C:\Program Files (x86)\RW-Everything\
I took out the last backslash, so it looks like this:
C:\Program Files (x86)\RW-Everything
Something so inconsequential couldn't have been the culprit, but if anyone else has trouble, try it. -
I got P0 down to 1.188V (3A) with similar stable runs on Orthos. I didn't test any further, though, since it was getting late.
Sometimes it does take a little bit of time for it to apply the voltages after startup, but after 5 minutes of idling, it should definitely be applied if everything went correctly.
Does running the task on demand (open Task Scheduler, select the task you created and press "Run") successfully undervolt?
EDIT: Nevermind, I guess -
-
Tsunade_Hime such bacon. wow
Nice work there MidnightSun, have you tried also running ThinkPad Fan Control along with the undervolting?
-
Just added some clarification and more details on further undervolting in my second post in this thread.
Yeah, I wasn't able to get any lower for P2, so 76 (0.812V) seems to be bottoming out. A P1 of 4C is stable for me now, but we'll see as well.
EDIT: Just BSODed at 3C after 10 minutes of OrthosGoing to step back up to my stable value of 3A.
-
This is unbelievable. I'm watching a video podcast in iTunes and temp is between 60-64degrees. ZERO fan noise because fan is completely off.
How awesome is LLano gonna be? -
The default configuration, which when the P0 state at 1.3v consumed nearly 18W's when I ran IBT for 5 Iterations.. The modified state of P0, which is set to 1.150v decreased the power consumption to 14.5W. These readings were acquired from Lenovo Power Utility... Pretty good savings, if you ask me..
-
You might want to back off the settings you gave in the notepad file in the first post. They're not unstable for me, but they're pretty close to the edge...I would imagine someone with a APU that's not quite as well binned could run into instability with those, and it would be worse if they were already applied at startup...
For reference, here's what I was able to get for p0 and p1:
p0 = 1.188v (0x3A)
p1 = 1.025v (0x54)
Going below that locks things up either immediately or after a few minutes. At least there's no sketchy middle ground with this CPU. I'm testing with LinX, which I've found to be a pretty good stability indicator. The voltages above were stable for three hours of LinX.
Also, thanks for the easy guide to scripting it! That'll save me some time. -
Overall, though, as long as you're reducing the voltage, it's not too dangerous--the worst that will happen is a lockup, at which point if you have it set to startup (which I recommend against in my second post, when you're tweaking), you should boot to Safe Mode (F8) and change it there.
Right now, my states are:
Code:P0: 1.188V (3A) P1: 1.063V (4E) P2: 0.812V (76)
-
I followed all the steps correctly, but on reboot CPU-Z version 1.57 shows my CORE VID at 1.300 V and never changes even after letting it sit for 30 minutes, running at full load, or idle.
A log file does appear in RW-Everything with this:
Code:Current CPU = CPU1 Write MSR 0xC0010064 : High 32bit(EDX) = 0x80000126, Low 32bit(EAX) = 0x00003810 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 10000000-00000000-00000001-00100110-00000000-00000000-00111000-00010000 Write MSR 0xC0010065 : High 32bit(EDX) = 0x8000011A, Low 32bit(EAX) = 0x00003C12 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 10000000-00000000-00000001-00011010-00000000-00000000-00111100-00010010 Write MSR 0xC0010066 : High 32bit(EDX) = 0x8000028C, Low 32bit(EAX) = 0x00007430 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 10000000-00000000-00000010-10001100-00000000-00000000-01110100-00110000 Current CPU = CPU2 Write MSR 0xC0010064 : High 32bit(EDX) = 0x80000126, Low 32bit(EAX) = 0x00003810 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 10000000-00000000-00000001-00100110-00000000-00000000-00111000-00010000 Write MSR 0xC0010065 : High 32bit(EDX) = 0x8000011A, Low 32bit(EAX) = 0x00003C12 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 10000000-00000000-00000001-00011010-00000000-00000000-00111100-00010010 Write MSR 0xC0010066 : High 32bit(EDX) = 0x8000028C, Low 32bit(EAX) = 0x00007430 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 10000000-00000000-00000010-10001100-00000000-00000000-01110100-00110000
Running Windows 7 x64. -
@Kalam: Perhaps it has something to do with sugarkang's problem + resolution earlier? I edited it out of my original post, since I realized I didn't have a slash in mine either.
-
Hmm, I've followed everything and even triple-checked to make sure I didn't miss anything, but my Core VID is still 1.300 V. What could I be missing? The task scheduler says that the operation was completed.
EDIT: I seem to be having the same problem as Kalam. -
-
@MidnightSun:
Ya, I made sure that there wasn't a slash at the end of that line. -
I've tried with a slash and no slash, but it still stays at 1.3 after I restart it and let it idle for about 10 mins.
-
Okay, try this: open Task Scheduler, and then if the task you wrote currently says "Running," end the task. Then, select it and press "Run." Are the new voltages applied?
-
EDIT : I stopped and ran it again. It now says Running, but the Core VID is staying at 1.300 V
My log file is -
What power plan are you on in Power Manager? Make sure you are on Balanced (and not on Low/Lowest/High Performance), which allows dynamic switching between power states.
-
CPU-Z still reports 1.300 V.
Closing Task Scheduler and re-opening it shows the status as Ready.
I'm running the Power Source Optimized Power Plan according to the Lenovo ThinkVantage Power Manager.
on a side note, I'm running the 64 bit version of CPU-Z. -
You should add a little note in the first post about that for others with problems.
-
-
I run Balanced on my ASUS but not the x120e because I thought the Power Manager was better. I was also on Power Source Optimzed like Kalam.
-
-
-
Should definitely add that to the guide. -
-
-
So i think i am pretty much done playing with this
... Here are my results..
P2 State, 800MHz, 0.812v (76). I didn't run any tests, since this state will never see %100 load.. The idle power was low as 5.7~6.1W's.
P1 State, 1280MHz, 1.0v (58). Ran IBT for stability. At full load, 12.3W the maximum power consumption. System never exceeded 62C, and fan never spun faster than 500rpm.
P0 State, 1600MHz, 1.150v (40). Ran IBT for stability. At full load, 14.7W was the maximum power consumption. CPU was around 67C.
Once i get sometime next weekend, i will try to perform similar tests to original state to see what the actual savings are..
During these tests, brightness was set to 2 (which is what i use most of the time, at home and at work), WiFi was active (Intel Centrino Advanced-N 6200), Bluetooth was Disabled. Other system specifications are 8GB Memory, Vertex 2 120GB SSD and F12 BIOS. Power values were acquired from Lenovo Power Manager. If time permits, i might also do similar, and measure the power consumption from the wall.
-
ok I removed my windows password and the application stopped working and Core VID went back to 1.300 V. I created another password and it worked again. I don't normally keep a password to log in to windows, is there a way to do the whole undervolting thing without having a password? Thanks
-
Yeah, your particular CPU seems to handle undervolting better than mine. The maximum stable undervolts I've gotten are below:
Code:>cpu 1 >wrmsr 0xc0010064 0x80000126 0x00003A10 >wrmsr 0xc0010065 0x8000011A 0x00004E12 >wrmsr 0xc0010066 0x8000028C 0x00007630 >cpu 2 >wrmsr 0xc0010064 0x80000126 0x00003A10 >wrmsr 0xc0010065 0x8000011A 0x00004E12 >wrmsr 0xc0010066 0x8000028C 0x00007630 >RwExit
-
jw8725,
Set a password for your user, then go to Run, and execute the following: "control userpasswords2". Once you see a dialogue, uncheck the box that reads " Users must enter a user name and password to use this computer.". By this way, you will have a password for your user, but will not asked unless you have a screen saver, or waking up from sleep/hibernate. It'll be bit more secured as well.
MidnightSun,
I don't think the power readings will be too much off. I have seen some E350's that went lower.. But this isn't so bad, i am happy with these values.. -
This might be why I had problems earlier. However, that doesn't explain why I'm on low power with my "power saver" profile. !!!! Is this not the greatest notebook ever now? Fan is off like 90% of the time.
-
I'm about to start changing the voltages to go even lower on my system and had trouble at first wrapping my head around the correct hex values.
I wrote this up on notepad to make sure I hit a correct value:
Code:P0: [b]38[/b] 3A 3C 3E 40 42 44 46 48 4A 4C 4E 50 P1: [b]3C[/b] 3E 40 42 44 46 48 4A 4C 4E 50 52 54 P2: [b]74[/b] 76 78 7A 7C 7E 80 82 84 86 88 8A 8C
To easily test voltages, I made a second file called ZacateUndervolting2.rw where I removed the >RwExit and can easily change the values and run it in Rw.exe in the Command window as a batch file. This also makes sure that if I crash my laptop, like what I just did with testing a P0 voltage, there are no problems restarting it since Task Scheduler uses the safe ZacateUndervolting.rw file.
This seems to be the best I could get:
Code:P0: 1.162V (3E) P1: 0.987V (5A) P2: 0.800V (78)
-
^ Pretty good results.
-
Awesome work MidnightSun! You cannot believe how happy your post has made me!
For what it's worth, my system freezes when P0 is set to 3A -- that is, the default configuration is the 'tipping point' for my P0. Looks like the default config is perfect for me
I might tinker around with the idle voltages, but it doesn't really matter that much.
Does anyone know what the default voltages are? Just curious.
Edit: I may have spoke too soon. Computer froze at 38 in IBT. Will try 36 :-( -
-
Edit: Froze at 36... sigh. Trying 34 now. -
Stable at 1.225V (34), well, at least for 40 minutes of IBT so far. Seems good enough for me.
So, not stable at the default 1.2V (38) or 1.212V (36) with my crappy chip :-( -
I decided to wipe Ultimate and installed the Premium 64 that came with it, its a bit laggy for me and so will be reverting back to a fresh install of Ultimate. Voltage hits 1.200V as soon as launch anything. -
1. I did a clean install Win 7 x64. I have 4GB of RAM and Vertex 2 SSD.
2. Installed as few Lenovo drivers as possible. Power management, wireless LAN and something else maybe? Windows update found everything else. I'm using AMD's AHCI and graphics drivers. 11.5 i believe.
3. TP Fan Control is set to default. I changed something in the *.ini file, I think. But that was just to run minimized at bootup. It runs in "smart mode" and I think that's default.
4. I turned off Bluetooth, but leave Wireless LAN on.
5. Power profile is in "power saver" mode. It may have been the reason I had difficulty getting it to undervolt, but it works.
Other than that, I might have gotten lucky with a slightly cooler chip. Or maybe because I just don't run many things? If I browse the internet or watch videos in iTunes, fan is mostly off. I haven't noticed between different levels of YouTube 360p / 480p / 720p etc.
Also, note that I have very few programs installed and I run very few things. This is just a netbook and I run most things on my desktop. X120e basically has Office 2010 on it, iTunes video podcasts and TweetDeck. I'm not going to bother putting Adobe Suite on here.
In this video, the fan was on at 2:00 (skip video to 2:00) and then remained off for most of the time. It may have turned on once during the time I was doing the review. -
What i noticed is that, whenever you input an odd hex value (like 33, 35..), it knocks the multiplier to 1.78. So your system runs at 178MHz.. Watch the multipliers every time you modify the values. -
-
-
I'm glad that worked for you jw8725.
I can call my setup pretty stable at this moment. I actually aggressively set the TPFanControl settings.. CPU does not exceed 70C on full load with fan running 400~500rpm. I ran IBT with Very High load, and 11 iterations..I logged the temperatures, and it did not exceed 70C..
Here is what i have for TPFan:
Undervolting the Thinkpad X120e
Discussion in 'Lenovo' started by MidnightSun, May 22, 2011.