FreeBSD tool for CPU undervolting

Hi!

Is there a tool for FreeBSD to undervolt an Intel SpeedStep compatible CPU similar to RMClock on Windows and linux-PHC on Linux?
I need such a tool in order to be able to lower the voltage of my CPU by ~0.25V to use my laptop comfortably. With stock voltages the CPU is constantly overheating and the fan is working at max speed at all times, not being able to cool it down.
My laptop is running stable with such settings for over 2 years now on both Windows and Linux and I wanted to give FreeBSD a try.
I know I could possibly patch the BIOS to fix the problem permanently but modifying it is quite risky.

The laptop is HP nc4010.
CPU is Pentium M 745 (Dothan, 1.8GHz, 2MB cache).

Thanks in advance
 
I'm interested in a MSR tool (rdmsr/wrmsr) for undervolting!

On Linux I did this for -100.6 mV Offset Voltage and max IccMax on a i5-8400H:

Code:
wrmsr --all '0x150' '80000011F3200000'
wrmsr --all '0x150' '0x80000017000003ff'
wrmsr --all '0x150' '80000211F3200000'
wrmsr --all '0x150' '0x80000217000003ff'
wrmsr --all '0x150' '80000411F3200000'
wrmsr --all '0x150' '0x80000417000003ff'

I think I saw some tools that use wrmsr in code for MSR writing, but I'm looking for a userspace app to do stuff like that and PROCHOT directly.
 
I'm interested in a MSR tool (rdmsr/wrmsr) for undervolting!

On Linux I did this for -100.6 mV Offset Voltage and max IccMax on a i5-8400H:

Code:
wrmsr --all '0x150' '80000011F3200000'
wrmsr --all '0x150' '0x80000017000003ff'
wrmsr --all '0x150' '80000211F3200000'
wrmsr --all '0x150' '0x80000217000003ff'
wrmsr --all '0x150' '80000411F3200000'
wrmsr --all '0x150' '0x80000417000003ff'

I think I saw some tools that use wrmsr in code for MSR writing, but I'm looking for a userspace app to do stuff like that and PROCHOT directly.
how do you know the magic numbers to put in there to make that work? That just looks like random numbers to me.
 
how do you know the magic numbers to put in there to make that work? That just looks like random numbers to me.
I got the numbers from ThrottleStop on Windows: https://github.com/mihic/linux-intel-undervolt?tab=readme-ov-file#finding-voltage-offsets

They look fine and apply with wrmsr, but I didn't figure out how to really check if it was applied on Linux (ThrottleStop on Windows would update detected values instantly with convenient GUI, but MSRs on Linux apparently require comparing values and knowing what they mean with the raw MSR numbers)

I applied the MSRs on Windows with msr-cmd.exe similar to Linux and ThrottleStop showed the changes, so I'm thinking they apply fine on Linux :p

Code:
"msr-cmd.exe" -A -l write "0x150" "80000011F3200000"

Code:
wrmsr --all '0x150' '80000011F3200000'



My BIOS has different voltage offset options hidden, so ideally I'd like to set the undervolts there with setup_var (little tricky trying to set those with +/- offsets through IFR dumps, and checking if it actually applies to the OS)
 
Back
Top