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
libusb avatar

libusb/libusb

0
View on GitHub↗
6,085 stars·2,053 forks·C·LGPL-2.1·27 viewslibusb.info↗

Libusb

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 model, while asynchronous operations start non-blocking transfers and invoke a user-supplied callback upon completion, enabling concurrent data flows. All functions return negative integer error codes that map to documented constants, allowing callers to diagnose failures without exceptions. The library also provides structured diagnostic output to standard error, activated through an API call or environment variable, to aid troubleshooting.

For device management, libusb includes a hotplug event polling mechanism that monitors system device notifications on supported platforms and fires a registered callback when a USB device is attached or removed during runtime. The library handles control, bulk, interrupt, and isochronous transfer types, routing each through separate code paths that match the USB protocol’s timing and data rules.

Features

  • USB Device Communication - Provides a cross-platform C API for control, bulk, interrupt, and isochronous USB data transfers.
  • USB Endpoint Transfers - Sends control, bulk, interrupt, and isochronous data between a host and USB device via endpoint transfers.
  • Asynchronous USB Transfer Engines - Starts non-blocking USB I/O operations that notify completion via callbacks for greater concurrency.
  • Cross-Platform USB Access - Provides a consistent C API for discovering and communicating with USB devices across Linux, macOS, and Windows.
  • USB - Enables non-blocking USB data transfers with completion notification for concurrent application designs.
  • USB Asynchronous Transfers - Provides non-blocking USB transfers with callback-based completion notification for concurrent application designs.
  • Synchronous Blocking I/O - Provides synchronous blocking USB transfers for a straightforward sequential programming interface.
  • USB Synchronous Transfers - Runs USB I/O operations that block until completion, providing a simple sequential programming model.
  • Platform Abstraction Layers - Hides OS-specific USB driver details behind a single C API that works across Linux, macOS, and Windows.
  • Cross-Platform USB Libraries - Provides a consistent user-space API to discover, configure, and communicate with USB devices across operating systems.
  • Transfer Type Routing - Routes control, bulk, interrupt, and isochronous requests through separate code paths matching USB protocol rules.
  • USB Error Diagnosis - Interprets negative error codes from USB operations to identify and troubleshoot device communication failures.
  • USB Error Code Mappings - Maps negative error codes from USB function calls to documented constants for diagnosing device communication failures.
  • Hotplug Callback Registration - Triggers registered callbacks when USB devices are attached or removed on supported platforms during runtime.
  • Runtime Hotplug Detection - Receives notifications when USB devices are attached or removed from the system during runtime via polling.
  • USB Hotplug Event Handlers - Implements a hotplug polling mechanism that fires callbacks when USB devices are attached or removed during runtime.
  • USB Hotplug Polling - Monitors system device notifications and fires callbacks when USB devices are attached or removed during runtime.
  • Negative Error Code Returns - Returns negative integer error codes from all functions, enabling callers to diagnose failures without exceptions.
  • USB Error Code Interpreters - Ships a convention of returning negative error codes that map to documented constants for diagnosing USB communication failures.
  • Embedded Systems - User-space USB communication library.
  • General Libraries - Generic access library for USB devices.

Star history

Star history chart for libusb/libusbStar history chart for libusb/libusb

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 Libusb

Similar open-source projects, ranked by how many features they share with Libusb.
  • hathach/tinyusbhathach avatar

    hathach/tinyusb

    6,524View on GitHub↗

    TinyUSB

    Cembeddedmidimsc
    View on GitHub↗6,524
  • blacktop/ipswblacktop avatar

    blacktop/ipsw

    3,163View on GitHub↗

    ipsw is a specialized toolkit for iOS firmware analysis, binary reverse engineering, and hardware interaction. It provides a suite of tools for downloading, extracting, and analyzing firmware images and kernel caches, alongside a MachO binary analysis tool for disassembling and patching executables. The project distinguishes itself through integrated language-model-powered code reconstruction to translate machine code into high-level source code. It also features an automation client for the App Store Connect API to manage certificates and application settings. The framework covers a broad r

    Goappleclass-dumpdyld
    View on GitHub↗3,163
  • cnlohr/rawdrawandroidcnlohr avatar

    cnlohr/rawdrawandroid

    4,281View on GitHub↗

    rawdrawandroid is a framework for building Android applications using C and Make. It provides a native development system that compiles source code into standalone executable packages, bypassing the standard Java or Kotlin toolchains and virtual machines. The project features a native UI toolkit for creating hardware-accelerated graphics windows and a dedicated hardware interface for direct communication with USB peripherals and onboard sensors. It utilizes a containerized build environment to ensure consistent compilation and signing of binaries without requiring local toolchain installation

    C
    View on GitHub↗4,281
  • 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
See all 30 alternatives to Libusb→

Frequently asked questions

What does libusb/libusb do?

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.

What are the main features of libusb/libusb?

The main features of libusb/libusb are: USB Device Communication, USB Endpoint Transfers, Asynchronous USB Transfer Engines, Cross-Platform USB Access, USB, USB Asynchronous Transfers, Synchronous Blocking I/O, USB Synchronous Transfers.

What are some open-source alternatives to libusb/libusb?

Open-source alternatives to libusb/libusb include: hathach/tinyusb — TinyUSB. idescriptor/idescriptor — iDescriptor is a suite of specialized tools for managing, diagnosing, and interacting with iOS devices. It provides a… cnlohr/rawdrawandroid — rawdrawandroid is a framework for building Android applications using C and Make. It provides a native development… blacktop/ipsw — ipsw is a specialized toolkit for iOS firmware analysis, binary reverse engineering, and hardware interaction. It… embassy-rs/embassy — Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It… microsoft/windows-universal-samples — This repository is a comprehensive collection of reference implementations and sample libraries for the Universal…