我使用Chrome应用中的chrome.usb
API与USB设备(智能卡读卡器)进行互动。我可以打开设备并拉出配置。然而,当我打电话给claimInterface()
开始交换数据时,我收到一条错误消息:"错误声明接口。"没有其他诊断。
请问如何解决这个问题?我可以以某种方式从API启用诊断日志记录,例如?
答案 0 :(得分:1)
在这个主题中讨论了一个类似的问题:Error message 'Interface not claimed' from libusb
以下是副本
与libusb-1.0有同样的问题;我最初有这个序列:
libusb_init
libusb_open_device_with_vid_pid
libusb_reset_device
libusb_get_device
libusb_reset_device
libusb_set_configuration
libusb_claim_interface
libusb_set_interface_alt_setting
libusb_get_device_descriptor
libusb_get_bus_number
libusb_get_device_address
libusb_get_string_descriptor_ascii
if(libusb_kernel_driver_active.. )
if(libusb_detach_kernel_driver.. )
libusb_bulk_transfer
...
...并且为此,"界面未声明"当第一个libusb_bulk_transfer被执行时生成(但不是后续的,未在上面显示),我通过踩踏gdb确认。 (顺便说一句,该错误消息来自/linux/drivers/usb/core/devio.c)
此页面:USB Hid Issue · Yubico/yubikey-personalization Wiki · GitHub是指对libusb-0.1的修复,它调用了相应的" detach_driver"功能;所以我开始移动" detach_driver"在我的代码中也是如此 - 最后这个序列似乎摆脱了未声明的"界面"消息:
libusb_init
libusb_open_device_with_vid_pid
if(libusb_kernel_driver_active.. )
if(libusb_detach_kernel_driver.. )
libusb_reset_device
libusb_get_device
libusb_set_configuration
libusb_claim_interface
libusb_set_interface_alt_setting
libusb_get_device_descriptor
libusb_get_bus_number
libusb_get_device_address
libusb_get_string_descriptor_ascii
libusb_bulk_transfer
...
显然,如果首先分离驱动程序,然后声明接口 - 则不会生成错误。但那也是OP中你所拥有的 - 所以我认为,OP的技巧是分离,然后设置配置,然后在声明界面之后...
答案 1 :(得分:0)
我总是在windows上遇到libusb问题。你可以使用WDK(Win10)或DDK(早期的Win),但这很复杂。这是libusb错误代码:
http://libusb.org/static/api-1.0/group__misc.html你的是LIBUSB_ERROR_ACCESS
这似乎是操作系统安全性的问题。我不熟悉windows和libusb