Open-source C projects categorized as IoT | Edit details

Top 23 C IoT Projects

  • GitHub repo netdata

    Real-time performance monitoring, done right! https://www.netdata.cloud

    Project mention: What software with web interface do you use? What can you recommend? (Gimmicky or useful software) | reddit.com/r/linux | 2021-09-20

    Kinda surprised no one has mentioned netdata

  • GitHub repo Tasmota

    Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at

    Project mention: How to add LED brightness control to this code - Project Guidance | reddit.com/r/arduino | 2021-09-21

    It's why most of us cheat and use a WS281x chip to provide one wire control with the FastLED or NeoPixel libraries. That said, I think the Tasmota project used to have code for brightness control on discrete RGB LEDs.

  • Scout APM

    Scout APM: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.

  • GitHub repo TDengine

    An open-source big data platform designed and optimized for the Internet of Things (IoT).

    Project mention: What’s TAOS Data? | reddit.com/r/u_TDengine | 2021-06-03

    Join us on GitHub:https://github.com/taosdata/TDengine

  • GitHub repo TimescaleDB

    An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.

    Project mention: SQL Database Design | reddit.com/r/algotrading | 2021-09-21

    What database are you using? You might be able to use an extension or plugin. For example, TimeScaleDB is an extension for PostgreSQL.

  • GitHub repo cray

    A simple and easy-to-use library to enjoy videogames programming

    Project mention: Making a 3d game from scratch with a code editor vs something like Unreal Engine. | reddit.com/r/gamedev | 2021-09-20

    Alternatively, I think a good compromise for people who want more control over the inner workings of their game but don't want to use a full game engine is using a game framework like Monogame or Raylib. In our salad analogy, this is like buying a a good bag of lettuce, but growing your own toppings, dressings, etc.

  • GitHub repo rt-thread

    RT-Thread is an open source IoT operating system.

    Project mention: Rust for Embedded Development | dev.to | 2021-08-17

    Now, let's get it on the Open Source RT-Thread operating system to demonstrate how rust can be used for embedded development.

  • GitHub repo jerryscript

    Ultra-lightweight JavaScript engine for the Internet of Things.

    Project mention: Can the PineTime Watch stream music without a phone? (Onboard music storage) | reddit.com/r/PINE64official | 2021-09-13

    There are subsets of JS for embedded device e.g. Espruino https://github.com/espruino/Espruino for BangleJS https://shop.espruino.com/banglejs also with 4MB or JerryScript https://jerryscript.net

  • Nanos

    Run Linux Software Faster and Safer than Linux with Unikernels.

  • GitHub repo zephyr

    Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.

    Project mention: How to contribute to open source or Linux kernel? | reddit.com/r/linux | 2021-09-15

    Microcontrollers are a good start. Boards are cheap and sensors are plentiful. You could get a yet unsupported board and port RIOT, Zephyr or NuttX.

  • GitHub repo wasm3

    🚀 The fastest WebAssembly interpreter, and the most universal runtime

    Project mention: Does it make sense to write an interpreter in a non-GC programming language (like Rust or C)? | reddit.com/r/ProgrammingLanguages | 2021-08-11

    I wondered if some interpreter for non garbage collected languages existed. I found one for Web assembly https://github.com/wasm3/wasm3 (written in C) There are apparently several C interpreters too.

  • GitHub repo RIOT

    RIOT - The friendly OS for IoT (by RIOT-OS)

    Project mention: Is writing an RTOS (for fun) for the Sipeed's Longan Nano practical? | reddit.com/r/RISCV | 2021-09-19

    e.g. RIOT only has partial support for the peripherals (just UART, timers and simple GPIO access), you could implement drivers for SPI, I2C or even UART.

  • GitHub repo wasm-micro-runtime

    WebAssembly Micro Runtime (WAMR)

    Project mention: How to debug C/C++ compiled to WebAssembly - That One Game Dev | reddit.com/r/programming | 2021-08-29

    This is realated to a project I will be probably working on in the future that needs plugins. I want to use wasm/ and https://github.com/bytecodealliance/wasm-micro-runtime to call the plugins. An ABI/platform stable plugin system where whatever compiles to wasm is A-OK. A small loss in perf, but in the use case I am ok with that. Should be interesting. Worst case, I back out and use dlload or whatever.

  • GitHub repo mongoose-os

    Mongoose OS - an IoT Firmware Development Framework. Supported microcontrollers: ESP32, ESP8266, CC3220, CC3200, STM32F4, STM32L4, STM32F7. Amazon AWS IoT, Microsoft Azure, Google IoT Core integrated. Code in C or JavaScript.

    Project mention: CISA Advisory (ICSA-21-119-04) - CyberHoot | reddit.com/r/u_CyberHoot | 2021-08-20

    Cesanta Software mongooses – Update available

  • GitHub repo dustcloud

    Xiaomi Smart Home Device Reverse Engineering and Hacking

    Project mention: Our fridge just emailed us to say we opened its door too many times | news.ycombinator.com | 2021-09-10

    A few of the Xaiomi's and Viomi's are rootable. I have a Gen1 Xaiomi and it's brilliant. I got ssh access to the ubuntu install and installed https://github.com/Hypfer/Valetudo and run it 100% local via my home-assistant install.

    dgiese is a proficient vacuum security researcher and has most of that stuff available here: https://github.com/dgiese/dustcloud

  • GitHub repo printf

    Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.

    Project mention: A 1 hour interview for an embedded engineering position | reddit.com/r/C_Programming | 2021-08-24

    There are many good and tiny printf's fir embedded on GitHub. https://github.com/mpaland/printf eg Better than the bsd printf mostly

  • GitHub repo Kamailio

    Kamailio - The Open Source SIP Server for large VoIP and real-time communication platforms -

  • GitHub repo freeswitch

    FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.

    Project mention: UDM Pro listening on undocumented TCP port 2856 with cert valid for 100 years - what is this and how do I turn it off? | reddit.com/r/Ubiquiti | 2021-04-01

    FreeSwitch is a telecom stack similar to Asterisk. See here: freeswitch. It would be to support VoIP on the UDMP.

  • GitHub repo wolfssl

    The wolfSSL library is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!

    Project mention: 5 horrific techniques that will make your co-developers really hate your code | reddit.com/r/programming | 2021-07-01

    Ugh. No kidding.

  • GitHub repo crun

    A fast and lightweight fully featured OCI runtime and C library for running containers

    Project mention: Is Docker Dead in the Water? | reddit.com/r/programming | 2021-05-07

    The docker utility isn't the only way to build and run containers. There's also cri-o, podman, and crun among others for running containers. For building there is podman again, Jib for Java applications, and bazel plus many others. The docker approach of using a client to connect to a daemon required to run as root has turned out to be slow and insecure.

  • GitHub repo Watchy

    Watchy - An Open Source E-Ink Smartwatch

    Project mention: Watch not keeping time? | reddit.com/r/watchy | 2021-08-12

    Also see https://github.com/sqfmi/Watchy/issues/40

  • GitHub repo Lua-RTOS-ESP32

    Lua RTOS for ESP32

    Project mention: Lua-RTOS: a real-time operating system for ESP32 | reddit.com/r/hackernews | 2021-06-09
  • GitHub repo arduino-mqtt

    MQTT library for Arduino

    Project mention: WIFI BUS CONTOL NOOB QUESTION | reddit.com/r/esp32 | 2021-04-27

    https://randomnerdtutorials.com/esp32-mqtt-publish-subscribe-arduino-ide/ https://github.com/256dpi/arduino-mqtt

  • GitHub repo pycopy

    Pycopy - a minimalist and memory-efficient Python dialect. Good for desktop, cloud, constrained systems, microcontrollers, and just everything.

    Project mention: Pycopy 3.5.4 - a minimalist and memory-efficient Python dialect | reddit.com/r/Python | 2021-03-21

    Oh, so you're interested to get 100 tomes of technical drawings for SpaceX? You may be out of luck with it, but with any open-source project you're in luck - source to answer all of your questions is right there ;-). https://github.com/pfalcon/pycopy in this case. There's also the testsuite which formally specifies everything Pycopy can do (coverage 97%): https://github.com/pfalcon/pycopy/tree/master/tests . Finally, the docs include the section on specific differences with CPython3.4: https://pycopy.readthedocs.io/en/latest/differences/index.html (but that's human-written, so definitely not complete). By the way, docs are 381 pages rendered as a PDF: https://pycopy.readthedocs.io/_/downloads/en/latest/pdf/ .

  • GitHub repo pear

    WebRTC Library for IoT/Embedded Device using C (by sepfy)

    Project mention: A simple C implementation to stream H.264 to browser using WebRTC | news.ycombinator.com | 2021-04-07

    I think there's some truth in what as-j is saying. Rust binaries (and C++ ones) tend to be larger than C ones. I think the major reasons are (a) Rust dependencies being statically linked due to a lack of ABI stability, (b) inclusion of portions of the (statically linked, see a) Rust standard library used by the program where C code uses libc, (c) code bloat due to monomorphization, (d) the ease of just using a full-featured library where someone writing in C might cheat a little bit. As an example of what I mean by the last point, see sdp_attribute_get_answer in this codebase. [1] It's writing JSON, but it doesn't use a JSON library that actually escapes the included string. It just assumes the included string doesn't have a quote character in it. Is that assumption valid? Will it always be valid? I'm not sure on quick inspection.

    There are ways around all of these:

    * a. Static vs dynamic linkage: in an embedded system, it'd be reasonable to just produce a single userspace binary that does everything. It can change its behavior based on argv[0]. I think this is not too unusual for constrained systems even with C binaries. Eg busybox does it. If you only have one binary, you don't need dynamic linking. Also, I think it's not strictly true that Rust doesn't support dynamic linking. I think you can dynamically link everything if you ensure the whole system is built with the same compiler version.

    * b. Standard library. You don't have to use it at all, or you can use it sparingly, paying only for what you use.

    * c. Monomorphization. You could write (for example) a Go-like map [2] rather than relying so heavily on monomorphization. I'd love to see someone take this idea as far as possible; it might be a good idea for a lot of non-inner-loop code in general, not just on tight embedded systems.

    * d. Using full-featured libraries. Obviously no one is making you do this; the same cheats available in C are available in Rust.

    but in fairness, the further you go down this path, the further you are from just being able to just take advantage of the whole Rust ecosystem.

    Personally, I'd still rather develop or use a #![no_std] Rust codebase than a C one. Memory safety is important to me. IOT devices are no exception to that. Their security is historically horrible but I'd like to change that.

    [1] https://github.com/sepfy/pear/blob/b984c8dccaafdcdd1b181786a...

    [2] https://dave.cheney.net/2018/05/29/how-the-go-runtime-implem...

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-09-21.


What are some of the best open-source IoT projects in C? This list will help you:

Project Stars
1 netdata 55,973
2 Tasmota 16,135
3 TDengine 16,013
4 TimescaleDB 11,694
5 cray 7,206
6 rt-thread 6,214
7 jerryscript 5,992
8 zephyr 4,933
9 wasm3 4,121
10 RIOT 3,934
11 wasm-micro-runtime 2,259
12 mongoose-os 2,195
13 dustcloud 1,859
14 printf 1,511
15 Kamailio 1,478
16 freeswitch 1,461
17 wolfssl 1,266
18 crun 1,185
19 Watchy 1,097
20 Lua-RTOS-ESP32 898
21 arduino-mqtt 744
22 pycopy 660
23 pear 492
Find remote jobs at our new job board 99remotejobs.com. There are 25 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives