2017-08-05 25 views
8

Google ChromeUS webUSB APIを使用して、USB経由でコンピュータに接続されているカードリーダーにアクセスしようとしています。Google ChromeのWebUSB APIエラーが発生しました。

私は私にエラーを与えるインタフェースを主張しようとするまでの手順here後、すべてがアップ大丈夫です:

は、「インターフェイス0を主張することができませんでした:デバイスまたはリソースビジー」

それは私のことが表示されますOS(linux mint)がこのデバイスにアクセスしたため、オペレーターはアクセスできません。

これを解決する方法を教えてください。

EDIT:

私は、ドライバをアンバインドすると、私は次のエラーを取得:

「インターフェイス0を主張しないことができませんでした:そのようなファイルやディレクトリ」またここに

をlsusbが出力されると

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

カーネルドライバがバインドされているため、最初のエラーが予想されます。 2番目の場合は、デバイスについてもう少し詳しく知る必要があります。あなたは 'lsusb -v'から完全な記述子を投稿できますか? –

+0

@ReillyGrant長い間、私は自分の質問の編集部分に入れました。 – JDrake

答えて

2

「そのようなファイルまたはディレクトリ」(エラーコードENOENT)が通常提供されるインタフェース番号からしかしながら存在しないことを示す:このデバイスの-v記述子は明らかにそうではなく、ChromeはclaimInterfaceによって返された約束を拒否します。「指定されたインタフェース番号は、現在の設定ではデバイスによってサポートされていません。カーネルに要求を送信する前にインタフェース番号が無効であると考えた場合。

このデバイスでサポートされている単一の設定には、bConfigurationValueが与えられています。ドライバがアンバウンドしたときに、システムがデバイスを構成解除し、現在のデバイスの現在の設定に関するChromeの知識がシステムと同期していない。デバイスが/sys/bus/usb/devicesであり、ファイルbConfigurationValueを印刷すると、現在のデバイスの現在の構成がわかります。これは0と推測されます。

現在のところ、この不一致をWebUSB APIで解決する方法はありませんカーネルドライバをアンバインドした後にChromeを再起動すると、正しい時刻にこのファイルを読み取ることができ、同期が外れることはありません。

これがうまくいく場合は、crbug.com/newにバグを報告してください。今後この問題を避けるための最善の方法を試すことができます。

+0

'/ sys/bus/usb/devices'の' bConfigurationValue'はまだ2です。 Chromeを再起動してもう一度試してみましたが、設定2以外の設定では範囲外のエラーが表示されます。しかし、今回は、デバイスがまだアンバインドされているにもかかわらず、エラーが「インタフェース0:デバイスまたはリソースがビジー状態である」と戻されます。 – JDrake

関連する問題