-
Added support for executing Lua code.
In
FanConfiguration:ReadLuaCodeWriteLuaCodeResetLuaCode
In
RegisterWriteConfiguration:LuaCode(requiresWriteModeset toLua)ResetLuaCode(requiresResetWriteModeset toLua)
The following functions are exposed to Lua:
acpi_call(method): Executes an ACPI method.ec_read(register): Reads a byte from the embedded controller.ec_read_word(register): Reads two bytes and combines them into a single value.ec_write(register, value): Writes a byte to the embedded controller.ec_write_word(register, value): Writes a 16-bit value to a two-byte register.
-
Reduced memory usage of the service from ~280KB to ~230KB.
-
Added
nbfc acpi-dumpcommandThis command allows to dump information from your ACPI firmware.
Subcommands:
nbfc acpi-dump methods: Dumps the list of ACPI methodsnbfc acpi-dump registers: Dumps the list of all ACPI registersnbfc acpi-dump ec-registers: Dumps the list of EC registersnbfc acpi-dump dsl: Dumps the disassembled ACPI firmware
-
Added
nbfc rate-configcommandThis command rates configuration files by analyzing whether they appear safe to use on the current system.
-
Added
nbfc supportcommandThis command shows how to support the project. It also allows to upload the current notebook firmware to the NBFC-Linux server by running
nbfc support --upload-firmware.
-
Added support for calling ACPI methods
NBFC-Linux can now call ACPI methods to read or write the fan speed. ACPI methods are also supported in RegisterWriteConfigurations. This is useful if the fan cannot be controlled via simple EC register manipulations.
In
FanConfiguration:ReadAcpiMethod: Read the fan speed using an ACPI methodWriteAcpiMethod: Write the fan speed using an ACPI methodResetAcpiMethod: Reset the fan using an ACPI method
In
RegisterWriteConfiguration:AcpiMethod(requiresWriteModeset toCall)ResetAcpiMethod(requiresResetWriteModeset toCall)
The
ec_probetool now supports calling methods using theacpi_callcommand.This requires the
acpi_callmodule to be installed.
- New model configuration files
-
Using state file to store fan speeds
Previously,
TargetFanSpeedswere stored in the main configuration file, which required rewriting the file whenever fan speeds changed.This could lead to conflicts if the configuration was being edited simultaneously via the GUI.
Fan speeds are now stored in a separate state file to avoid these issues and ensure safe, concurrent updates.
- Added
nbfc sensorscommand
- Added
nbfc warrantyandnbfc donatecommands
- The GUI is no longer part of this project. It has been moved to https://github.com/nbfc-linux/nbfc-qt
- Fix possible bug while logging to syslog()
- Log to STDERR even when run as a daemon
- Hopefully fixing a bug while building with rpmbuild
- Fix incorrect error message if TemperatureThresholds are missing
-
Added support for temperature monitoring using the proprietary NVIDIA kernel module through dynamic loading of
libnvidia-ml.soviadlopen().Users can now enable this sensor by specifying
nvidia-mlas the sensor name.This sensor is also part of the
@GPUsensor group.
- Support for logging though syslog facility
- Comments can now be added to any JSON object in the configuration files by using the "Comment" field.
- Improved the forking and daemonization process
- Dropped the
pipe(), write(), read()logic that has been used to communicate between parent and child process. - Using
setsid()to fully daemonize on fork() - Using
chdir()to change to root directory ("/")
- Server now doesn't use threads to handle client connections. This saves some RAM.
select()has been replaced bypoll().- Incoming messages have a maximum size. This prevents the server of exiting in case of receiving huge messages.
- Server now runs in the main thread. This saves around 60KB of RAM.
- Now sensor groups can be specified as temperature sources.
Available groups are
@CPUand@GPU. Since notebook models may have different graphics cards, using@GPUprovides a portable way to refer to the GPU temperature.
- FanConfigurations in the ModelConfig can now define their own sensors and specify the TemperatureAlgorithmType.
- Now user defined commands are allowed as sensors in
FanTemperatureSources. If a sensor name is prefixed by$, its output will be used as temperature.
- Now user defined file paths are allowed as sensors in
FanTemperatureSources
- Added command
nbfc updateto download new configuration files from the configuration file repository as needed.
- Added model compatibility database (
/usr/share/nbfc/model_support.json): A file that maps each notebook model to its supported configuration.
- Added support for OpenRC and System-V-Init
- Added
LegacyTemperatureThresholdsBehaviouroption to model config
- Added
get_model_nameto NBFC client - NBFC client now writes JSON in a beautified format
- NBFC client now doesn't depend on
dmidecodeanymore - Manual pages, completion files and help texts of binaries are now handwritten
- HTML and Markdown documentation are now generated using pandoc from manual pages
- NBFC's --readonly argument is renamed to --read-only
ec_probe watchis now officially available- NBFC service now logs build configuration on startup
- ec_probe now respects the --embedded-controller option
- Updated nbfc.py to use /usr/share/nbfc/configs (fix for --recommend)
- Changed location of model configuration files to /usr/share/nbfc/configs
- Added files for installation in nixOS
- Fixed race-condition in systemd service file
- Added more debug information on service startup
- Maked
EmbeddedControllerTypeconfigurable - Dropped the usage of
lm_sensors.cin favour offs_sensors.cbecause of build problems on some platforms - Moved
tools/arganyto a separate project: argparse-tool
- Fixed type
--config-fieto--config-file - Using default temperature thresholds if those in config are empty or not present. Issue #2
- Added CHANGELOG.md
- Added --version flags to all programs
- Added pre-commit hook