2017-08-05 82 views
8

Bilgisayarımla USB aracılığıyla bağlanan bir kart okuyucusuna erişmek için Google Chrome webUSB api'yi kullanmaya çalışıyorum.Arabirim talep etmeye çalışırken Google Chrome WebUSB API hatası

"hak talebinde arayüz 0: Cihaz veya kaynak meşgul" Ben bana bir hata verir arayüzü iddia etmeye kadar talimatlar here ardından

, her şey yolunda mı

O anlaşılıyor benim OS (linux nane) bu cihaza erişmiştir ve operatörün erişmesine izin vermez.

Bunu nasıl öneriyorum?

DÜZENLEME:

Ben sürücüsü bağlantı kesme zaman aşağıdaki hatayı alıyorum:

"arayüzünü 0 iddia başarısız oldu: Böyle bir dosya veya dizin" Ayrıca burada

lsusb çıktısıdır

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

Çekirdek sürücüsü bağlı olduğu için ilk hata bekleniyor. İkincisi, cihaz hakkında biraz daha fazla bilgiye ihtiyacım var. Tüm tanımlayıcıları lsusb -v'den gönderebilir misiniz? –

+0

@ReillyGrant Uzun zaman oldu, sorgunun düzenleme kısmını da ekledim. – JDrake

cevap

2

"böyle bir dosya ya da dizin" (hata kodu ENOENT), genellikle sağlanan arayüz numarası dan ancak bulunmadığını gösterir: Bu cihaz için -v açıklayıcılar bu durumda açıkça görülmez ve Chrome, "Arayüz numarası, mevcut yapılandırmada cihaz tarafından desteklenmiyor" ifadesiyle iade edilen sözleri reddeder. Arabirim numarasının çekirdeği göndermeden önce geçersiz olduğunu düşünürdüm.

Ancak, bu aygıt tarafından desteklenen tek bir yapılandırmanın 2 bConfigurationValue verildiğini fark ediyorum. Sürücünün bağlantısı kaldırıldığında, aygıtın yapılandırılmamış olması ve şimdi Chrome'un aygıtın mevcut yapılandırması hakkındaki bilgisi olması olasıdır. sistemle senkronizasyon dışı. Aygıtı /sys/bus/usb/devices'da bulup bConfigurationValue dosyasını yazdırırsanız, aygıtın gerçek geçerli yapılandırmasını söyleyeceğim, ki bu da 0 olacaktır.

Maalesef bu uyumsuzluğu WebUSB API'sı aracılığıyla düzeltmenin bir yolu yok. Ancak, çekirdek sürücüsünü açtıktan sonra Chrome'u yeniden başlatmak, bu dosyayı doğru zamanda okumasına ve eşitlenmemesine olanak tanır.

Bu sizin için uygunsa, lütfen crbug.com/new numaralı telefondan bir hata gönderin ve gelecekte bu sorunu önlemek için en iyi yolu bulabiliriz.

+0

''ConfigurationValue' hala 2/sys/bus/usb/devices' altında. Chrome'u yeniden başlatıp tekrar denedim. Yapılandırma 2'den başka bir şey bana aralık dışı yapılandırma hatası veriyor. Ancak bu seferki hata şu şekilde değiştirildi: 'Cihaz 0'a bağlanmadı: Cihaz veya kaynak meşgul 'cihaz zaten bağlı değilken. – JDrake