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.

Issues
  • 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
  • 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
  • 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
  • No temperature sources found

    No temperature sources found

    Asus ROG GL702ZC Arch Linux 5.14.1-zen2 nbfc-linux at https://github.com/nbfc-linux/nbfc-linux/commit/72b593210f253e97e0593145d96bff2dae26efa9

    After configuring with the correct model, the nbfc service aborts with "No temperature sources found". This happens with both controller types:

    {"SelectedConfigId": "Asus ROG GL702ZC"}
    
    $ sudo nbfc start
    Using 'Asus ROG GL702ZC' as model config
    Using 'ECSysLinux' as EmbeddedControllerType
    No temperature sources found
    
    {"SelectedConfigId": "Asus ROG GL702ZC", "EmbeddedControllerType": "ec_linux"}
    
    $ sudo nbfc start
    Using 'Asus ROG GL702ZC' as model config
    Using 'ECLinux' as EmbeddedControllerType
    No temperature sources found
    

    This laptop is supported by nbfc using the same configuration (albeit in XML format).

    Let me know what information I can provide.

    Sensors with standard kernel modules:

    $ sensors
    BAT0-acpi-0
    Adapter: ACPI interface
    in0:          15.40 V  
    
    asus-isa-0000
    Adapter: ISA adapter
    cpu_fan:     2300 RPM
    
    amdgpu-pci-0c00
    Adapter: PCI adapter
    vddgfx:      1000.00 mV 
    edge:         +64.0°C  (crit = +94.0°C, hyst = -273.1°C)
    power1:       14.03 W  (cap =  52.00 W)
    
    acpitz-acpi-0
    Adapter: ACPI interface
    temp1:        +59.0°C  (crit = +98.0°C)
    

    Sensors with zenpower kernel module:

    $ sensors
    zenpower-pci-00c3
    Adapter: PCI adapter
    SVI2_Core:     1.43 V  
    SVI2_SoC:    894.00 mV 
    Tdie:         +59.2°C  (high = +95.0°C)
    Tctl:         +59.2°C  
    SVI2_P_Core:  47.19 W  
    SVI2_P_SoC:   17.74 W  
    SVI2_C_Core:  46.76 A  
    SVI2_C_SoC:   19.84 A  
    
    BAT0-acpi-0
    Adapter: ACPI interface
    in0:          15.40 V  
    
    asus-isa-0000
    Adapter: ISA adapter
    cpu_fan:     2300 RPM
    
    amdgpu-pci-0c00
    Adapter: PCI adapter
    vddgfx:      1000.00 mV 
    edge:         +64.0°C  (crit = +94.0°C, hyst = -273.1°C)
    power1:       14.21 W  (cap =  52.00 W)
    
    acpitz-acpi-0
    Adapter: ACPI interface
    temp1:        +59.0°C  (crit = +98.0°C)
    
    opened by jonathonf 2
  • Terminal appearance changes after running ec_probe dump

    Terminal appearance changes after running ec_probe dump

    Not sure on the cause, but something about the terminal formatting appears to glitch out urxvt for me. My font is changed in that terminal session afterward. Here's a new terminal, running a command, then ec_probe dump and another command. You can see the bold/gray font afterward.

    grab_2021-09-05_120613

    $ uname -a
    Linux vera 5.13.13-arch1-1 #1 SMP PREEMPT Thu, 26 Aug 2021 19:14:36 +0000 x86_64 GNU/Linux
    
    $ pacman -Q rxvt-unicode
    rxvt-unicode 9.26-2
    
    $ pacman -Q i3-gaps
    i3-gaps 4.19.1-1
    

    Any additional info I can provide?

    opened by jwhendy 2
  • appimage support

    appimage support

    i'm working on adding support for the AppImage package format , there is an issue that i couldn't overcome which is related to a hardcoded configs directory in the nbfc_service binary , i know nothing about coding in C and i wish somebody help me make the app check for configs in the default directory in addition to $APPDIR/share/nbfc/configs for the appimage to function properly

    opened by allaeddineomc 0
  • Initial openrc support

    Initial openrc support

    The default openrc service installation directory orcdir has been set keeping gentoo in mind. Users on other openrc based systems may need to change it (Eg, archlinux on openrc uses /etc/openrc/init.d)

    opened by x0rzavi 4
  • Willing to maintain nbfc-linux package for gentoo

    Willing to maintain nbfc-linux package for gentoo

    Hi, I've made an ebuild (synonymous to PKGBUILD on Arch) for nbfc-linux which works perfectly for me. But certainly, it needs more testing. It can be accessed from here under sys-power/nbfc-linux. The repo includes both a git and a stable release version (git for the reason if I ever fail to be quick enough to update and provided there are no breaking changes causing patching to fail)

    Patches I've made/included:

    1. Disable stripping binaries (To satisfy gentoo ebuild QA warning)
    2. Selectively install completions on condition
    3. OpenRC init.d service file added, needs checking that whether it does exactly what is intended

    Suggestions/Questions:

    1. Segregating completions installation under 3 different categories would be helpful
    2. Should I make a PR to include OpenRC init script? Also then it would be needed to include a recipe to install that.
    opened by x0rzavi 3
  • NBFC service not starting

    NBFC service not starting

    I have installed NBFC recently and the service does not start at all.

    • Here is the output of sudo nbfc status -a:
    Error: Service not running
    
    • Here is the output of sudo systemctl start nbfc_service
    Job for nbfc_service.service failed because the service did not take the steps required by its unit configuration.
    See "systemctl status nbfc_service.service" and "journalctl -xe" for details.
    
    • Here is the output of sudo systemctl status nbfc_service
    sudo systemctl status nbfc_service
    ● nbfc_service.service - NoteBook FanControl service
         Loaded: loaded (/usr/local/lib/systemd/system/nbfc_service.service; enabled; vendor pres>
         Active: failed (Result: protocol) since Tue 2022-05-31 19:48:45 PKT; 48min ago
    
    May 31 19:48:45 Daniyal-HP-Notebook systemd[1]: nbfc_service.service: Scheduled restart job, >
    May 31 19:48:45 Daniyal-HP-Notebook systemd[1]: Stopped NoteBook FanControl service.
    May 31 19:48:45 Daniyal-HP-Notebook systemd[1]: nbfc_service.service: Start request repeated >
    May 31 19:48:45 Daniyal-HP-Notebook systemd[1]: nbfc_service.service: Failed with result 'pro>
    May 31 19:48:45 Daniyal-HP-Notebook systemd[1]: Failed to start NoteBook FanControl service.
    
    • Here is the output of journalctl -xe
    -- 
    -- A start job for unit nbfc_service.service has finished with a failure.
    -- 
    -- The job identifier is 3518 and the job result is failed.
    May 31 20:38:33 Daniyal-HP-Notebook systemd[1]: nbfc_service.service: Scheduled restart job, restart counter is at 5.
    -- Subject: Automatic restarting of a unit has been scheduled
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    -- 
    -- Automatic restarting of the unit nbfc_service.service has been scheduled, as the result for
    -- the configured Restart= setting for the unit.
    May 31 20:38:33 Daniyal-HP-Notebook systemd[1]: Stopped NoteBook FanControl service.
    -- Subject: A stop job for unit nbfc_service.service has finished
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    -- 
    -- A stop job for unit nbfc_service.service has finished.
    -- 
    -- The job identifier is 3605 and the job result is done.
    May 31 20:38:33 Daniyal-HP-Notebook systemd[1]: nbfc_service.service: Start request repeated too quickly.
    May 31 20:38:33 Daniyal-HP-Notebook systemd[1]: nbfc_service.service: Failed with result 'protocol'.
    -- Subject: Unit failed
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    -- 
    -- The unit nbfc_service.service has entered the 'failed' state with result 'protocol'.
    May 31 20:38:33 Daniyal-HP-Notebook systemd[1]: Failed to start NoteBook FanControl service.
    -- Subject: A start job for unit nbfc_service.service has failed
    -- Defined-By: systemd
    -- Support: http://www.ubuntu.com/support
    -- 
    -- A start job for unit nbfc_service.service has finished with a failure.
    -- 
    -- The job identifier is 3605 and the job result is failed.
    May 31 20:38:39 Daniyal-HP-Notebook systemd-timesyncd[659]: Timed out waiting for reply from 185.125.190.58:123 (ntp.ubuntu.com).
    May 31 20:38:39 Daniyal-HP-Notebook systemd-timesyncd[659]: Initial synchronization to time server 185.125.190.56:123 (ntp.ubuntu.com).
    
    opened by DaniyalAhmadSE 0
  • Why the fanspeed doesn't slow down

    Why the fanspeed doesn't slow down

    It just increase, but doesn't slow down. Only way is restart the nbfc , and the speed turns to the target speed. But why need to manually restart it ? image

    opened by cxOrz 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)
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 5 May 11, 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 88 Jul 12, 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 Aug 7, 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.2k Jul 29, 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 970 Aug 2, 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 72 Jul 26, 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 45 Jul 19, 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 Jun 19, 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 102 Jun 16, 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 12 Jun 7, 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 12 Jul 27, 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 138 Jul 14, 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 21 Jul 29, 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 236 Aug 6, 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 41 Jul 30, 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 73 Jul 29, 2022