This is a C port of Stefan Hirschmann's NoteBook FanControl.

Overview

NoteBook FanControl

This is a C port of Stefan Hirschmann's NoteBook FanControl.

It provides the same utilities with the same interfaces as the original NBFC, although the implementation differs.

Comparison of NBFC C# and NBFC Linux

What NBFC Mono NBFC Linux
Portability Crossplatform Linux
Configuration files XML (956KB) JSON (840KB)
Runtime Mono Native
Memory consumption (ps_mem) ~50MB ~350KB
Package size (pkg.tar.gz) 448K 100K
Service control rights Any user Only root
IPC Concept TCP/IP Files
IPC Protocol Binary JSON

The service and the probing tool are written in C. The client is written in Python.

Installation

  • Arch Linux:

    • Either via AUR (yaourt -S nbfc-linux)
    • Or by using the PKGBUILD nbfc-linux-git
  • With Nix:

    • With legacy nix (nix-env -if .)
    • With nix flakes (nix profile install)
  • In general:

    • make && sudo make install

Getting started

When running NBFC for the first time, you need to give it a configuration file for your laptop model.

If you are lucky, sudo nbfc config --set auto will find a matching one and set it.

sudo nbfc config --recommend (requires dmidecode) will give a list of configuration files that may match your laptop.

With sudo nbfc config --set a configuration is selected.

sudo nbfc start will start the service.

It can be queried by sudo nbfc status -a.

If you wish nbfc_service to get started on boot, use sudo systemctl enable nbfc_service.

Differences en detail

