2017-08-05 19 views
8

Tôi đang cố gắng sử dụng Google Chrome webUSB api để truy cập trình đọc thẻ được kết nối với máy tính của tôi qua USB.Lỗi GoogleUS WebUSB API trong khi cố gắng yêu cầu giao diện

Tiếp theo các hướng dẫn here, mọi thứ đều ổn cho đến khi tôi cố gắng để khẳng định giao diện mà mang lại cho tôi một lỗi:

"Không thể khẳng định giao diện 0: thiết bị hoặc nguồn bận rộn"

Dường như tôi Hệ điều hành (linux mint) đã truy cập thiết bị này và không cho phép nhà điều hành có quyền truy cập.

Bất kỳ đề xuất nào về cách khắc phục điều này?

EDIT:

Khi tôi unbind tài xế, tôi nhận được lỗi sau:

"Không thể khẳng định giao diện 0: Không có tập tin hoặc thư mục"

Ngoài ra đây là sản phẩm của lsusb -v cho thiết bị này:

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

Lỗi đầu tiên được mong đợi là trình điều khiển hạt nhân bị ràng buộc. Thứ hai, tôi cần biết thêm một chút về thiết bị. Bạn có thể đăng các mô tả đầy đủ từ 'lsusb -v' không? –

+0

@ReillyGrant Đã lâu rồi, tôi đưa vào phần chỉnh sửa câu hỏi của mình. – JDrake

Trả lời

2

"Không có tệp hoặc thư mục nào" (mã lỗi ENOENT) thường chỉ ra rằng số giao diện được cung cấp không tồn tại các mô tả này rõ ràng không phải là trường hợp và Chrome sẽ từ chối lời hứa được trả về bởi claimInterface với "Số giao diện được cung cấp không được thiết bị hỗ trợ trong cấu hình hiện tại của nó". nếu nó nghĩ rằng số giao diện không hợp lệ trước khi gửi yêu cầu tới hạt nhân. Tuy nhiên, tôi nhận thấy rằng cấu hình duy nhất được thiết bị này hỗ trợ được cung cấp bConfigurationValue trong số 2. Có thể khi trình điều khiển bị vô hiệu hoá, hệ thống chưa định cấu hình thiết bị và giờ đây kiến ​​thức của Chrome về cấu hình hiện tại của thiết bị là không đồng bộ với hệ thống. Nếu bạn tìm thấy thiết bị ở số /sys/bus/usb/devices và in tệp bConfigurationValue, nó sẽ cho bạn biết cấu hình hiện tại thực của thiết bị mà tôi đoán là 0.

Hiện tại, không có cách nào khắc phục sự không khớp này thông qua API WebUSB tuy nhiên khởi động lại Chrome sau khi hủy liên kết trình điều khiển hạt nhân sẽ cho phép nó đọc tập tin này vào đúng thời điểm và không được đồng bộ.

Nếu điều này phù hợp với bạn, vui lòng gửi lỗi tại crbug.com/new và chúng tôi có thể tìm ra cách tốt nhất để tránh sự cố này trong tương lai.

+0

'bConfigurationValue' vẫn là 2 dưới '/ sys/bus/usb/devices'. Tôi khởi động lại Chrome và thử lại lần nữa, bất kỳ điều gì ngoài cấu hình 2 đều cho tôi lỗi cấu hình ngoài phạm vi. Nhưng lần này, lỗi được thay đổi trở lại thành: 'Không thể yêu cầu giao diện 0: Thiết bị hoặc tài nguyên bận 'mặc dù thiết bị chưa được gắn kết. – JDrake

Các vấn đề liên quan