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

Fra, just give me the commands!

Ok, here’s the TL;DR (after signing acpi_ec):

  1. sudo nbfc update
  2. sudo nbfc config --recommend and pick a config close to your model
  3. sudo nbfc config --set "Acer Aspire A315-57G-74A3.json"
  4. sudo nbfc restart && nbfc status
  5. sudo systemctl enable nbfc_service so 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 Found when you set one: double-check the exact filename on the configs repo. Capitalisation matters.
  • nbfc status shows nothing: run sudo systemctl status nbfc_service. If it failed, it’s usually the embedded controller. Run sudo dmesg | grep acpi_ec to 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:

  1. Unlocked the Acer BIOS just to discover the fan settings weren’t there.
  2. Signed acpi_ec with a MOK key so NBFC could work without disabling Secure Boot.
  3. 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. ;)


Get in touch!

If you’d like to discuss the topic, feel free to reach out! You can find my contact details on the About page.