My long reply disappeared somehow. That really sucked since I spent too much time typing it but I'll do it again, whatever.
I have an i5-7300U Surface Pro 2017 I rolled back to older UEFI firmware that allows undervolting and I'm able to do pretty much anything I want with it. The microcode reported in TS is B4. To roll back you need this Reddit thread:
web.archive.org/web/20220514222118/https://old.reddit.com/r/Surface/comments/no3rz4/how_to_fix_surfacepro4_type_cover_issue_battery
open regedit
- Navigate to Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareResources and back it up
- Delete all keys that is except for {137F5D0A-B53B-45B3-AA77-8E6671ACE16B} and {C57F56BE-D61E-454E-97DD-8259F1EC7860}
- Add REG_DWORD entry in each one with Policy as key and 1 as value
I've quoted the most important instructions. The OP uses a Surface Pro 4 so the instructions are not an exact match. You do not have to delete any keys (probably), you just need to go to FirmwareResources and set the Policy=1 DWORD in every key nested inside. I *think* you only need to set it for Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareResources\{A9C020DF-114D-420E-8890-A1436DF3199C} on the SP2017 but don't quote me.
The gist of the instructions: you go to device manager and uninstall + delete the drivers for everything listed under Firmware. You may also need to manually delete all the firmware files in C:\Windows\Firmware. You set the Policy=1 DWORD under all the relevant keys, this allows you to rollback. You install an older Microsoft firmware pack and reboot. If you are successful Windows will flash the older UEFI files and you'll be able to undervolt again.
Below is the firmware pack you need to find on Microsoft's website and the UEFI bin it installs. You can find the files here:
microsoft com/en-us/download/details.aspx?id=55484
Name: SurfacePro_Win10_17763_20.072.21326.0.msi
Size: 585203712 bytes (558 MB)
SHA256: EE305C8BE36BE92C0E9D301BC7C340C5E59BE7C07FFA16CF5BF5D56CD83F4C07
Name: SurfaceUEFI_235.3261.768.bin
Size: 4458731 bytes (4 MB)
SHA256: ED3B4E84EA42502E551E11824710F4BB8A53984961013DAF1F5FBA3F617B898C
If you see Windows update download firmware files you need to manually delete the newer UEFI bins it acquires so Windows does not flash a new UEFI on boot. Go to C:\Windows\Firmware and delete and SurfaceUEFI_xxx.bin file that is newer than SurfaceUEFI_235.3261.768.bin if they appear. You may also try to manually edit the firmware version info in the registry so it always thinks you are using the latest firmware. You can mix and match different firmware files with your older UEFI but this may cause serious problems down the road. Some combinations broke my camera and I had to restore a backup and I never touched that again.
I use these Throttlestop settings with my i5-7300U:
CPU Core -94.7 mV
CPU Cache -80.1 mV
System Agent -80.1 mV
Intel GPU -97.7 mV
iGPU Unslice -97.7 mV
Some of these values may or may not need to be coupled for the undervolt to work. In general the CPU cache is weaker at undervolting than the core. If you want to fix EDP throttling flashing for a few milliseconds increase iccMax to 43.50 A on CPU core.
You should use the balanced power profile. TS can enable High Performance mode but I've benchmarked it and it uses slightly more watts with slightly WORSE performance.
In general my laptop never throttles under normal use with this undervolt. But for running high loads or something unrealistic like Prime95 I use a profile that kneecaps the 2-core turbo speed to 3.0 GHz down from a max of 3.5 GHz. I'll explain why.
The weak point of the fanless i5-7300U SP2017 is the charging circuitry. If you are plugged in high wattage loads around 25W will cook the charging circuitry in 5-10 minutes and constantly cause the laptop to BD ProcHot throttle. I rarely run into this problem since I don't run loads like that often, but you can either kneecap the turbo clock speeds or kneecap the max wattage.
If you turn off BD ProcHot your laptop cooks itself until it spontaneously turns off. When you turn it back on it displays a thermometer warning and refuses to turn back on until the charging circuitry cools down enough.
To greatly exceed the 25W limit you hit TPL and increase PL1 and PL2 wattage from 25W to 35W. But as I mentioned before this will cook your charging circuitry if you are charging and is highly unproductive. You'll also run into other throttles like CPU prochot at 90C.
There is also a glitch to uncap the HD 620 GPU so it can use 25W and above for one computer session. Get the latest intel GPU drivers as as .zip. Go to device manager >display adapters > Intel(R) HD Graphics 620 > Update Driver > browse my computer for drivers > Let me pick > Have disk > select your extracted drivers. Install the drivers and reboot. Until you shut down or reboot your GPU can use unlimited watts, try it out in Furmark. With the GPU uncapped the framerate slightly increases and the GPU draws between 25-30W without any help from the CPU. This is just a fun novelty, not very useful since the wattage will cause BD ProcHot faster.
Here's my TS settings and a comparison of a TS Bench (above) and a Prime95 run (below). Not sure why my PL2 limit is set to 35 maybe I did that.
I was able to hit 28-30W and momentarily spike to 42.4W. I used the GPU uncap glitch, uncapped all the turbo limits, used High Performance and ran Prime95 and Furmark at the same time.