OpenFFBoard is an open-source force feedback interface board designed for simulation devices like steering wheels and joysticks. The firmware provides force feedback effects via USB HID to gaming/simulation software while processing inputs from encoders, analog sources, buttons, and CAN bus. It features a modular architecture based on FreeRTOS with TinyUSB USB stack, supporting multiple motor drivers (PWM, TMC4671, ODrive, VESC, RMD) and a command interface for runtime configuration. Settings persist to flash/EEPROM via an abstraction layer with automatic registration. The project targets STM32 microcontrollers (F407VG, F407VG_DISCO, F411RE) and includes extensive hardware abstraction layers, plugin architecture for extensibility, and clean C++ wrappers for FreeRTOS primitives.
CherryUSB is a portable, high-performance USB device and host stack for embedded systems (MCUs, RTOS). It provides a full-featured USB 2.0/3.0 stack with support for many USB class drivers (CDC ACM/ECM/NCM, HID, MSC, Audio, Video, DFU, MIDI, RNDIS, MTP, ADB, Bluetooth, vendor serial, gamepad, etc.) on both device and host sides. The architecture separates OS abstraction (OSAL), hardware controller drivers (DWC2, EHCI, XHCI, OHCI, MUSB, ChipIdea, FSdev, and many vendor-specific ports), and class implementations. It includes extensive demo templates, platform integrations (FatFS, lwIP, LVGL, UF2 bootloader), and tooling (Python test scripts, UF2 conv). The stack is used in commercial products and is registered in several embedded package ecosystems (RT-Thread, ESP-IDF, Bouffalolab). Key entry points are usbd_initialize() and usbh_initialize() with class-specific initialization routines in the demo folder. The codebase is large and well-organized but contains legacy ports and some vendor-specific glue code that may require adaptation.
This repository serves as a historical archive and clearinghouse for software controlling the ThingM blink(1) USB RGB LED device. It contains a wide variety of tools, libraries, and firmware across multiple platforms (Windows, macOS, Linux, Qt, etc.), including language-specific bindings (Python, Node.js, Java, Go, Ruby, .NET) and integration scripts for services like email, GitHub, and IFTTT. The README explicitly states that most code is deprecated and points to official repositories for current development. Despite its deprecated status, the repository contains several high-quality, reusable components. Notably, the embedded Newtonsoft.Json library (in windows/Blink1Control/JSON/Newtonsoft.Json/) provides a robust JSON serialization framework with support for multiple .NET platforms via conditional compilation. Additionally, the Windows HidLibrary (in windows/ManagedBlink1/HidLibrary/) offers a well-structured abstraction for USB HID device communication, suitable for reuse in other HID-based projects. The overall architecture is fragmented, reflecting the repository's role as a collection of independent tools rather than a unified application. While this makes it a valuable reference for blink(1) integration patterns, the codebase exhibits signs of technical drift due to outdated dependencies and platform-specific implementations that may not align with current best practices. Maintenance is minimal, as active development has moved to satellite repositories.