登录/注册

libusb

更多

Libusb 中文介绍

Libusb 是一个开源的用户态 USB 库,允许开发者在应用程序中直接访问 USB 设备,无需编写内核驱动。支持跨平台(Linux、macOS、Windows、Android 等),提供同步/异步 API,是嵌入式开发、USB 协议分析等领域的常用工具。


核心功能:

  1. 跨平台支持

    • Linux(通过 udevusbfs
    • Windows(需驱动如 libusb-win32Zadig 生成的驱动)
    • macOS(原生支持)
    • Android(通过 USB Host API)
  2. 传输模式

    • 同步 API:阻塞式传输(简单易用)
    • 异步 API:非阻塞 + 事件循环(高性能)
  3. 协议支持
    所有 USB 传输类型:

    • 控制传输(Control Transfer)
    • 中断传输(Interrupt Transfer)
    • 批量传输(Bulk Transfer)
    • 等时传输(Isochronous Transfer)
  4. 设备枚举与热插拔

    • 动态检测设备连接/断开
    • 按 VID/PID 过滤设备

使用流程:

  1. 初始化库

    libusb_context *ctx;
    libusb_init(&ctx);
  2. 查找设备

    libusb_device **dev_list;
    ssize_t cnt = libusb_get_device_list(ctx, &dev_list);
    libusb_device_handle *dev_handle = libusb_open_device_with_vid_pid(ctx, vid, pid);
  3. 声明接口(需权限):

    libusb_claim_interface(dev_handle, 0);  // 占用接口0
  4. 数据传输(示例:批量写入):

    unsigned char data[64] = {...};
    int transferred;
    libusb_bulk_transfer(dev_handle, endpoint_out, data, sizeof(data), &transferred, timeout);
  5. 释放资源

    libusb_release_interface(dev_handle, 0);
    libusb_close(dev_handle);
    libusb_exit(ctx);

常见问题:

  1. 权限不足(Linux)
    解决方案

    • 添加 udev 规则(示例):
      SUBSYSTEM=="usb", ATTR{idVendor}=="1234", MODE="0666"
    • 或直接以 sudo 运行(不推荐)。
  2. 设备被占用(如内核驱动)
    解决:解除内核驱动绑定:

    sudo echo -n "1-2" > /sys/bus/usb/drivers/usb/unbind  # 示例路径
  3. Windows 驱动问题
    解决:使用 Zadig 生成 libusb 兼容驱动。


示例项目:


资源推荐:

深入学习可从官方示例代码(examples/ 目录)开始。

MA35-RTT如何安装 Python 和 Libusb (Windows) ?

MA35-RTT:如何安装 Python 和 Libusb (Windows) ?

2025-09-03 08:30:56

使用libusb可以打开libusb设备,但是无法烧写固件,为什么?

我使用libusb可以打开libusb设备,但是无法烧写固件,我需要在执行烧录固件之前,还需要做什么步骤

2025-05-23 07:34:09

使用Cypress驱动的设备,无法通过libusb_open打开设备怎么解决?

而且Cypress的官方驱动似乎跟 libusb 不兼容,因为我使用 Cypress 驱动的设备,无法通过 libusb_open打开设备,但是基于 winusb 的驱动可以

2024-05-22 06:30:39

GWU2U Driver (libusb based)用户指南

电子发烧友网站提供《GWU2U Driver (libusb based)用户指南.pdf》资料免费下载

资料下载 王丽 2022-09-19 09:34:49

libusb USB设备访问接口库

libusb.zip

资料下载 贾飞小 2022-04-15 09:40:28

【转载+原创】嵌入式Linux下基于libusb的USB驱动开发

两项usb接口的产品插在linux上,调用动态库就能直接运行,很奇怪为什么不需要安装usb驱动,原来是使用了libusb作为无驱开发,具体解释见转载的这篇文章链接:https://blog.csdn.net/su1041168096/article/details/78989835...

资料下载 佚名 2021-11-01 16:32:43

如何使用高速51单片机进行模拟USB接口的设计

参照AVRUSB技术给出了51单片机通过模拟USB通信的实现方法。用VC编写了上位机软件,通过libusb驱动实现了PC与 ST12LE5608AD的通信。

资料下载 张生 2019-08-13 17:32:00

Zadig通用串口驱动软件免费下载

Zadig是一个安装通用USB驱动程序的Windows应用程序,例如WinUSB,libusb-win32/libusb0,来帮助你访问USB设备,支持的设备包括相机的驱动以及任天堂的switch游戏机驱动!

资料下载 ibmea 2019-06-17 08:00:00

使用libusb可以打开libusb设备,但是无法烧写固件,怎么解决?

我使用libusb可以打开libusb设备,但是无法烧写固件,我需要在执行烧录固件之前,还需要做什么步骤

2024-05-21 07:40:26

STM32L476 run报错Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED的原因?

project 没错误, 但是run的话console会有报错,求大神指导。 Error: libusb_open() failed with LIBUSB

2024-04-10 07:57:38

libusb的用法和使用步骤

可以通过 libusb 访问 USB 设备,不需要 USB 设备端的驱动程序,需要移除原来的驱动程序。然后就可以直接访问 USB 控制器的驱动程序,使用 open/read/write/ioctl/close 这些接口来打开设备、收发数据、关闭设备。

2023-11-14 09:19:18

MA35-RTT如何安装Python和Libusb (窗口) ?

MA35-RTT如何安装 Python 和 Libusb (窗口) ?

2023-09-07 06:12:14

Windows下基于MSVC搭建libusb开发环境

Windows下基于MSVC搭建libusb开发环境

2023-06-08 10:25:44

求助,CH573F的USB有linux下基于libusb进行通信的Demo示例吗?

请教下CH573F的USB有linux下基于libusb进行通信的Demo示例吗

2022-08-18 07:59:27

通过libusb实现PC和ZYNQ之间的USB通信

libusb是一个免费的跨平台USB库,本文在windows平台下使用libusb库开发上位机程序与ZYNQ的USB接口进行数据收发测试。libusb

2022-02-19 19:23:40

7天热门专题 换一换
相关标签