标签: libusb

如何在Mac OS X上设置libusb?

我想尝试在Mac上使用libusb创建一个用户空间设备驱动程序,但我很困惑从哪里开始.在SDK安装程序(我从http://www.ellert.se/twain-sane获得)中,它说了一些我在计算机上找不到的示例.

有谁能描述如何在OS X上设置libusb进行开发?我可以使用Xcode吗?我应该在代码中包含哪些内容?

c macos macports libusb

29
推荐指数
3
解决办法
7万
查看次数

在Python中查询连接的USB设备信息的简单方法?

我们如何在Python中查询连接的USB设备信息?我想获得UID设备名称(例如:SonyEricsson W660),设备路径(例如:/ dev/ttyACM0)

还有什么是上述信息中最好的参数,用于识别设备何时再次连接?(UID?)

我正在研究Ubuntu 11.04.

ATM我有这个代码(使用pyUSB)

busses = usb.busses()
for bus in busses:
  devices = bus.devices
  for dev in devices:
    print repr(dev)
    print "Device:", dev.filename
    print "  idVendor: %d (0x%04x)" % (dev.idVendor, dev.idVendor)
    print "  idProduct: %d (0x%04x)" % (dev.idProduct, dev.idProduct)
    print "Manufacturer:", dev.iManufacturer
    print "Serial:", dev.iSerialNumber
    print "Product:", dev.iProduct
Run Code Online (Sandbox Code Playgroud)

问题是我没有得到所需的输出,会粘贴一个例子:

<usb.legacy.Device object at 0x1653990>
Device: 
  idVendor: 4046 (0x0fce)
  idProduct: 53411 (0xd0a3)
Manufacturer: 1
Serial: 3
Product: 2
Run Code Online (Sandbox Code Playgroud)

首先我没有文件名,这对我来说最重要.我假设它是/ dev/ttyACM0等部分.其次,我猜每个USB设备都有一些UID,或者我应该同时使用Vendor或Product id?

编辑:显然我有一些设置问题,我想我使用错误的USB库.(使用libusb0.1)ATM.这就是我将Device(dev.filename)字符串设为空的原因.如果有人可以请告诉他在什么操作系统上他正在使用什么USB库以及我认为它将解决我的问题的哪个版本的PyUSB.

python usb libusb

27
推荐指数
3
解决办法
11万
查看次数

窗口上的Pyusb - 没有可用的后端

我正在尝试通过USB将我的python应用程序接口与NFC设备连接.最好的选择似乎是pyusb,但我不能让它连接到libusb后端.我一直在

ValueError:没有可用的后端

我查看了堆栈跟踪,发现usb/backend/libusb10.py(这是pyusb的一部分)正在尝试加载libusb-1.0.dll以用作后端,但它无法找到它.这不是它不在我的道路上,它根本不在我的电脑上!

我安装了libusb-win32(http://libusb.org/wiki/libusb-win32),但生成的目录似乎只包含libusb0.dll.libusb-1.0.dll在哪里???

我很想知道在哪里获得该DLL,或者甚至不同的建议让pyusb在Windows 7上运行.

python libusb windows-7 pyusb

26
推荐指数
6
解决办法
4万
查看次数

如何在Ubuntu中安装libusb

我有一个C程序在标题中有#include部分.

我已将libusb-1.0.0下载到我的电脑上.如果我只是将libusb-1.0.0文件夹复制到我的C程序所在的文件夹,它将无法正常工作.因此,我想我必须以某种方式将libuse-1.-.-安装到我的C程序所在的文件夹中.但是,我不知道如何安装它.

有人可以帮帮我吗 谢谢!

ubuntu libusb

24
推荐指数
4
解决办法
17万
查看次数

如何最正确地使用libusb与连接的USB设备通信?

如何最正确地使用libusb与连接的USB设备通信?

具体来说,如何将数据传输到USB设备,从设备接收信息,找出所连接设备的名称,是否有存储等.

更具体地说,我将在Mac OS X机器上运行它,所以我知道我不能只使用Windows头文件.

如果对libusb和USB设备有一个很好的解释,这也会有所帮助.

c++ libusb

19
推荐指数
3
解决办法
3万
查看次数

libusb:Linux上的C++错误[op_open] getcap失败

libusb_open在Linux上调用C++(在Raspberry Pi上运行但使用Exagear虚拟化为x86)时遇到了麻烦.

我可以找到一个使用的设备,libusb_get_device_list但它似乎将设备转换为设备处理程序使用libusb_open导致问题,即使它返回0(成功),但没有其他命令工作.它给了我错误:

libusb: error [op_open] getcap failed (22)
Run Code Online (Sandbox Code Playgroud)

我希望我已经提供了足够的信息 - 如果没有,请告诉我,我可以添加更多信息.

提前致谢!

UPDATE

一点挖掘表明以下命令产生错误(在libusb中):

r = ioctl(hpriv->fd, IOCTL_USBFS_GET_CAPABILITIES, &hpriv->caps);
Run Code Online (Sandbox Code Playgroud)

哪里IOCTL_USBFS_GET_CAPABILITIES_IOR('U', 26, __u32).挖掘显示错误22来自ioctl无效论证.我仍然试图取消这个,但是非常感谢任何帮助.

c++ linux libusb raspberry-pi

19
推荐指数
0
解决办法
567
查看次数

Android ADK与PC作为USB主机与libusb,批量传输错误

我正在尝试将我的PC作为Android 2.3.4设备的USB主机,以便能够开发API而无需实际的"附件".为此,我需要将PC建立为USB主机和"设备"(在我的例子中是运行2.3.4的Nexus One).

我从http://android.serverbox.ch/开始使用libusb代码作为PC端的基础,以及Android端的DemoKit代码和Android文档.

这两个似乎很好地协商连接,并且接口被"声称"但在实际的批量传输尝试中死亡.在OSX上,错误是-5(LIBUSB_ERROR_NOT_FOUND),在Ubuntu Linux上(作为root)错误是-1(LIBUSB_ERROR_IO).(最近发布的每个版本都有最新的libusb 1.0.8).

这是代码.关于问题的其他评论欢迎,虽然这主要是一个概念验证,所以我真的只是在寻找批量转移不起作用的原因:

#include <stdio.h>
#include <libusb.h>
#include <string.h>

#define ENDPOINT_BULK_IN 0x83
#define ENDPOINT_BULK_OUT 0x03 // Have tried 0x00, 0x01 and 0x02

#define VID 0x18D1
#define PID 0x4E11

#define ACCESSORY_PID 0x2D00
#define ACCESSORY_ADB_PID 0x2D01 // Can't get this to work, if ADB is active, can't get handle on device

/*
ON OSX
gcc adktest.c -I/usr/local/include -o adktest -lusb-1.0.0 -I/usr/local/include -I/usr/local/include/libusb-1.0
ON UBUNTU
gcc adktest.c -I/usr/include -o adktest -lusb-1.0 -I/usr/include -I/usr/include/libusb-1.0

Testing on Nexus …
Run Code Online (Sandbox Code Playgroud)

android libusb adk

15
推荐指数
1
解决办法
1万
查看次数

LibUsb声称接口访问被拒绝Java

我希望能够从USB计步器读取数据.我在Java中尝试这个,我正在使用LibUsb和Usb4Java库.我似乎无法声称usb管道或类似的东西.

我正在使用的代码:

final Context context = new Context();

    int result = LibUsb.init(context);
    if (result < 0)
    {
        throw new LibUsbException("Unable to initialize libusb", result);
    }

    DeviceHandle handle = LibUsb.openDeviceWithVidPid(context, vid, pid);
    if (handle != null)
    {
        Device d = LibUsb.getDevice(handle);
        int res = LibUsb.claimInterface(handle, 0);
Run Code Online (Sandbox Code Playgroud)

Int res返回'-3',即'LIBUSB_ERROR_ACCESS'

设备已找到但不可索赔.USB设备只有1个接口.

任何帮助,将不胜感激!

java usb libusb

15
推荐指数
1
解决办法
1520
查看次数

如何为libusb android应用程序提供/ dev/bus/usb权限?

我正在开发一个通过jni使用libusb的应用程序.此应用程序目前仅针对root,usb-host Android 3+计算机.

方案如下:

<java Activity>
       loads <jni_wrapper.so>
               which wraps <my_main_lib.so>
                       that uses <libusb.so>
                               that needs rw access to: /dev/bus/usb/<device>
Run Code Online (Sandbox Code Playgroud)

所有.so本机库都是我在/ system/lib上安装(作为root)的基础结构的一部分,然后由简单用户运行的java Activities可以使用它们.

这意味着整个USB通信必须从原生方面完成.

我得到了一切正常工作,除了一个问题 - usb权限:/ dev/bus/usb/entries的默认权限是(0660,uid = root,gid = usb).

显然,运行本机代码的标准java进程不符合上述任何要求,迫使我"chmod 666"相应的/ dev条目,以使其正常工作.

但是,这个解决方案并不是那么好,因为它不会在重新启动或拔出/重新插入设备后继续存在(权限会回到0660).

我正在寻找的解决方案需要:

  • 生存重启/重新插入
  • 由root安装〜一次〜而不是每次都要打扰用户获取权限
  • 是通用的,并在所有(/大多数)android 3+机器上运行
  • [非强制性]提供必要的最低凭证

我想到的方向:

  • 更改/init.rc或/ueventd.rc中的权限 - >每次重新启动时都会覆盖这两个权限
  • 安装usbfs/proc/bus/usb与devmode = 0666 - >幸存重新插入,但不能重启
  • 让我的进程加入"usb"组? - >我试过android.permission.ACCESS_USB,但它不起作用/支持......:/

有任何想法吗?:-)

谢谢!

permissions usb android libusb android-ndk

14
推荐指数
1
解决办法
2万
查看次数

如何使用libusb和libusb_get_device_descriptor()?

我正在学习在Ubuntu 12.10上第一次使用libusb v1.0.0.这是我用来尝试理解如何使用此API的一些小测试代码:

#include <libusb-1.0/libusb.h>
...
libusb_device **list;
libusb_get_device_list(ctx, &list); // Returns 11 USB devices which is correct.
for (size_t idx = 0; list[idx] != NULL; idx ++)
{
    libusb_device *dev = list[idx];
    libusb_device_descriptor desc = {0};
    int rc = libusb_get_device_descriptor(dev, &desc);
Run Code Online (Sandbox Code Playgroud)

此时,rc == 0,意味着它应该已经成功完成.来源:*libusb_get_device_descriptor()*的文档.

但结构desc总是空的.没有任何字段被设置.如果我将上面的最后两行更改为:

    libusb_device_descriptor desc = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int rc = libusb_get_device_descriptor(dev, &desc);
Run Code Online (Sandbox Code Playgroud)

...然后当libusb_get_device_descriptor()返回时,我看到desc保持不变,向我确认我没有得到我对此API的期望.

我还尝试以a.outroot 身份运行,以防万一这需要提升权限.进行谷歌搜索libusb_get_device_descriptor并没有让我到任何地方.

我跑来试试这段代码的相关命令:

sudo …
Run Code Online (Sandbox Code Playgroud)

c++ libusb libusb-1.0

14
推荐指数
1
解决办法
2万
查看次数