JDr*_*ake 8 javascript google-chrome webusb
我正在尝试使用Google Chrome webUSB api访问通过USB连接到我的计算机的读卡器.
按照这里的说明,一切都没问题,直到我尝试声明给出错误的界面:
"无法声明接口0:设备或资源繁忙"
我的操作系统(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
Run Code Online (Sandbox Code Playgroud)
“没有这样的文件或目录”(错误代码 ENOENT)通常表示所提供的接口号不存在,但是从描述符来看,情况显然并非如此,Chrome 会拒绝由 ClaimInterface 返回的承诺,并显示“不支持所提供的接口号”由设备当前配置。” 如果在向内核提交请求之前认为接口号无效。
然而,我注意到该设备支持的单一配置的值为bConfigurationValue2。当驱动程序解除绑定时,系统可能会取消配置该设备,并且现在 Chrome 对设备当前配置的了解与该设备不同步。系统。如果您找到该设备/sys/bus/usb/devices并打印该文件,bConfigurationValue它会告诉您该设备当前的真实配置,我猜测该配置将为 0。
遗憾的是,目前无法通过 WebUSB API 修复此不匹配问题,但是在解除绑定内核驱动程序后重新启动 Chrome 将允许其在正确的时间读取此文件,并且不会不同步。
如果这对您有用,请在crbug.com/new上提交错误,我们可以找出最好的方法来避免将来出现此问题。
| 归档时间: |
|
| 查看次数: |
1961 次 |
| 最近记录: |