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

    [root@zenbook ~]# '/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
  • Module ec_sys not found in directory /lib/modules/6.0.15-300.fc37.x86_64

    Module ec_sys not found in directory /lib/modules/6.0.15-300.fc37.x86_64

    I was using nbfc-linux for somedays ago and it worked perfectly fine for me. But im using fedora 37 and windows 10 with dual boot. Today i was in linux and i've noticed the nbfc service is not working. I've tryed to use 'sudo nbfc start' and i got it:

    Using 'Acer Nitro AN515-51' as model config Using 'ECSysLinux' as EmbeddedControllerType modprobe: FATAL: Module ec_sys not found in directory /lib/modules/6.0.15-300.fc37.x86_64 Could not load `ec_sys' kernel module

    But i have ec_sys installed as acpi_ec describe. This is what i get when i try to use 'sudo ./install.sh' from the project:

    acpi_ec v1.0.2 is already installed

    What should i do?

    opened by arthurbg951 3
  • 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
  • Method to disable BIOS Fan Control

    Method to disable BIOS Fan Control

    For the HP Omen 16 series BIOS Fan control can only be disabled by setting registers 0x62 to 6 and then 0x63 to 0. But I can't seem to find any way to make this possible. So are there any solutions to this that can be integrated directly into nbfc.

    opened by alou-S 2
  • ec_linux timer expired

    ec_linux timer expired

    [name@fedora 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
  • willing to create Debian package for nbfc-linux

    willing to create Debian package for nbfc-linux

    I've got GPD P2 MAX and currently I'm using some creepy perl script to keep fan under control. I'd like to switch to something more maintainable. Happily I'm also Debian developer so I'm planning to create Debian package for nbfc-linux.

    Any objections? :)

    opened by fenio 6
  • 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 11
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.7k Dec 30, 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.7k Jan 4, 2023
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 983 Dec 26, 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 92 Jan 3, 2023
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 Dec 20, 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 Dec 12, 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 166 Jan 4, 2023
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 313 Jan 5, 2023
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 82 Nov 28, 2022