2017-08-05 50 views
8

我正嘗試使用谷歌瀏覽器webUSB api訪問通過USB連接到我的計算機的讀卡器。谷歌瀏覽器在嘗試聲明界面時出現USBUSB API錯誤

依照指示操作,here,一切正常,直到我嘗試聲稱這給了我一個錯誤的接口:

「無法要求接口0:設備或資源忙」

看來,我OS(linux mint)已經訪問過這個設備,並且不允許操作員訪問。

任何建議如何克服這一點?

編輯:

當我解除綁定的司機,我收到以下錯誤:

「無法要求接口0:沒有這樣的文件或目錄」

另外這裏的lsusb的輸出-v此設備:

Bus 001 Device 012: ID 0ca6:a050 Castles Technology Co., Ltd 
Device Descriptor: 
    bLength    18 
    bDescriptorType   1 
    bcdUSB    2.00 
    bDeviceClass   2 Communications 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0  64 
    idVendor   0x0ca6 Castles Technology Co., Ltd 
    idProduct   0xa050 
    bcdDevice   0.00 
    iManufacturer   1 Linux 2.6.32.9 with dwc_otg_pcd 
    iProduct    2 EFT-POS Terminal 
    iSerial     0 
    bNumConfigurations  1 
    Configuration Descriptor: 
    bLength     9 
    bDescriptorType   2 
    wTotalLength   67 
    bNumInterfaces   2 
    bConfigurationValue  2 
    iConfiguration   3 EFT-POS Terminal 
    bmAttributes   0xc0 
     Self Powered 
    MaxPower    2mA 
    Interface Descriptor: 
     bLength     9 
     bDescriptorType   4 
     bInterfaceNumber  0 
     bAlternateSetting  0 
     bNumEndpoints   1 
     bInterfaceClass   2 Communications 
     bInterfaceSubClass  2 Abstract (modem) 
     bInterfaceProtocol  1 AT-commands (v.25ter) 
     iInterface    4 CDC Abstract Control Model (ACM) 
     CDC Header: 
     bcdCDC    1.10 
     CDC Call Management: 
     bmCapabilities  0x00 
     bDataInterface   1 
     CDC ACM: 
     bmCapabilities  0x02 
      line coding and serial state 
     CDC Union: 
     bMasterInterface  0 
     bSlaveInterface   1 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x82 EP 2 IN 
     bmAttributes   3 
      Transfer Type   Interrupt 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x000a 1x 10 bytes 
     bInterval    32 
    Interface Descriptor: 
     bLength     9 
     bDescriptorType   4 
     bInterfaceNumber  1 
     bAlternateSetting  0 
     bNumEndpoints   2 
     bInterfaceClass  10 CDC Data 
     bInterfaceSubClass  0 Unused 
     bInterfaceProtocol  0 
     iInterface    5 CDC ACM Data 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x81 EP 1 IN 
     bmAttributes   2 
      Transfer Type   Bulk 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    0 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x01 EP 1 OUT 
     bmAttributes   2 
      Transfer Type   Bulk 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0040 1x 64 bytes 
     bInterval    0 
Device Qualifier (for other device speed): 
    bLength    10 
    bDescriptorType   6 
    bcdUSB    2.00 
    bDeviceClass   2 Communications 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0  64 
    bNumConfigurations  1 
Device Status:  0x0001 
    Self Powered 
+0

由於內核驅動程序被綁定,第一個錯誤是預期的。第二,我需要更多地瞭解該設備。你能從'lsusb -v'發佈完整的描述符嗎? –

+0

@ReillyGrant很長,我把我的問題的編輯部分。 – JDrake

回答

2

「沒有這樣的文件或目錄」(出錯代碼ENOENT)通常表示提供的接口數量不從然而存在描述符顯然不是這種情況,Chrome會拒絕claimInterface返回的承諾,「提供的接口號在當前配置中不受設備支持」。如果它在將請求提交給內核之前認爲接口號是無效的。

但我注意到,該設備支持的單個配置的bConfigurationValue爲2.有可能當驅動程序被解除綁定時,系統取消配置該設備,現在Chrome已知該設備的當前配置與系統不同步。如果您發現該設備在/sys/bus/usb/devices和打印文件bConfigurationValue它會告訴你的設備,這是我猜的真實當前配置將是0

有不幸的是目前沒有辦法解決通過WebUSB API這種不匹配但是在解除綁定內核驅動程序後重新啓動Chrome將允許它在正確的時間讀取該文件,而不會失去同步。

如果這適用於您,請在crbug.com/new提交錯誤,我們可以制定出避免此問題的最佳方法。

+0

'/ sys/bus/usb/devices'下的'bConfigurationValue'仍然是2。 我重新啓動Chrome並再次嘗試,除了配置2之外的任何內容都會給我配置超出範圍的錯誤。但是這一次,錯誤被改回:'無法聲明接口0:設備或資源忙碌',儘管設備已經被綁定。 – JDrake

相關問題