诊断chrome.usb.claimInterface()错误

时间:2015-11-19 23:06:32

标签: google-chrome-app

我使用Chrome应用中的chrome.usb API与USB设备(智能卡读卡器)进行互动。我可以打开设备并拉出配置。然而,当我打电话给claimInterface()开始交换数据时,我收到一条错误消息:"错误声明接口。"没有其他诊断。

请问如何解决这个问题?我可以以某种方式从API启用诊断日志记录,例如?

2 个答案:

答案 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