Articles of libusb

使用libusb-1.0作为非root用户访问USB设备

我试图在RHEL5上以非root用户身份与USB设备进行连接。 该器件是一个GPIO接口(其文档可以在http://www.xdimax.com/sub20/sub20.htmlfind),它使用libusb-1.0。 使用其API打开设备的过程是: sub_device d; d = sub_find_devices(0); sub_handle h = sub_open(d); 当我这样做时, sub_find_devices()调用工作,但在sub_open()调用,我得到libusb错误-3,这表明我没有权限打开设备写入。 我对这个问题做了一些研究,发现我应该创build一个udev规则。 在设备的sysfs节点上使用udevinfo,我得到: looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2': KERNEL=="2-1.2" SUBSYSTEM=="usb" SYSFS{configuration}=="" SYSFS{serial}=="15F2" SYSFS{product}=="SUB-20" SYSFS{manufacturer}=="XDIMAX" SYSFS{maxchild}=="0" SYSFS{version}==" 1.10" SYSFS{devnum}=="6" SYSFS{speed}=="12" SYSFS{bMaxPacketSize0}=="64" SYSFS{bNumConfigurations}=="1" SYSFS{bDeviceProtocol}=="00" SYSFS{bDeviceSubClass}=="00" SYSFS{bDeviceClass}=="ff" SYSFS{bcdDevice}=="0001" SYSFS{idProduct}=="ffc3" SYSFS{idVendor}=="04d8" SYSFS{bMaxPower}=="100mA" SYSFS{bmAttributes}=="80" SYSFS{bConfigurationValue}=="1" SYSFS{bNumInterfaces}==" 1" 然后,我在文件/etc/udev/rules.d/991-local.rules创build了以下udev规则: SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="ffc3", NAME="sub20", GROUP="582", MODE="0660" 582是我的普通用户所属的组的GID。 我也尝试了与组名称的规则,它没有工作。 创build此规则后,将使用正确的权限创build设备文件/dev/sub20 ,但仅在设备插入时存在,这使我有理由相信udev规则在正确的设备上匹配。 但是,我的代码仍然收到错误-3。 […]

libusb中断传输

我需要逆向devise一个用于定制HID USB设备的驱动程序(控制面板上的一些button和LED)。 驱动程序仅在Windows上可用,我们需要* nix实现。 该设备显然是一个HID设备,虽然不是一个特定的类。 它提供了两个接口,每个接口都有一个中断端点。 我的设置目前涉及一个在Ubuntu主机上运行Windows的VirtualBox,通过Wireshark捕获USBstream量。 协议是相当简单的,我已经获得了相当好的理解。 我在一个简单的C ++控制台程序中使用libusb-1.0进行原型devise。 我已经设法通过发出一个SET_REPORT控制传输来切换LED,但是在传输中通过中断来接收button的努力。 事实上,以下呼吁块永远: unsigned char bytes[8] = { 0 }; int len = 0; int ret = libusb_interrupt_transfer(handle, 0x81, bytes, 8, &len, 0); 在Wireshark中检查生成的URB时,它看起来就像在Windows会话中捕获的相同。 但我从来没有从设备得到答复。 我摔倒了,我错过了一些设置。 请注意,设备已正确打开,设备提供的两个界面都已获得成功声明。 即使在我的Linux应用程序中,通过控制传输的input报告也正在低谷。 感谢任何指针! 阿恩 附录I:我想知道如何在使用libusb_interrupt_transfer()时指定要接收哪个报告ID? 附录二:当比较Windows驱动程序与Wireshark中的上述代码生成的请求时,我看不到任何区别(URB中的值相同)。 但是,只有当Windows驱动程序发出中断传输时才会返回。 当在Wireshark中检查Windows驱动程序通信时,除了各种GET_DESCRIPTOR(…)之外,我没有看到任何控制转移。 最重要的是:没有SET_INTERFACE或SET_CONFIGURATION因此,我怀疑问题是关于图书馆或我如何使用它,并与设备无关。

如何在linux中获取usb的urb信息

我试图得到USB棒的urb信息。 我写如下: #include <sys/ioctl.h> #include <errno.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <usb.h> /* #include <stropts.h> */ /* #include <inttypes.h> */ #include <linux/usbdevice_fs.h> /* #include <asm/byteorder.h> */ /* #include <linux/usb/ch9.h> */ #define USBDEVFS_REAPURB _IOW('U', 12, void *) int main(int argc, char *argv[]) { int fd; int result; int i; struct […]

访问Linux / dev / USB作为标准文件与USB设备通信

我正在研究在Linux中与USB设备进行通信的方法,并且宁愿不写一个Linux内核驱动程序。 我知道libusb是存在的,并且是一个可以工作的用户空间库,但是我们的embedded式设备不支持usbfs(如果需要更改内核来添加支持,那真是一个痛苦)。 所以我的问题基本上是这样的:通过直接读写USB设备对应的/ dev / USB或udev文件,从而绕过对自定义Linux驱动程序和usbfs的需求,可以/可取地与USB设备进行通信? 我希望只要/ dev / USB或udev设备文件打开,通过直接通过文件types读/写命令读/写协议包就可以使用USB设备协议进行通信。 请思考和build议。 跟进: 由于需要与之通话的USB设备是USB HID类设备,我可以通过直接读/写/ dev / hidraw0(或相应的/ dev / hidraw设备)来使用libudev和标准的Linux USB HID RAW驱动程序。 。 编写简单的USB HID设备的自定义驱动程序是没有必要的。

Libusb未定义的参考

我正在尝试在我的操作系统上设置libusb API。 我在libusb.org上下载了libusb api。 我遵循标准的安装程序: cd into directory ./configure make make check //without errors make install 然后,我启动了Eclipse C / C ++,并从互联网上的教程中复制了一些代码。 但是当试图build立它时,我得到了以下输出: main.cpp:(.text+0x19): undefined reference to `libusb_init' main.cpp:(.text+0x76): undefined reference to `libusb_set_debug' main.cpp:(.text+0x8a): undefined reference to `libusb_get_device_list' main.cpp:(.text+0x136): undefined reference to `libusb_free_device_list' main.cpp:(.text+0x142): undefined reference to `libusb_exit' /tmp/ccOWJGwe.o: In function `printdev(libusb_device*)': main.cpp:(.text+0x162): undefined reference to […]

用Qt编程的USB编程

无论如何,我可以在Qt中做USB编程吗? 我正在使用基于Qt 5.0.0的Qt Creator 2.6,它是最新的与Microsoft Visual Studio 2010编译器一起使用的Qt Creator。 我有一个名叫“ Dreamcheeky雷电导弹发射器 ”的玩具,我需要编程这个基于USB的设备。 我曾尝试过LibUSB,但它搞砸了一切。 它甚至重命名设备端口,我不得不使用USBDview软件撤消一切。 但我想我安装不正确。 我遵循这些指示 。 这是64位的指令,但我得到了32位,因为指令似乎没有很大的区别(而不是下载文件)我跟着它。 这是我下载的 – libusb-win32-bin-1.2.6.0.zip 无论你推荐什么API,都不要紧,甚至libusb,但请告诉我如何正确安装它。 我的操作系统是Windows 7的最终32位。

在Windows 7上安装libusb-1.0

看来,在Windows 7上安装libusb-1.0.9以在Visual C ++中使用的最简单的方法是使用Cygwin或类似的软件来构build并将其安装到我的电脑上。 有没有更容易的方法来做到这一点,我还没有find,或者我这样做是错的吗? 我想用libusb与Arduino Due进行通信,开发将在Visual Studio(也可能是Dev-C ++ )中完成。

Windows 7上的Pyusb找不到任何设备

所以我安装了Pyusb 1.0.0-alpha-1 在Windows下,我无法得到USB设备的任何处理。 >>> import usb.core >>> print usb.core.find() None 我有1个USB设备插入(idVendor = 0x04d8,idProduct = 0x0042),我试图usb.core.find(idVendor=0x04d8, idProduct=0x0042)但也失败了。 在Ubuntu下,使用相同版本的pyusb和python(2.6),我能够使用该代码成功find我的设备,并与之通信。 那么如何让pyusb在Windows 7上findusb设备呢?

在Windows 64位上使用Delphi的libusb?

稍微阅读后,我担心我的32位Delphi应用程序将无法在Windows 7和其他64位Windows系统上使用libusb 64位驱动程序,并且无法与我的定制硬件进行通信这些系统上的设备。 这是真的? 如果是,是否有一些解决方法? 我在这张照片中错过了什么吗?