Files NBFC Mono NBFC Linux
Systemd service file nbfc.service nbfc_service.service
EC Probing tool ec-probe ec_probe
Notebook configuration files /opt/nbfc/Configs/*.xml /usr/share/nbfc/configs/*.json
Service binary /opt/nbfc/nbfcservice.sh /bin/nbfc_service
PID File /run/nbfc.pid /run/nbfc_service.pid
State file - /run/nbfc_service.state.json
Config file ? /etc/nbfc/nbfc.json
  • The original NBFC service is queried and controlled by the client using TCP/IP. - NBFC Linux does not implement any "real" IPC. Information about the service can be queried by reading its state file. The client controls the service by simply rewriting its configuration file and reloading it.

  • The original NBFC service adjusts the fan speeds in intervals of EcPollIntervall according to TemperatureThresholds. - NBFC Linux directly sets the fan speed (also according to TemperatureThresholds).

  • NBFC Linux dropped the Autostart option, since it relies on the systemd service file only.

Troubleshooting

The preferred way of running nbfc is using the ECSysLinux implementation, which depends on the ec_sys kernel module. There is also an alternative implementation which uses /dev/port, called ECLinux. It can be specified on the commandline using --embedded-controller=ECLinux and permanently set in /etc/nbfc/nbfc.json with "EmbeddedControllerType": "ECLinux".

Shell autocompletion

NBFC-Linux comes with shell completion scripts for bash, fish and zsh.

~ $ nbfc_service 
--config-file          -c  -- Use alternative config file (default /etc/nbfc/nbfc.json)
--debug                -d  -- Enable tracing of reads and writes of the embedded controller
--embedded-controller  -e  -- Specify embedded controller to use
--fork                 -f  -- Switch process to background after sucessfully started
--help                 -h  -- show this help message and exit
--readonly             -r  -- Start in read-only mode
--state-file           -s  -- Write state to an alternative file (default /var/run/nbfc_service.state.json)

~ $ nbfc 
config   -- List or apply configs
help     -- Show help
restart  -- Restart the service
set      -- Control fan speed
start    -- Start the service
status   -- Show the service status
stop     -- Stop the service

See also the documentation about the nbfc configuration.

Comments
  • unknown option , when trying to run nbfc_service

    unknown option , when trying to run nbfc_service

    trying to run nbfc_service manually causes this error

    [[email protected] ~]# '/var/home/edge/.local/bin/nbfc_service' -c '/var/home/edge/Asus Zenbook UX310UA.json' --embedded-controller=ec_linux
    
    /var/home/edge/Asus Zenbook UX310UA.json: NotebookModel: Unknown option
    
    opened by allaeddineomc 6
  • Temp below lowest TemperatureThreshold but fan target > 0 anyway

    Temp below lowest TemperatureThreshold but fan target > 0 anyway

    Would anyone be able to review the config I'm working on and identify might be incorrect? I have been getting output like this from nbfc status -a, where the temperature (e.g. 38C) is already much lower than my lowest TemperatureThresholds entry (up = 55, down = 50) but it's commanding a target fan speed anyway.

    Edit: doh, looks like I grabbed the wrong terminal output as this is a duplicate of the last and using the wrong config. My bad. I don't have the output anymore, but I did get similar results with both configs.

    $ nbfc status -a
    Read-only               : False
    Selected config name    : HP ZBook 15 G3
    Temperature             : 38.81
    
    Fan display name        : Left CPU fan
    Auto control enabled    : True
    Critical mode enabled   : False
    Current fan speed       : 21.15
    Target fan speed        : 20.0
    Fan speed steps         : 0
    
    Fan display name        : Right CPU Fan
    Auto control enabled    : True
    Critical mode enabled   : False
    Current fan speed       : 21.15
    Target fan speed        : 20.0
    Fan speed steps         : 0
    

    In another instance I ran nbfc status -a many times over the course of ~1min, and it stayed like this with the speed at 0 but target at 40. Since it didn't ramp to the target over the minute, I took it as ignoring this, not as lag between set point and actual (and again, it's not clear why at 42C it thinks it should be on at all).

    $ nbfc status -a
    Read-only               : False
    Selected config name    : HP ZBook Fury 15 G7
    Temperature             : 42.12
    
    Fan display name        : Right CPU fan
    Auto control enabled    : True
    Critical mode enabled   : False
    Current fan speed       : 0.0
    Target fan speed        : 40.0
    Fan speed steps         : 0
    
    Fan display name        : Left CPU Fan
    Auto control enabled    : True
    Critical mode enabled   : False
    Current fan speed       : 0.0
    Target fan speed        : 40.0
    Fan speed steps         : 0
    

    I tried just now with the HP ZBook 15 G3 config which uses the same read/write registers but different min/max values and I get the same behavior. This is what I based my config on.

    $ nbfc status -a
    Read-only               : False
    Selected config name    : HP ZBook 15 G3
    Temperature             : 38.81
    
    Fan display name        : Left CPU fan
    Auto control enabled    : True
    Critical mode enabled   : False
    Current fan speed       : 21.15
    Target fan speed        : 20.0
    Fan speed steps         : 0
    
    Fan display name        : Right CPU Fan
    Auto control enabled    : True
    Critical mode enabled   : False
    Current fan speed       : 21.15
    Target fan speed        : 20.0
    Fan speed steps         : 0
    

    Also, on the "regular" nbfc, I get 255 fan steps in the output of nbfc status. I noticed it's reported as 0 using nbfc-linux. Is that a bug?

    Thanks for any suggestions on what I could look into on this.

    opened by jwhendy 5
  • Can't use this on NixOS

    Can't use this on NixOS

    Already try it with nix-env -if . but nbfc_service must enable/start to use it so i have to install it manually with configuration.nix by reading .nix file in this repository, looks like it can't read nbfc.json because it's stored in nix store and not in usual way. so after i configured nbfc.conf with my laptop model: {"SelectedConfigId": "Acer Nitro AN515-51", "NotebookModel": "Acer Nitro AN515-51", "Author": "Chandradeep Dey (modified by satcom886)", "EcPollInterval": 3000, "ReadWriteWords": true, "CriticalTemperature": 90, "FanConfigurations": [{"ReadRegister": 19, "WriteRegister": 55, "MinSpeedValue": 0, "MaxSpeedValue": 100, "IndependentReadMinMaxValues": true, "MinSpeedValueRead": 0, "MaxSpeedValueRead": 6122, "ResetRequired": true, "FanSpeedResetValue": 50, "FanDisplayName": "CPU fan", "TemperatureThresholds": [{"UpThreshold": 55, "DownThreshold": 43, "FanSpeed": 0.000000}, {"UpThreshold": 60, "DownThreshold": 44, "FanSpeed": 30.000000}, {"UpThreshold": 65, "DownThreshold": 50, "FanSpeed": 45.000000}, {"UpThreshold": 70, "DownThreshold": 56, "FanSpeed": 50.000000}, {"UpThreshold": 80, "DownThreshold": 63, "FanSpeed": 65.000000}, {"UpThreshold": 85, "DownThreshold": 68, "FanSpeed": 75.000000}, {"UpThreshold": 90, "DownThreshold": 78, "FanSpeed": 100.000000}], "FanSpeedPercentageOverrides": []}, {"ReadRegister": 21, "WriteRegister": 58, "MinSpeedValue": 0, "MaxSpeedValue": 100, "IndependentReadMinMaxValues": true, "MinSpeedValueRead": 0, "MaxSpeedValueRead": 6122, "ResetRequired": true, "FanSpeedResetValue": 50, "FanDisplayName": "GPU fan", "TemperatureThresholds": [{"UpThreshold": 55, "DownThreshold": 43, "FanSpeed": 0.000000}, {"UpThreshold": 60, "DownThreshold": 44, "FanSpeed": 30.000000}, {"UpThreshold": 65, "DownThreshold": 50, "FanSpeed": 45.000000}, {"UpThreshold": 70, "DownThreshold": 56, "FanSpeed": 50.000000}, {"UpThreshold": 80, "DownThreshold": 63, "FanSpeed": 65.000000}, {"UpThreshold": 85, "DownThreshold": 68, "FanSpeed": 75.000000}, {"UpThreshold": 90, "DownThreshold": 78, "FanSpeed": 100.000000}], "FanSpeedPercentageOverrides": []}], "RegisterWriteConfigurations": [{"WriteMode": "Set", "WriteOccasion": "OnInitialization", "Register": 34, "Value": 12, "ResetRequired": true, "ResetValue": 4, "ResetWriteMode": "Set", "Description": "CPU fan manual mode"}, {"WriteMode": "Set", "WriteOccasion": "OnInitialization", "Register": 33, "Value": 48, "ResetRequired": true, "ResetValue": 16, "ResetWriteMode": "Set", "Description": "GPU fan manual mode"}, {"WriteMode": "Set", "WriteOccasion": "OnInitialization", "Register": 16, "Value": 0, "ResetRequired": true, "ResetValue": 1, "ResetWriteMode": "Set", "Description": "CoolBoost off"}]} This is the result if i start nbfc or enable the service even though i set it right: /etc/nbfc/nbfc.json: NotebookModel: Unknown option

    Full thread post on Reddit

    opened by aminriqky 4
  • Setup on Ubuntu 20.04

    Setup on Ubuntu 20.04

    Has anyone tried to setup nbfc-linux on an Ubuntu 20.04 distro? I tried and there are some wierd messages showing up.

    ❯ systemctl status nbfc_service.service
    ● nbfc_service.service - NoteBook FanControl service
         Loaded: loaded (/usr/local/lib/systemd/system/nbfc_service.service; enabled; vendor preset: enabled)
         Active: failed (Result: protocol) since Sat 2022-01-22 15:26:13 CST; 11s ago
        Process: 16836 ExecStartPre=/usr/local/bin/nbfc wait-for-hwmon (code=exited, status=0/SUCCESS)
        Process: 16837 ExecStart=/usr/local/bin/nbfc start (code=exited, status=0/SUCCESS)
    
    Jan 22 15:26:13 omen systemd[1]: nbfc_service.service: Scheduled restart job, restart counter is at 5.
    Jan 22 15:26:13 omen systemd[1]: Stopped NoteBook FanControl service.
    Jan 22 15:26:13 omen systemd[1]: nbfc_service.service: Start request repeated too quickly.
    Jan 22 15:26:13 omen systemd[1]: nbfc_service.service: Failed with result 'protocol'.
    Jan 22 15:26:13 omen systemd[1]: Failed to start NoteBook FanControl service.
    
    opened by AndreasKaratzas 4
  • terrible documentation for a new user, and possibly a bug

    terrible documentation for a new user, and possibly a bug

    as someone who has light coding experience, but not familiar with with linux, this documentation is near useless.

    after following the "manual", there's an error that comes up as "this specified configuration file does not exist", after i the command "sudo nbfc config --set auto". ontop of needing to refer to 3 different sites to try even install the thing. documentation improvement greatly needed for the non-linux literate, and possible bug

    opened by iminsert 4
  • ec_sys module missing in my Linux Mint Debian Edition

    ec_sys module missing in my Linux Mint Debian Edition

    Hello, I recently got an old HP DV6 laptop running on AMD Athlon QL-65 2 core processors. OK it is not up to current standards, but it is enough for me. I want to use Linux Mint Debian Edition because I am fed up with all the upgrades coming in when I don't expect them on my Lubuntu 20.04. And I want to drop Ubuntu because they dropped 32 bit systems. Now my LMDE runs on 4.19.0-17-amd64 kernel and they have not included the ec_sys module in the /lib/modules/ directory. I found this out after having compiled and installed nbfc-linux from the downloaded sources here : error missing ec_sys module. So I took an ec_sys.ko module file from my other lubuntu system and copied it to the laptop. Of course, as is always the case with Linux, it is not that simple. Question : am I supposed to compile this module "off tree". Compiling a module "off tree" is a new concept to me which I just only discovered... Thank you for your answer. Arnould

    opened by ArnouldN 4
  • Various fixes

    Various fixes

    • Added support for Fan Speed Steps.
    • Made changes to C/Python clients to include "zenpower" for AMD Zen family CPUs in wait_for_hwmon.
    • Made changes to C/Python clients to delete the nbfc state file when the service is stopped so that nbfc status will correctly report "service not running".
    • Improved formatting in C client for nbfc status and error messages.
    • Updated the "Acer Nitro AN515-43.json" config to account for the 0 UpThreshold entry since it was not picked up by https://github.com/nbfc-linux/nbfc-linux/commit/376ce6b278804800e9c067827584ddf0b3de1741 (it was a manually added json).
    • Fixed incorrect current fan speed reporting when the fan speed is 0 on some notebooks*.

    *I personally had this issue, and it seems it was caused by the range check in the for-loop of Fan_UpdateCurrentSpeed (src/fan.c). For example, when the fan speed is 0 on my HP EliteBook 8560p, Fan_ECReadValue returns 255 (FF) which is outside of the minSpeedValueReadAbs/maxSpeedValueReadAbs range. As such, the my.currentSpeed update was never being run. The solution was to move the update outside of the for-loop, which is in line with the original NBFC service.

    opened by JoshIles 3
  • ec_linux timer expired

    ec_linux timer expired

    [[email protected] nbfc-linux-0.1.7]$ sudo nbfc start
    Using 'Xiaomi Mi Book (TM1613, TM1703)' as model config
    Using 'ECLinux' as EmbeddedControllerType
    Using '/sys/class/hwmon/hwmon6/temp1_input' as temperature source
    Using '/sys/class/hwmon/hwmon6/temp2_input' as temperature source
    Using '/sys/class/hwmon/hwmon6/temp3_input' as temperature source
    Using '/sys/class/hwmon/hwmon6/temp4_input' as temperature source
    Using '/sys/class/hwmon/hwmon6/temp5_input' as temperature source
    EC_Linux_WriteByte: Timer expired
    
    

    cannot use ec_sys as i am on fedora and they just decided that people dont need that module or something i tried make with EMBEDDED_CONTROLLER=acpi_ec but that doesnt seem to have fixed the issue, i do have acpi_ec installed

    opened by sixunity 2
  • Doesn't work on Nobara

    Doesn't work on Nobara

    It Works fine in arch but it doesn't work on Nobara (Glorious Egroll's Fedora Fork)

    Using 'HP Omen 15-dc00xxxx' as model config Using 'ECSysLinux' as EmbeddedControllerType modprobe: FATAL: Module ec_sys not found in directory /lib/modules/5.17.7-301.fsync.fc36.x86_64 Could not load `ec_sys' kernel module

    opened by CilekciGs 2
  • Config File name Spaces

    Config File name Spaces

    It seems to me that the config files need to have the space in their names removed in order to be loaded. I could not get sudo nbfc config --set Asus ROG GL702VM to work unless I changed the name of the config to Asus_ROG_GL702VM.

    opened by MikeSpeigle 2
  • Change config_to_json.py to Reconfigure Config Files (Fixes #10)

    Change config_to_json.py to Reconfigure Config Files (Fixes #10)

    These changes fix #10 after running the xml/Makefile with the transform_to_json argument. Tested on an HP EliteBook 8560p, which had the same issue before these changes. I didn't include all the reconfigured scripts as I didn't want to bloat this request and make it difficult to review, so you will have to do this and then push the updated config files yourself.

    Original problem:

    The logic in NBFC Linux that handles TemperatureThresholds differs to that of the original NBFC service:

    • The original service selects a TemperatureThreshold when the temperature exceeds its UpThreshold.
    • NBFC Linux will select the next upper TemperatureThreshold when the temperature exceeds the current UpThreshold.

    We can bring the behaviour in line with the original service by making a small change to:

    https://github.com/nbfc-linux/nbfc-linux/blob/dfce6aef4dcaaf5d6e594c0dd13cb9474ec6bfe7/src/temperature_threshold_manager.c#L29 (by simply changing it to while (i < size - 1 && temperature >= my.thresholds.data[i+1].UpThreshold) ++i;)

    However, I prefer the current logic of NBFC Linux, as the handling of UpThreshold is consistent with that of DownThreshold, and is more intuitive. With that said, it appears that the community sourced config files were not reconfigured to account for this, and as such, they currently do not behave the same way as they do in the original service. I have made changes to tools/config_to_json.py to account for this, and have used it to reconfigure the config file for my notebook, which I have included as an example (tested and works for all config files). In addition, I have added these details to the README so that new users can get up to speed quickly.

    As for #10, several config files had a TemperatureThresholds entry where FanSpeed, UpThreshold, and DownThreshold were all 0. This entry was designed to keep the fans turned off to preserve power and make less noise when cooling is unnecessary. However, in NBFC Linux, when the UpThreshold of the current entry is 0, the queried temperature always exceeds it and so the FanSpeed of the next entry is selected instead. This is why the desired FanSpeed of 0 was never being set.

    Solution:

    The new logic in tools/config_to_json.py simply shifts each UpThreshold value down an entry (after sorting in ascending order, of course), and sets the highest UpThreshold to the CriticalTemperature value (a change to src/model_config.c was required to allow for this). From there, there is no next TemperatureThresholds entry to move to, and so NBFC Linux will simply enable critical mode if the temperature ever exceeds the CriticalTemperature value, and thus the desired behaviour is preserved.

    With that said, I'd like to say thank you for the hard work on this project, I really do appreciate and prefer this lightweight implementation of NBFC :).

    opened by JoshIles 2
  • Fan speed can't lower than 61% in YOGA 710-14IKB

    Fan speed can't lower than 61% in YOGA 710-14IKB

    My laptop is a YOGA 710-14IKB, and I found YOGA 710 KabyLake config to use. I used sudo nbfc set -s 0 but it never worked, the fan speed is just keep 61%. I saw the issue #10 #12 but very sorry, I still don't know how to make the current fan speed lower than 61%. Just push my output there, hope a hero help me to make the fans lower.

    Read-only               : False
    Selected config name    : Lenovo Yoga 710 KabyLake
    Temperature             : 45.67
    
    Fan display name        : Fan
    Auto control enabled    : False
    Critical mode enabled   : False
    Current fan speed       : 61.02
    Target fan speed        : 0.0
    Fan speed steps         : 59
    

    and

    ---|------------------------------------------------
       | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    ---|------------------------------------------------
    00 | 00 01 00 1E 00 00 24 05 00 00 80 00 00 00 00 00
    10 | 00 00 80 00 05 00 74 01 00 01 05 00 10 43 00 0C
    20 | 4C 69 50 01 00 00 00 00 74 0F FF FF FB 0B 44 4D
    30 | 53 4D 50 00 31 31 00 00 3C 10 41 10 4C 31 35 4D
    40 | 34 50 43 32 73 55 00 00 00 00 00 00 00 00 00 00
    50 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    80 | 00 00 00 00 00 00 00 00 01 01 03 00 80 00 00 00
    90 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    A0 | 00 00 00 C6 E1 00 00 61 64 00 00 08 64 2A 00 78
    B0 | 2D 00 24 00 2A 27 00 00 00 0A 00 4F 27 4A 11 11
    C0 | 61 00 68 07 5F 07 7B 20 D8 1D B4 14 68 07 64 D6
    D0 | 00 00 00 00 0B 53 E7 21 00 00 01 00 19 00 E0 00
    E0 | 00 00 00 40 10 3C 10 00 00 00 00 10 00 68 07 00
    F0 | 43 40 00 00 89 4B FC 21 04 BD 00 FF FF 00 00 00
    
    opened by STAOY 0
  • Unreasonable

    Unreasonable "validation" restrictions

    Hi,

    Some of the existing validations are unjustified and artificially limit usage scenarios. I can create a pull request, but I would like to reach a consensus first.

    1. UpThreshold may not be 0: code The error message references differences to the original NBFC. Probably, it refers to this paragraph. However, the method doesn't prevent you from having UpThreshold of 0. 0 has no special meaning in this context. Additionally, the error message suggests that UpThreshold must be greater than 0, while the code actually compares against 0, and because UpThreshold is defined as short, it may be set to a negative. Finally, from application point of view, one can set up thresholds for negative temperatures. Imagine an enthusiast or a scientist. Even if not a typical use case, there is just no point to artificially restrict it.

    2. Thresholds must be defined for the minimum fan speed: code It may be a totally valid and a desired profile that makes fan to never stop.

    3. Thresholds must be defined for the maximum fan speed: code There is already the CriticalTemperature threshold that sets the fan to its maximum speed. It may be a totally valid and a desired profile that doesn't define thresholds for the maximum fan speed, but relies on the CriticalTemperature instead.

    I look forward to your comments.

    Cheers!

    opened by sidorsett 0
  • I'm writing to the right register but still no fan control

    I'm writing to the right register but still no fan control

    Will the Acer Nitro AN515-51 work well with an AN515-57-520Y (i5 11400h, rtx 3050 75w)? Or someone have another recommendation?

    Looking at the options provided by sudo nbfc config --recommend and it didn't look quite right for the options it gave me.

    I even tried reading the documentation but I think I'll not be able to configure it myself for my model, too much low level stuff, register and so on... as mentioned at #30

    Thank you.

    opened by ltsdw 9
  • HP Spectre x360 Convertible 15-df1015ng fails

    HP Spectre x360 Convertible 15-df1015ng fails

    The UpThreshold of the 5th phase in here is higher then the CriticalThreshold. Since I don't have the Model I can't tell what's best to do; the phase could either be deleted completely or a second phase between 54 and 67 and the 75.0 Fan Speed could be added.

    opened by florhizome 0
  • Can't find kernel modules in guix

    Can't find kernel modules in guix

    Hello, I made a package for myself to use this service with GNU Guix as a system. Thanks for your work since I recently have a more esoteric laptop (ASUS Expertbook B5 flip) and there are not services linke I had available for my previous thinkpad :) It should be somewhat similar to nix, but Guix uses GNU Guile, a scheme dialect for configuration and the GNU shepherd as init. In my shepherd service i so far just try to start nbfc_service and append a generated config file with the NoteBookModelID, kind of what you suggest for nix. This is grepped from the logs

    Sep 4 14:48:11 localhost shepherd[1]: Service nbfc-linux-daemon has been started. Sep 4 14:48:11 localhost shepherd[1]: [nbfc_service] Using 'HP Spectre x360 Convertible 13-ae0xx' as model config Sep 4 14:48:11 localhost shepherd[1]: [nbfc_service] Using 'ECSysLinux' as EmbeddedControllerType Sep 4 14:48:11 localhost shepherd[1]: [nbfc_service] modprobe: FATAL: Module ec_sys not found in directory /lib/modules/5.19.5 Sep 4 14:48:11 localhost shepherd[1]: [nbfc_service] Could not loadec_sys' kernel module Sep 4 14:48:11 localhost shepherd[1]: Service nbfc-linux-daemon (PID 19010) exited with 3. Sep 4 14:48:11 localhost shepherd[1]: Service nbfc-linux-daemon has been disabled. `

    guix installs its kernel modules under /run/current-system/kernel so it comes with no surprise if nbfc looks under /lib... loading ec_sys manually and restarting does not help. this is the first program where I experience this error, normal modprobe works ofc. Maybe there could be a make flag to set the Kernel module path?

    opened by florhizome 0
Releases(0.1.7)
  • 0.1.7(Jul 4, 2022)

    Added many new configurations and fixed some packaging issues through various pull requests:

    What's Changed

    • added client.c by @natto1784 in https://github.com/nbfc-linux/nbfc-linux/pull/6
    • some updates regarding client.c by @natto1784 in https://github.com/nbfc-linux/nbfc-linux/pull/13
    • Added config for AN515-43 and added support for zenpower by @batmalin in https://github.com/nbfc-linux/nbfc-linux/pull/18
    • Change config_to_json.py to Reconfigure Config Files (Fixes #10) by @JoshIles in https://github.com/nbfc-linux/nbfc-linux/pull/20
    • add Lenovo Yoga Slim7 config by @dumprop in https://github.com/nbfc-linux/nbfc-linux/pull/23
    • Various fixes by @JoshIles in https://github.com/nbfc-linux/nbfc-linux/pull/25
    • client Fixes by @rofl0r in https://github.com/nbfc-linux/nbfc-linux/pull/27
    • add alienware M15R3 config by @samuaz in https://github.com/nbfc-linux/nbfc-linux/pull/22
    • Add default temperature thresholds by @jjguti in https://github.com/nbfc-linux/nbfc-linux/pull/31
    • Add config for "HP OMEN Laptop 15-en0xxx" by @utk-spartan in https://github.com/nbfc-linux/nbfc-linux/pull/42
    • Add config for "HP Laptop 15s-gr0xxx" by @x0rzavi in https://github.com/nbfc-linux/nbfc-linux/pull/46

    New Contributors

    • @natto1784 made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/6
    • @batmalin made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/18
    • @JoshIles made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/20
    • @dumprop made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/23
    • @rofl0r made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/27
    • @samuaz made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/22
    • @jjguti made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/31
    • @utk-spartan made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/42
    • @x0rzavi made their first contribution in https://github.com/nbfc-linux/nbfc-linux/pull/46

    Full Changelog: https://github.com/nbfc-linux/nbfc-linux/compare/0.1.6...0.1.7

    Source code(tar.gz)
    Source code(zip)
Owner
null
Create a Jupyter Kernel for 8085 Microprocessor assembly language that can interpret assembly-level programs right from the Jupyter notebook.

Create a Jupyter Kernel for 8085 Microprocessor assembly language that can interpret assembly-level programs right from the Jupyter notebook.

Sarita Singh 4 Oct 5, 2022
👾 Jupyter Notebook + Space Invaders!?

Train Invaders Jupyter Notebook + Space Invaders!? Why? • Getting started • How it works • FAQ • Drawbacks • Contribute • Thanks to • You may also lik

Aporia 91 Oct 23, 2022
Cross-platform, Serial Port library written in C++

Serial Communication Library (Linux and OS X) (Windows) This is a cross-platform library for interfacing with rs-232 serial like ports written in C++.

William Woodall 1.6k Nov 20, 2022
Lean4 port of Arduino balance car controller

lean4-balance-car This is a small proof-of-concept exercise to show a Lean 4 program controlling a real robotics platform which requires low latency c

Galois, Inc. 31 Jul 11, 2022
QEMU port for t8030

QEMU README QEMU is a generic and open source machine & userspace emulator and virtualizer. QEMU is capable of emulating a complete machine in softwar

null 1.6k Nov 22, 2022
C++11 port of docopt

docopt.cpp: A C++11 Port Contents docopt creates beautiful command-line interfaces Isn't it awesome how getopt (and boost::program_options for you fan

null 979 Nov 15, 2022
Trial port of the rtf_433 Library for use with OpenMQTTGateway on a ESP32 and a CC1101 Transceiver

This is an attempt at creating an Arduino library for use on ESP32 boards with a CC1101 transceiver with the device decoders from the rtl_433 package.

Northern Man 86 Nov 15, 2022
Port of my M5Stack Core 2 audio monitor project to generic ESP32s with TFT screens

ESP32 Audio Monitor This is a port of this project to work with any ESP32 device with a TFT display. You can watch a video explainer here (YouTube) wh

atomic14 47 Nov 9, 2022
Doom port for InfOS - the University of Edinburgh Informatics research operating system used in the UG3 OS course

Doom on InfOS InfOS is the Informatics research operating system, designed specifically for the UG3 Operating Systems course. This project aims to por

Cheng Kai 14 Aug 20, 2022
Port of Golang channels to C++

Copper is a C++ library of a powerful queue object for communication between threads. It is based on Go's channels and follows the quote: Don't commun

null 155 Jul 18, 2022
NDS port of the uxn virtual machine

uxnds Quick and simple port of the uxn virtual machine to the NDS console. By default, uxnds will run /uxn/boot.rom. It also supports reading files fr

Adrian Siekierka 106 Nov 10, 2022
High Quality DeNoise 3D is an AviSynth port of the MPlayer filter of the same name

High Quality DeNoise 3D is an AviSynth port of the MPlayer filter of the same name. It performs a 3-way low-pass filter, which can completely remove high-frequency noise while minimizing blending artifacts.

null 13 Oct 3, 2022
A fast and small port of Zstandard to WASM.

Zstandard WASM A fast and small port of Zstandard to WASM. (Decompress-only for now). Features Fast: Zstandard has been compiled with the -03 flag, so

Fabio Spampinato 13 Nov 9, 2022
This is the Arduino® compatible port of the AIfES machine learning framework, developed and maintained by Fraunhofer Institute for Microelectronic Circuits and Systems.

AIfES for Arduino® AIfES (Artificial Intelligence for Embedded Systems) is a platform-independent and standalone AI software framework optimized for e

null 157 Nov 24, 2022
Doom port to the Ikea Tradfri RGB1923R5 and any device using Silicon labs EFR32MG21 based modules

MG21DOOM Doom port to the Ikea Tradfri RGB1923R5 lamp and any device using Silicon labs EFR32MG21 based modules. Coded by Nicola Wrachien. WARNING Do

null 20 Aug 2, 2022
A port of the Uxn virtual machine to the ESP32

Uxn An assembler and emulator for the Uxn stack-machine, written in ANSI C. Build Linux To build the Uxn emulator, you must have SDL2. If you wish to

Maxime ANDRÉ 27 Mar 24, 2022
Moonlight port for Nintendo Switch

Moonlight-Switch Moonlight-Switch is a port of Moonlight Game Streaming Project for Nintendo Switch. Thanks a lot to Rock88 and his Moonlight-NX, lots

Vinogradov Daniil 281 Nov 21, 2022
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

SynnixOS Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via Q

RaidTheWeb 42 Oct 28, 2022
Fix for various issues in the PC port of Ace Attorney Chronicles.

Hackfix for a few issues in the PC port - Animation framerate can now be set to arbitrary rate. (defaults to 60 but can be freely adjusted in the ini

Admiral H. Curtiss 81 Oct 14, 2022