NBFC-Linux: Finally Telling My Laptop Fan to Calm Down

I'm so happy to have you here in the Frazcave. This is my little place on the web, kind of like the Batcave but with more colors! I write here mainly to relax and share what I like, hoping to create a cozy place for anyone who visits.
If you want to chat, my contacts are below.
Fra, just give me the commands!
Ok, here’s the TL;DR (after signing acpi_ec):
sudo nbfc updatesudo nbfc config --recommendand pick a config close to your modelsudo nbfc config --set "Acer Aspire A315-57G-74A3.json"sudo nbfc restart && nbfc statussudo systemctl enable nbfc_serviceso it survives reboots
Last stop, cave dwellers!
If you’ve been following along, we unlocked the Acer BIOS (no fan profiles in there), we signed acpi_ec with a MOK key (no more Secure Boot drama), and now there’s only one thing left: actually pick a fan curve that doesn’t sound like a hairdryer.
This is the cozy part. No more reboots, no more blue screens, no more strange spells. Just one tool, one config file, and a bit of patience.
What NBFC actually does
NBFC-Linux reads small JSON configurations, one per laptop model, that describe:
- which temperature sensors to read,
- which embedded controller registers to write,
- which fan speed to set, at which temperature.
The community maintains a long list of configs, one per laptop model. The bad news: your exact model might not be there. The good news: usually one from the same family is close enough.
Step 1: Update the configs database
sudo nbfc update
This just pulls down the latest list of configurations.
Step 2: Ask for a recommendation
sudo nbfc config --recommend
NBFC reads the DMI info of your laptop and proposes the closest configs. If you’re lucky, your exact model shows up.
For my Acer Aspire A515-45 the candidates were:
Acer Aspire A515-48M
Acer Aspire A715-41G
Acer Aspire A315-57G-74A3
None of them was my exact model. That’s normal. Pick one, try it, see how it behaves.
Step 3: Set a config and start the service
sudo nbfc config --set "Acer Aspire A515-48M"
sudo nbfc start
nbfc status
nbfc status shows the current temperature, fan speed, and which config is loaded. If it says “Service: not running”, something’s off. Usually either the config doesn’t really match your hardware, or acpi_ec isn’t loaded (which is why the previous post exists).
Step 4: The fun part, finding your config
Here’s the bit nobody tells you upfront: you’ll probably try more than one config before you’re happy. They all “work”, but they don’t all feel right.
I went through three:
sudo nbfc config --set "Acer Aspire A515-48M"
sudo nbfc restart
# fan kicked in super early, laptop felt cold and the fan was almost always on
sudo nbfc config --set "Acer Aspire A715-41G"
sudo nbfc restart
# better, but the curve was too aggressive between 60 and 70 °C
sudo nbfc config --set "Acer Aspire A315-57G-74A3"
sudo nbfc restart
# this one. quiet under 65 °C, smooth ramp after that.
The A315-57G-74A3 became my pick. It lets the laptop run a little warmer than the others, but in exchange it stays completely silent for writing, browsing and most coding sessions.
Aggressive vs conservative profiles
Different configs basically encode different philosophies:
- Aggressive: fan kicks in early, CPU stays cooler, the laptop handles sustained load better, at the cost of noise.
- Conservative: fan stays off until things get warm, the laptop is silent most of the time, at the cost of a slightly warmer chassis.
I went conservative because I mostly want quiet. If you compile big things or play games on the same machine, you probably want the opposite.
Step 5: Auto-start on boot
By default NBFC doesn’t survive a reboot. Easy fix:
sudo systemctl enable nbfc_service
Done. From now on the fan curve loads automatically every time you turn the laptop on.
Bonus: manual override
Sometimes I want to force the fan to a specific speed, for example before kicking off a long build:
sudo nbfc set -s 30 # set fan to 30%
sudo nbfc set -a # back to automatic
Useful for testing if a config “feels” right too: drop it to 0%, watch temperatures, see how the system reacts.
Troubleshooting in 30 seconds
A few things I hit, and how to unstick them:
No Configuration Foundwhen you set one: double-check the exact filename on the configs repo. Capitalisation matters.nbfc statusshows nothing: runsudo systemctl status nbfc_service. If it failed, it’s usually the embedded controller. Runsudo dmesg | grep acpi_ecto check whether the module loaded.- Service starts but the fan never changes: try a different config. It’s likely “working” but writing to the wrong registers for your hardware.
Was it worth it?
It’s late, I’m writing this in bed, the laptop is on my lap, and the only sound in the room is my keyboard. So yes, extremely worth it.
To recap the whole adventure:
- Unlocked the Acer BIOS just to discover the fan settings weren’t there.
- Signed
acpi_ecwith a MOK key so NBFC could work without disabling Secure Boot. - Tried a handful of NBFC configs until I found one that matches my noise tolerance.
Three posts, one quiet laptop, and a lot of late-night detours. Worth every minute.
That’s it for this series, little dwellers. Now, back to your cave. This one’s mine. ;)