Yeah, that works. Not sure where it’s getting the profiles from, though. Maybe it’s hardcoded into the python script somewhere?
Figured it out. It’s in the actual C:\Users[username]\AppData\Roaming folder. I thought I’d checked there but I guess not.
Also made sure editing that file works, and yeah, it does. Now I have it defaulting to a profile called “mine” which is slightly less aggressive than “deaf” but still pretty aggressive.
Here are my fan curves in fw-fanctrl config file if anyone wants to use them. I have default setting of “medium” and “low” for AC and Battery respectively. If I’m resting it on the couch or it’s a really hot day out, I’ll manually set it to “high” or “full”. “Full” is also what I set it to when I’m about to do some graphically intensive work.
{
“defaultStrategy”: “medium”,
“strategyOnDischarging” : “low”,
“strategies”: {
“low”: {
“fanSpeedUpdateFrequency”: 5,
“movingAverageInterval”: 30,
“speedCurve”: [
{ “temp”: 0, “speed”: 0 },
{ “temp”: 40, “speed”: 10 },
{ “temp”: 50, “speed”: 15 },
{ “temp”: 65, “speed”: 25 },
{ “temp”: 70, “speed”: 35 },
{ “temp”: 75, “speed”: 50 },
{ “temp”: 80, “speed”: 100 }
]
},
“medium”: {
“fanSpeedUpdateFrequency”: 5,
“movingAverageInterval”: 30,
“speedCurve”: [
{ “temp”: 0, “speed”: 15 },
{ “temp”: 40, “speed”: 25 },
{ “temp”: 55, “speed”: 40 },
{ “temp”: 65, “speed”: 50 },
{ “temp”: 70, “speed”: 80 },
{ “temp”: 75, “speed”: 100 }
]
},
“high”: {
“fanSpeedUpdateFrequency”: 2,
“movingAverageInterval”: 5,
“speedCurve”: [
{ “temp”: 0, “speed”: 15 },
{ “temp”: 30, “speed”: 25},
{ “temp”: 40, “speed”: 50 },
{ “temp”: 50, “speed”: 75 },
{ “temp”: 60, “speed”: 100 }
]
},
“full”: {
“fanSpeedUpdateFrequency”: 2,
“movingAverageInterval”: 5,
“speedCurve”: [
{ “temp”: 0, “speed”: 15 },
{ “temp”: 30, “speed”: 50},
{ “temp”: 35, “speed”: 75 },
{ “temp”: 40, “speed”: 100 }
]
}
}
}
I just want to make it clear to anyone reading this thread that with test signing enabled in Windows 10/11, you are leaving your PC open to some pretty nasty viruses, malware & loggers, so make extra sure that you vet everything before you run it from that point on since malicious payloads could install bad drivers that don’t have virus signatures for them yet since by default drivers have to be signed by a legit Microsoft trusted certificate to be accepted.
Basically, anyone can sign their driver with whatever unverified certificate they want, and Windows will load the driver into the kernel, giving it god-level access to everything including the memory space of other applications & services running usermode and kernelmode code. So, just play it extra safe with test signing enabled on your system moving forward & make sure you run everything from virustotal.com first & ensure it’s from a reputable source since you can’t just enable it for the one driver you want to load; you basically enable it for everything or nothing at all, hence the warnings you get when you enable it.
As long as people understand that, enjoy this cool GitHub project that allows the fans to be controlled directly. I’m tempted to go poke through the source code myself and see how they are communicating with the fans in the first place because it might be possible to just export that code into a standalone application or service that runs as “administrator” or as a service to gain a little more access than admin allows so you don’t have to load a full driver into the kernel which requires test signing enabled opening your system up.
Most people already know this I’m sure, but I just want to make sure others that read this post don’t disable the test signing thinking it’s no big deal. There is a reason why Microsoft doesn’t allow test signed drivers to be installed by default. Because there are a lot of viruses out there that use drivers because of their incredibly low level of access to system resources to do bad things. Also, this doesn’t just apply to executiables or drivers that could install bad drivers in the future but also things like buffer overflows in media applications allowing viruses to be deployed through malicious video content or even video game roms that are tainted that use bugs in the emulator running as administrator to install their payloads silently. Windows 11 is pretty heavily protected with Windows Defender but it’s not magic or bulletproof, especially when it comes to drivers since they are a little bit of a blind spot to virus detection since Drivers are expected to do crazy things like access memory directly or send commands to fixed memory addresses, etc so they aren’t scrutinized as much.
Happy fan modding! I would be curious to see how much this helped with temps if at all @henrytr? Also, so long as the hardware isn’t throttling you shouldn’t worry about temps too much. The truth is laptops run at insane temps due to their formfactor and modern GPU/CPU’s can run at insane temps before they start to throttle to accommodate for this. However, in the future it would be cool to have a Framework 16 BIOS that allows us to directly control all the fan curves from the BIOS since that is something most modern ATX motherboards allow you to do on full size PC’s which is super handy to get the airflow in the case right.
I guess in my head I just imagine it can’t be good for the components to be running at 80C continuously even though that’s kinda how they’re designed to be run. Just personal preference, I suppose.
Also, I’ve noticed that with the dGPU more of the air flows out the back than the sides, which I imagine was on purpose since the back is where the GPU heatsinks are, whereas the sides have the CPU heatsinks.
This tool is a python script that is dependent on ectool to function. Ectool requires the driver to interface with the EC on the Framework.
Now unless Windows contains a driver by default which is able to do this, there isn’t going to be any other way than by using a driver to get there. Hence the reason ectool is dependent on this driver to function.
The somewhat obvious thing to do here is get the driver signed by some authority such that disabling driver signing is not necessary.
Your warning here is very important and people should be aware of it:
VirusTotal is absolutely GOATed. In the words of that Franks RedHot commercial “I put that sh*t on everything”.
As for temps, I know my computer can handle it, but it’s me that needs the fans to spin up at lower temps. I’ve measured my keyboard and under-chassis at 102F (about 39C) with the default fan curve doing almost nothing. My legs cook and my hands/ wrists get uncomfortably sweaty. It just gets worse when I’m working in non air-conditioned spaces in the summer. Having the ability to move that heat out of the computer and away from my body is something I really value. The fan noise never really bothers me (although I used to work around aircraft, so maybe my hearing is shot ).
Until a BIOS level fan control comes out, fw-fanctrl is the best for both Linux and Windows in my opinion.
You’re right @Myriad, think of the dGPU as its own module that extends off the back of the laptop like it’s an external GPU plugged into a PC. The GPU’s own fans to pull air in from the laptop case from the vents on the bottom and expels it cleans out the back of the laptop so it doesn’t saturate the CPU/Memory/Storage/Battery with extra heat by trying to wrap that airflow back around inside of the laptop and out the side vents. It’s just way more efficient to do it this way and gives you better temps on dGPU and CPU/iGPU, etc.
If you’re up for a little experiment, you should grab a leaf blower on low and blow it at the bottom of the laptop during a benchmark and watch the temps. I bet the additional forced air pressure into the vents on the bottom would move more air over the CPU and GPU and lower the temps even more provided you don’t hit the maximum heat conduction of the heat pipes themselves in which case no more air is going to help lower the operating temps but will lower the exhaust temps still since more air would be flowing to transfer the same amount of heat.
If that works and the heat pipes on the GPU and CPU show that they can shed more heat with more airflow then it might be fun to 3D model and print a little squirrel cage fan shroud that plugs into the exhaust ports on both sides of the laptops and sucks the air out creating a negative pressure. This could evacuate more of the heat and even be made to plugin to the rear most module slot to get its power. I’m just thinking out loud here but that would be a fun little project ot run a framework cooler. And if that works well and still doesn’t max out the thermal transfer of the heat pipes then maybe someone could make a 3D printed desktop dock for the framework that has some bigger externally powered high static pressure fans that create that sections and also push air into the bottom vents when you slide the laptop down into it while also having it make all the Monitor, Keyboard and Mouse connections all through the USB-C on the back Okay, my imagination is running away with me but this would be cool if it could allow you to overclock the CPU and GPU more in a desktop setup configuration. However, this should all wait for the 240watt power adapter since as I understand it the 180watt power adapter still feeds a little off the battery when CPU and GPU are maxed out which wouldn’t be ideal for desktop applications but with the 240watt adapter it will solve all that and give quite the surplus of power that could be tapped off of for cooling if you didn’t want the dock to have any external connectors at all other than the power input from the USB power adapter.
Sorry, my Adderall hasn’t kicked in yet so I’m all over the place this morning. I got a little off topic there.
Honestly @henrytr every high-performance laptop that I’ve used with a high powered dGPU got way too hot to ever have on my lap. Even my old Razer Blade Pro 17" laptop made out of one giant billet of aluminum from ~2016 that I replaced with this framework got even hotter than the Framework 16 does! It would physically burn me if I touched the bottom of the laptop after it sat on a surface that wasn’t hard or didn’t allow good airflow. The only Laptops that don’t get this hot are the ones that use the iGPU primarily and throttle back both the GPU and CPU when on battery power to maximize battery life since power in = heat out. So, if you don’t want the framework to run insanely hot just run stuff on the iGPU instead of the dGPU and enable power saving mode so that CPU throttles down to like 1ghz unless it needs to go faster for some other operation. Because at full tilt this laptop needs to be able to dissipate 200+ watts of heat which is not insignificant if you think about a 100 watt resistive bulb and how hot those get and compare it to having 2 of those running inside of a little case with little fans blowing over them. I know that’s not a perfect comparison but it’s in the ballpark.
So you’re options really are as follows…
1) Run your scripts and unsigned driver that lets you run the fans at 100% to try to stay ahead of the heat build up. This will only work if you’re not putting heavy loads on for long periods of time otherwise it will still just saturate, and you’ll be back to the same unmanageable temps on your lap. But if you’re just doing shot operations these might be just perfect for you and why they should let us control fan curves in the future with either a signed driver or BIOS change.
2) Throttle your CPU and GPU through a custom power profile in Windows so that when you’re running the laptop in your lap it gives up performance for heat management. This is what most laptops do that try to give you like 10 hours of battery life for getting work done at the expense of barely being able to play a YouTube video at 30FPS
3) Have your cake and eat it too by buying one of these cooling plates that will help force fresh air up through the laptop vents on the bottom and improve cooling while adding a layer between you and the laptop itself so you don’t get burned. Then you can just run at 100% everything and not worry about it. (https://amzn.to/3TvtHKR)
4) Mod your framework laptop by adding direct powering to all the fans inside of the laptop using diodes to prevent back feeding power into the mainboard and link them to a switch on the outside of the case so you can run at 100% power all the time with a flip of a button or let the PC manage the fan speeds in the other switch state. I’m not even sure how much work this would be because I don’t know how deep the fan wiring is in the laptop but I’ve seen something similar done on desktop systems before using a module that with the flip of a switch it handed of all the fans to an external controller.
5) Talk whoever wrote the framework fan driver into getting it signed so you don’t have to run Windows 11 in test signing mode leaving your PC exposed to all the filth of the internet so you have to watch your back everytime you visit a hub site or open email while drunk.
Okay, ADHD drugs are starting to kick in now! Are my ideas good yet?
Hey @2disbetter, do you know if the person who wrote the driver to interface with the fan controller on the Framework is someone who actually works at Framework or just some fan in the open source community? I ask because if it’s someone actually affiliated with the project, I bet they could just send the code over to the Microsoft WHQL certification lab and ask to get it signed. Since they are associated with a company that sells computers that run Windows 11 and they actively sell licenses with their PCs on request, I don’t see why Microsoft wouldn’t certify the driver. It literally takes like one person 15 minutes to run it through the certification tests (I did this myself when I worked at Microsoft from 2000-2015), and then they would sign the driver and send it back to you. Now, this signing process would have to be repeated for each driver change that takes place in the future, and Microsoft might want to charge for that at some point, but my guess is for something this simple it would be cheap. Especially if it stops an entire line of laptops being sold with Windows 11 from becoming vulnerable to viruses because they are forced to run in Test Mode
I just hope everyone takes my warning seriously because running in Test Signing Mode is only something that should be done by a driver developer who is actively developing drivers on a dev box that isn’t running anything else that could possibly be malicious. Honestly, this would normally only be done on test machines and not even the dev box itself since it would be connected to a corporate network and could become a threat, so group policy would probably forbid it for most companies that knew what they were doing and only allow it to be done on test machines that weren’t on the domain, etc.
But, if the EC on the Framework requires physical hardware addresses to be touched, then a driver would be required, and no service or administrative level process would be able to do that sadly, so the driver would be the only way to go. However, if Framework would expose their fan controller as a generic USB device or Serial device instead of requiring packets being sent to physical hardware addresses, then the inbox signed serial drivers and USB drivers would be sufficient for anyone to manipulate the fans. Honestly, something like a fan controller doesn’t seem even remotely complex enough to require a direct hardware driver in my opinion. But, they might be using something off the shelf that doesn’t have a serial interface to begin with, so this would not be possible. However, if they released a firmware update with a UEFI driver that would proxy the EC commands to a virtual serial device, then Windows would still be able to pick it up as a new COM port you could send and receive data from, etc. I don’t know, it’s been a long time since I’ve done driver development, but a simple fan controller just doesn’t seem like it has enough complexity to require the low level of hardware access that would require a dedicated driver. It seems like something that would work just fine with other simpler communication channels like serial. Hell, it’s good enough for Arduino and Raspberry Pi, ain’t it?
+1 For Fan control in Framework laptops! Via Bios or software in the OS, something is better than nothing. I’d LOVE for my laptop to sound like a jet engine - at least at a point that I control. What is the point of fans except to help the hardware last longer? Repairability and longevity are the two main reasons I went with Framework.
I completely agree Trevor! I just tried to install Fan Control and as expected it didn’t find a single fan that it could interact with or read the values from which is really odd considering that my desktop computer brings up every single fan in my case including the ones connected to my AIO, CPU and even the two fans on my GPU as separately controllable entities. This open-source utility even found the fans on my old Razerblade Pro laptop and gave me limited control of them.
Perhaps Framework is concerned that if they open up this functionality that people will turn the fans down to avoid the noise and risk reducing the life of the hardware creating potential warranty nightmares for them or the opposite where people overclock things since they can just run the fans at 100% all the time if they want too and that could lead to some extra wear and tear. But, the truth is almost all components in a PC now days have thermal monitoring and either throttle or lock up if they exceed their thermal limits to protect themselves so I don’t believe this would be a problem at the end of the day so long as they didn’t let people disable the upper thermal limits the unit is warrantied under.
I’d love to see someone from Framework jump in here and explain why they don’t want to give control of the fans to the end user because I think it would help a lot of people because I’ve seen quite a few threads where people were willing to trade performance for a quieter experience and this would give them that option. And then you would have people like me that would use super aggressive fan curves to keep things even cooler than normal because we don’t care how loud our laptop is since we’re basically deaf from all the constant noise in our environments that we choose to live in!
C’mon Framework! Give the people some fan control baby! I want to use http://getfancontrol.com on my epic laptop!
Jerry (aka. Barnacules)
I’m in complete agreement. Framework’s primary segment and evangelists are custom PC aficionados. Fan control, along with frequent bios updates*, should be critical to their business strategy. Their support could also use a business analyst writing some published troubleshooting workflows (me? haha) to make the support experience more consistent. 30-50 emails to explain what the user should provide in terms of video evidence of issues is inefficient and angers their evangelists. As a support person, would also be frustrating not to have expectation guide rails.
Summary
- They are fixing I hear - I’d expect bios updates at least twice yearly.
That would be wonderful.
Couldn’t agree more @Trevor_Textor! I’d personally like to see a lot more BIOS settings for power users that want to have finer control over their computers but at the same time I can see why Framework might want to limit options to reduce potential for damage to hardware or tech support calls. But, I think they can give a lot more before they run into any issues like that and honestly, they might even reduce some tech support calls if they added some of these features like custom fan curves, etc. When using a laptop, you’re always playing with a tradeoff between performance and longevity so giving the end user more options to customize that experience to their exact liking would be great.
I will say I really like the graphical UEFI on this laptop. It’s very straight forward and makes things like dual booting operating systems super simple and intuitive. But, I think a lot more options could be added for fine tuning things and since the CPU and GPU both have thermal throttling built in that can’t be circumvented without crazy hacks I don’t think they need to worry about warranty issues coming from people using custom fan curves since the worst that will happen is they will lose performance which would be expected if you’re reducing the cooling of your laptop.
Heck, they could even include a little warning that says “By changing these settings you’re accepting that your performance may diminish” or something along those lines just to avoid the support calls from people that don’t understand why their laptop is running so slow when they shut the fans off complete. And we all know they will totally get those calls if they added that feature without warning people.
I will say that I’ve never seen a BIOS quite like the one on this laptop so I’m guessing it’s bespoke and written from the ground up since it’s an open-source project. Or maybe they started from an open-source BIOS out there somewhere. I’m not quite sure but if that is the case I wonder if it would be possible to make custom BIOS for it? I know that would probably void your warranty instantly but after your warranty is expired that might be fun to play around with if nothing more than to demonstrate how flexible the hardware is. I think something like this would be useful for when you give your framework motherboard a second life as a router or media PC with a 3D printed case then you could overclock it and add a ton more cooling to it which isn’t something you can do in the laptop chassis really and I’d imagine she’s already running at the ragged edge of performance given the heat this baby puts out.
Hi there! I thought my ears were ringing…!
I’m just an avid fan and/or “Former Framework Firework” (which is just somewhat of a community medal, not an indication of any former or ongoing relationship with the company). I’ve also got a bunch of other stuff going on… anyway, I digress. Hi!
Truth be told, I have access to EV and WHQL driver signing services through my employer, but I would be loathe to use them on this. Apart from that, the best I have been able to determine is that WHQL will only cross-sign drivers that are already signed–and I do not possess an EV code signing certificate[1]
Alas, it does. Specifically, it needs access to LPC - ports 0x800-0x807
for the 11th-13th gen and ports 0x800-0x8fe
and 0xe00-0xeff
for the rest. The embedded controller does expose an i2c hid interface but it is already occupied with the rfkill and monitor brightness keys, and on the 12th+ gen Framework added second descriptor for the ambient light sensor. On the AMD Frameworks Laptop (and the Core Ultra 1), the ALS is on a second interface entirely.
It wouldn’t be unreasonable to add a custom vendor-page HID descriptor. . . which I may do anyway for the fun keyboard stuff I’ve been working on.
I suspect that nobody wants to add more SMM or even Runtime Services code, but… that’s an interesting avenue for exploration. I do have an EC driver in my Framework UEFI driver toolkit; anything that they can do during DXE we can do as well
purportedly offered only to companies, but I have been looking for a loophole to get signed as a d.b.a. ↩︎
That would be awesome!
I had a look into this tool for Windows. It’s not clear if it prevents the use of bitlocker, that would be a blocker for me. Does anyone knows?
That being said, enabling test signing is an absolute no go for me.
But yes this is a real issue, I get the fans will be loud when gaming but when running discord + a browser tab opened on foundry vtt? I gets really weird when people start wondering what’s that noise and this is your FW16