awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
hathach avatar

hathach/tinyusb

0
View on GitHub↗
6,524 stars·1,362 forks·C·mit·21 viewswww.tinyusb.org↗

Tinyusb

TinyUSB

Features

  • USB Device Stacks - Adds USB device functionality to microcontrollers so they can act as keyboards, drives, or serial ports.
  • USB Endpoint Transfers - Provides the fundamental USB data transfer mechanism via endpoint read/write operations.
  • USB Class Driver Plugin Interfaces - Provides a fixed callback table for registering custom USB class drivers without modifying core stack code.
  • Embedded USB Host Stacks - Drives USB peripherals like keyboards, mice, and storage devices directly from a microcontroller without a host computer.
  • USB Class Implementations - Implements standard USB device classes such as HID, CDC, MSC, and Audio without dynamic allocation.
  • USB Host Class Implementations - Implements host-side USB class drivers for HID, MSC, CDC-ACM, and serial adapters.
  • Multi-Architecture MCU Stacks - Compiles and runs a single USB stack across a wide range of MCU architectures from different manufacturers.
  • USB Device Communication - Implements low-level USB device communication for host enumeration and class protocol exchanges.
  • Custom USB Class Driver Registrations - Ships a plugin interface for registering custom USB class drivers without modifying core stack code.
  • Standard USB Device Emulations - Emulates standard USB device classes like HID, MSC, and CDC for host enumeration.
  • USB Device Stack Initializations - Provides initialization routines for USB device controllers across supported microcontrollers.
  • USB Host Communications - Provides host-mode USB communication to drive peripherals like keyboards and storage devices.
  • USB Host Emulations - Emulates a USB host controller to drive peripherals like keyboards and mass storage devices.
  • USB Host Stack Initializations - Provides initialization routines for USB host controllers across supported microcontrollers.
  • USB Power Delivery Contract Negotiations - Implements USB Power Delivery 3.0 contract negotiation for power sourcing and sinking.
  • USB Power Delivery Managers - Negotiates and manages power contracts over USB Type-C using the Power Delivery 3.0 protocol on embedded hardware.
  • USB Power Delivery Protocol Engines - Implements USB PD 3.0 message passing and state machine for negotiating power contracts over Type-C connections.
  • USB Power Delivery Stacks - Provides an embedded USB Power Delivery 3.0 stack that negotiates and manages power contracts over USB Type-C.
  • Hardware Abstraction Layers - Wraps MCU-specific USB controller registers behind a hardware abstraction layer for portability across architectures.
  • Microcontroller USB Libraries - Provides a portable USB library that compiles across diverse microcontroller architectures from different manufacturers.
  • Runtime Descriptor Switches - Switches between multiple USB device descriptor sets at runtime to present different device profiles.
  • Runtime USB Configuration Switches - Supports runtime switching between multiple USB device configurations via descriptor changes.
  • Custom Class Driver Registrations - Enables writing and registering custom USB class drivers for device or host mode without modifying core stack code.
  • USB Low-Power State Handlings - Handles USB suspend, resume, and remote wakeup signals for power conservation.
  • RTOS-Agnostic Implementations - Works on bare metal or with FreeRTOS, RT-Thread, or Mynewt without changing the USB code.
  • RTOS-Agnostic Interrupt Handlers - Delegates interrupt handling to a central queue and uses semaphores to work without an OS or with FreeRTOS, RT-Thread, or Mynewt.
  • Centralized Interrupt Queues - Delegates USB interrupt service routines to a central queue processed by the application thread.
  • Compile-Time Buffer Allocations - Pre-allocates all endpoint buffers and control structures at compile time for deterministic memory usage.
  • C Object-Oriented Frameworks - Organises USB protocol handling into device and host stacks using C structs with function pointers for polymorphism.
  • Embedded Systems - Embedded USB stack.
  • Hardware Drivers - Cross-platform USB stack for embedded systems.

Star history

Star history chart for hathach/tinyusbStar history chart for hathach/tinyusb

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Tinyusb

Similar open-source projects, ranked by how many features they share with Tinyusb.
  • embassy-rs/embassyembassy-rs avatar

    embassy-rs/embassy

    8,813View on GitHub↗

    Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It enables the execution of multiple concurrent tasks to maximize energy efficiency and CPU usage, utilizing an async executor that puts the processor to sleep when idle. The framework includes a comprehensive set of embedded components, featuring a hardware abstraction layer for peripherals like GPIO, SPI, I2C, and UART, alongside a TCP/IP network stack and a USB device stack. It also provides a Bluetooth Low Energy host stack for wireless communication and a bootloader framework t

    Rustasyncdriversembedded
    View on GitHub↗8,813
  • libusb/libusblibusb avatar

    libusb/libusb

    6,085View on GitHub↗

    libusb is a cross-platform user-space library that provides a consistent C API for discovering, configuring, and communicating with USB devices from applications. It abstracts operating-system-specific USB driver details behind a single interface that works on Linux, macOS, Windows, and other platforms, enabling developers to write portable USB code without platform-specific knowledge. The library supports both synchronous and asynchronous I/O models for USB transfers. Synchronous operations block the calling thread until a transfer completes, offering a straightforward sequential programming

    C
    View on GitHub↗6,085
  • raspberrypi/pico-examplesraspberrypi avatar

    raspberrypi/pico-examples

    3,835View on GitHub↗

    This project is a reference library of firmware examples and a development framework for creating embedded C applications on the RP2040 microcontroller. It provides a collection of hardware peripheral drivers and foundational patterns for managing system resources in resource-constrained environments. The library features reference implementations for programmable I/O state machines, allowing for the creation of custom hardware-level protocols. It also provides a multicore embedded framework to distribute computational workloads across multiple processor cores using symmetric processing. The

    C
    View on GitHub↗3,835
  • qmk/qmk_firmwareqmk avatar

    qmk/qmk_firmware

    20,478View on GitHub↗

    This project is a keyboard firmware framework and programmable keyboard ecosystem designed for Atmel AVR and ARM microcontrollers. It provides the embedded software necessary to implement the USB Human Interface Device standard, allowing hardware to communicate keystrokes and mouse movements to a host computer. The framework distinguishes itself by offering a comprehensive toolchain for custom hardware development, including a command line interface for project scaffolding, firmware flashing, and configuration linting. It supports a variety of flexible configuration methods, allowing users to

    Catmel-avrcc-plus-plus
    View on GitHub↗20,478
See all 30 alternatives to Tinyusb→

Frequently asked questions

What does hathach/tinyusb do?

TinyUSB

What are the main features of hathach/tinyusb?

The main features of hathach/tinyusb are: USB Device Stacks, USB Endpoint Transfers, USB Class Driver Plugin Interfaces, Embedded USB Host Stacks, USB Class Implementations, USB Host Class Implementations, Multi-Architecture MCU Stacks, USB Device Communication.

What are some open-source alternatives to hathach/tinyusb?

Open-source alternatives to hathach/tinyusb include: embassy-rs/embassy — Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It… libusb/libusb — libusb is a cross-platform user-space library that provides a consistent C API for discovering, configuring, and… raspberrypi/pico-examples — This project is a reference library of firmware examples and a development framework for creating embedded C… qmk/qmk_firmware — This project is a keyboard firmware framework and programmable keyboard ecosystem designed for Atmel AVR and ARM… earlephilhower/arduino-pico — This project provides a development framework that enables programming Raspberry Pi Pico microcontrollers using the… opentabletdriver/opentabletdriver — OpenTabletDriver is a user-mode graphics tablet driver and USB HID input manager that translates raw USB input from…