Articles of libusb

通过USB指令步进电机控制器

我试图在Gnu / Linux上的Trinamic StepRocker步进电机控制器上做一些实验。 我以前曾通过USB将设备连接到Windows机器,并使用Trinamic的专有软件来testing控制器是否按预期工作,似乎是这样。 StepRocker的初学者手册提到了某些应该通过串行接口发送的命令来左右旋转电机,或者使其停止。 但是当我通过USB连接这个控制器到一个Gnu / Linux计算机,并且想要编写我自己的C ++(libusb)程序来使电机移动时,我不太清楚我的出发点应该是什么。 控制台应用程序(我打算写)应该是非阻塞的。 下面是一个发送数据报的图像和发出旋转命令时收到的响应: 我试图编写一个简单的程序,将图片中显示的旋转值数据报送入电机控制器: #include <stdio.h> #include <string.h> #include <fcntl.h> #include <errno.h> #include <termios.h> #include <unistd.h> int fd1; int wr; int main() { fd1=open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY); if (fd1 == -1 ) { perror("open_port: Unable to open /dev/ttyACM0"); } else { fcntl(fd1, F_SETFL,0); printf("Port […]

如何在内核编程中获得USB设备细节?

我是内核编程的新手,我有一个USB设备的dev_t值。 我想获取设备的详细信息,如供应商ID,产品ID或其他属性,这些属性会因设备而异。 我想在内核空间中执行此操作,而不将程序作为外部模块加载。 我遇到了一个libusb库,但据我所知,它被用在用户空间中。 是否有可能在内核空间也使用libusb,就像我的要求? 如果可能的话,如何导入和设置libusb以便我可以编译内核?

删除绑定到HID接口的input驱动程序

我正在玩一些特殊types的键盘的驱动程序代码。 而这个键盘确实有特殊的模式。 根据规范,这些模式只能通过发送和获取function报告来启用。 我使用'hid.c'文件和用户模式来发送HID报告。 但'hid_read'和'hid_get_feature_report'都失败,错误号为-1。 我已经尝试使用libusb从内核驱动程序分离键盘,但是当我这样做时,'hid_open'失败。 我想这是由于HID接口已经由内核使用“input”或某些驱动程序。 所以,我可能不需要解除内核hidraw驱动程序,而应该尝试解除“hidraw”驱动程序的键盘(“input”)驱动程序顶部的绑定。 我对么? 任何想法我怎么能做到这一点? 以及如何find哪些驱动程序使用哪个驱动程序和哪个低级驱动程序绑定到哪个驱动程序?

为什么使用libusb需要分离内核驱动程序?

为什么使用libusb需要分离内核驱动程序? 为什么不可能与内核驱动一起执行一些USB IO?

Linux C ++ LibUSB在USB HUB中写入寄存器

在Linux中,我有一个USB集线器,下图中显示了“注册”。 该寄存器应该禁用集线器上某个端口的电源。 我试图使用LibUSB(我的代码如下所示)写入全0的寄存器0x0A来禁用所有端口。 问题是,集线器由标准的Linux USB集线器驱动程序控制,因此内核驱动程序被分离。 写入也失败。 失败消息如下所示。 错误消息: $ /mnt/apps/UsbPowerControl 5 Devices in list. Vendor:Device = 1908:1320 Vendor:Device = 0403:6001 Vendor:Device = 289d:0010 Vendor:Device = 0424:2513 Vendor:Device = 1d6b:0002 Opening Device = 0424:2513 Device Opened Kernel Driver Active Kernel Driver Detached! Claimed Interface Data-><- Writing Data… libusb: error [submit_bulk_transfer] submiturb failed error -1 errno=2 Write […]

无法使用Cmake链接libusb

我一直在试图“破解”2个程序,其中一个(openTLD)使用cmake。 我一直在阅读和处理这个问题有点现在似乎无法sorting。 当我'做'没有实例的cpp对象它编译罚款,当我有一个对象(依赖于libusb),我砍了我得到链接(我认为)错误。 我的CMakeLists(添加位由**或CAPS定界) #Set minimum version requered cmake_minimum_required(VERSION 2.4.6) #just to avoid the warning if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) endif(COMMAND cmake_policy) #set project name project(TLD) #Append path to the module path list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/../cmake/Modules/") #OpenCV find_package(OpenCV REQUIRED) #** ADDED ** find_package(libusb-1.0 REQUIRED) #set the default path for built executables to the […]

安装usblib软件包 – Ubuntu

我需要安装另一个软件包的libusb软件包。 我试了下面这个似乎是安装包的, sudo apt-get install libusb-dev 但是当我尝试安装我得到的其他软件包时, configure: error: Package requirements (libusb-1.0 >= 0.9.1) were not met: No package 'libusb-1.0' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBUSB_CFLAGS and LIBUSB_LIBS to avoid the need to call pkg-config. See the pkg-config […]

lsusb:只有1个端点可用

我试图通过libusb与设备(没有Linux驱动程序)进行通信。 我已经写了很多的基本代码,并在Windows(有驱动程序)上使用USB监听软件来find我需要发送给它的代码。 但是,执行“lsusb -v -d 1267:0000”时只显示1个端点,如下所示: Bus 003 Device 005: ID 1267:0000 Logic3 / SpectraVideo plc Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x1267 Logic3 / SpectraVideo plc idProduct 0x0000 bcdDevice 0.00 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration […]

为什么`libusb_bulk_transfer'返回0?

我正在使用libusb-1.0。 有时候我打电话时 int rc = libusb_bulk_transfer(handle_, EP_IN_ADDR, (unsigned char *)buf_, 64, &read_, 0); 它返回rc = 0(没有错误)和read_ = 0(接收到的零字节数)。 但是我已经指定了无限超时(最后一个参数),所以不是`libusb_bulk_transfer'应该阻塞,直到我有一些数据?

检查特定的USB设备是否可用

我需要找出是否有一个特殊的供应商/产品ID的USB设备(我只是检查是否存在,不需要访问)。 当使用libusb-win32时,只能对这些安装了libusb驱动程序/filter驱动程序的设备执行此操作,这对我来说不起作用。 那么……是否有可能列举所有可用的USB设备并获得他们的VID / PID? 任何示例代码可用于? 谢谢!