2015-11-19 140 views
0

我正在使用chrome.usb來自Chrome應用的API與智能卡讀卡器USB設備進行交互。我可以打開設備並拉取配置。但是,當我撥打claimInterface()開始交換數據時,出現錯誤消息:「聲明界面錯誤」。並沒有其他診斷。診斷chrome.usb.claimInterface()錯誤

任何指針如何處理,請?例如,我能以某種方式啓用API的診斷日誌記錄嗎?

在這個線程
+0

[顯然](https://code.google.com/p/chromium/codesearch#chromium/src/device/usb/usb_device_handle_impl.cc&sq=package:chromium&type=cs&l=733&rcl = 1447771613)錯誤信息應該出現在'chrome:// device-log /' – wOxxOm

+0

好找。然而我沒有看到任何東西;經過多次違規代碼的運行後,最近沒有一條記錄。這種記錄是基於每個窗口的,也許是? –

+0

請參閱[如何啓用日誌記錄](https://www.chromium.org/for-testers/enable-logging) – wOxxOm

回答

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的訣竅將是分離,然後設置配置,然後索賠接口...

+0

可能是相關的,但我在Windows上工作以開始... –

0

我一直有在Windows上的libusb問題。您可以使用WDK(Win10)或DDK(較早的Win),但這很複雜。這裏有libusb的錯誤代碼:

http://libusb.org/static/api-1.0/group__misc.html你是LIBUSB_ERROR_ACCESS

這似乎是操作系統的安全問題。我不熟悉windows和libusb