WebUSB - “无法声明接口”错误

2023-12-15

我尝试使用下面的代码通过 WebUSB API 使用 POS 打印机,但失败了.claimInterface()错误为DOMException: Unable to claim interface。所有测试均在 Linux 上的 Chrome 80.0.3987.116 上完成。我该如何调试这个?

(更新)我发现这个演示但它会导致同样的错误。

async function start () {
    const device = await navigator.usb.requestDevice({
        filters: [{
            vendorId: 0x04b8,
            productId: 0x0202
        }]
    });
    await device.open();
    await device.selectConfiguration(device.configurations[0].configurationValue);
    await device.claimInterface(device.configurations[0].interfaces[0].interfaceNumber);
}

当然,我在本地主机服务器上运行它(这是“安全上下文”)并调用start()具有用户手势功能。

我还确认没有其他进程正在使用该设备。

% lsof /dev/bus/usb/001/011
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
chrome  4156 ikr7  393u   CHR 189,10      0t0 331233 /dev/bus/usb/001/011

下面是输出lsusb -vs 001:011.

Bus 001 Device 011: ID 04b8:0202 Seiko Epson Corp. Receipt Printer M129C/TM-T70
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x04b8 Seiko Epson Corp.
  idProduct          0x0202 Receipt Printer M129C/TM-T70
  bcdDevice            2.00
  iManufacturer           1 EPSON
  iProduct                2 EPSON UB-U01III
  iSerial                 3 20110125210031250M02C
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0020
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol      2 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0001
  Self Powered

问题是usblpLinux 内核自动加载的驱动程序。将其加入黑名单即可解决问题。这是我的/etc/modprobe.d/blacklistusblp.conf file.

blacklist usblp

注意列入黑名单usblp禁用所有使用的 USB 打印机usblp驱动程序,但幸运的是,包括我在内的大多数人都使用 CUPS 作为打印机驱动程序。

(更新)发现最好编写一个自动分离内核默认驱动程序的 udev 规则,而不是列入黑名单。这是我的/etc/udev/rules.d/99-escpos.rules.

SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0202", MODE="0664", GROUP="wheel", RUN+="/bin/sh -c 'echo -n $id:1.0 > /sys/bus/usb/drivers/usblp/unbind && echo -n $id:1.0 > /sys/bus/usb/drivers/usbfs/unbind'"

此规则也卸载usbfs偶尔会被内核加载usblp是分离的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebUSB - “无法声明接口”错误 的相关文章

  • ReferenceError:regeneratorRuntime未定义(但在范围内工作)

    我遇到过这种奇怪的情况 ReferenceError regeneratorRuntime is not defined 我已经设法在一个非常小的设置中重现 与同一问题上的类似问题相比 并且还注意到一些奇怪的行为 具体取决于是否使用范围 以
  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • 如何将函数附加到弹出窗口关闭事件(Twitter Bootstrap)

    我做了一些搜索 但我只能认为我可以将事件附加到导致其关闭的按钮 https stackoverflow com questions 13205103 attach event handler to button in twitter boo
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va

随机推荐

  • 如何设置面板的透明不透明度

    我如何将面板设置为透明 如不透明度为0 我通过程序设置面板 它位于视频播放器的顶部 代码是这样的 Private Sub Button1 Click sender As Object e As EventArgs Handles Butto
  • 为什么我们要在 PyTorch 中“打包”序列?

    我试图复制如何对 rnn 的可变长度序列输入使用打包但我想我首先需要理解为什么我们需要 打包 序列 我明白为什么我们 填充 它们 但为什么 打包 通过pack padded sequence 必要的 我也偶然发现了这个问题 下面是我的发现
  • Bert 针对语义相似性进行了微调

    我想应用微调 Bert 来计算句子之间的语义相似度 我搜索了很多网站 但几乎没有找到有关此的下游信息 我刚刚发现STS基准测试 我想知道是否可以使用STS基准数据集来训练微调bert模型 并将其应用到我的任务中 合理吗 据我所知 计算相似度
  • ffmpeg/PHP - 将任何视频格式转换为 ogg 时出现问题 - 视频断断续续/无音频 - win64

    如果这是一个重新发布 类似的帖子 首先让我道歉 因为我尽了最大努力在此处和谷歌上已创建的帖子中搜索我的问题的具体解决方案 但无法 我在 win64 系统的本地主机上使用 ffmpeg 创建 测试视频转换脚本 然后将它们上传到服务器 我能够成
  • NoSuchElementException:消息:尝试通过 Selenium 和 Python 单击按钮 VISA 时无法定位元素

    我无法点击此按钮在我的机器人上创建结账 我想点击图片进入另一页
  • 如何用opencv获得所有不失真的图像

    我在用着cv undistort但它会裁剪图像 我想要所有未失真的图像 以便未失真的尺寸比原始图像更大 如下所示 我想我需要使用cv getOptimalNewCameraMatrix但我的试验没有运气 有什么帮助吗 仅供记录 你应该使用c
  • Spark 在标准输出上丢失 println()

    我有以下代码 val blueCount sc accumulator Long 0 val output input map data gt for value lt data getValues if record getEnum Da
  • 是否可以使用新的 csproj 项目文件覆盖或清除 dll 构建中的调试路径?

    使用时dumpbin查看我的图书馆的详细信息 dumpbin headers Test dll 我看到 FullFolder to Test pdb 是 pdb 的完整文件夹 调试目录 Time Type Size RVA Pointer
  • 从 $lookup 以及整个文档中获取数组中过滤后的元素数量

    我在 MongoDB 中有这样的查询 db emailGroup aggregate lookup from link localField id foreignField emailGroupId as link unwind link
  • 无法访问远程git仓库

    我通过 github 网站的 新按钮 创建了一个 git 存储库 然后我使用 git bash 设置本地存储库并尝试拉取远程存储库 它有默认的自述文件 但收到 访问被拒绝错误 与此问题中看到的错误相同 无法推送到 git 存储库 权限被拒绝
  • 使用 Gson for Java 进行 JSON 解析

    我想解析 JSON 类型的数据String 我在用谷歌Gson I have jsonLine data translations translatedText Hello world 我的班级是 public class JsonPars
  • python 中的计算器

    我正在尝试制作可以使用基本 4 个运算符 例如 1 2 3 4 5 求解表达式的计算器 但是它不起作用 我不知道出了什么问题 请检查我的代码 当我运行它时 我在 8 行中收到无限数量的错误return ret parts 0 ret par
  • MySQL/InnoDB 和长时间运行的查询

    当使用 myisam 引擎运行查询时 因为它不是事务性的 所以长查询 据我所知 不会影响其他查询的数据 在 InnoDB 中 它警告的事情之一是避免长查询 InnoDB快照时 是不是把所有东西都快照了 我问这个问题的原因是 无论出于何种原因
  • 为什么我的批处理脚本以管理员身份运行时无法执行?

    我正在尝试创建一个 Windows 批处理脚本 该脚本将允许我部署 Windows 7 64 位的准备更新 但该脚本无法正常启动 我将所有文件放在同一个文件夹中 我尝试提取文件 然后通过 dism 安装它们 当我正常启动它时 文件提取 但
  • ThreeJS:将边缘几何应用于 ArrowHelper

    我正在尝试使用 ThreeJS 中的 ArrowHelper 创建箭头 let arrow new THREE ArrowHelper direction normalize new THREE Vector3 length color h
  • 如何远程访问自托管的 Nancy 服务?

    我正在创建一个简单的 Windows 服务 该服务托管 Nancy 实例以提供其内部数据的视图 在本地计算机上使用浏览器时 一切都按预期运行 我看到了它所提供的观点 但是 我找不到它无法从远程浏览器 在同一网络上 访问的任何原因 从远程浏览
  • 向量的下限

    我有这个简单的课程 class MyClass public int id string name 我想要一个带有指向此类对象的指针的向量 该向量按引用排序MyClass id 我以为使用lower bound很容易 我之前用对象向量 而不
  • minikube 和 ingress-nginx 没有打开端口 80

    我是 ingress nginx 的新手 我使用 minikube 启用了它minikube addons enable ingress 在寻找与 ingress nginx 相关的服务时 我跑了kubectl get services n
  • 如何在 WPF 中添加自定义路由命令?

    我有一个包含菜单和子菜单的应用程序 我已将应用程序命令附加到一些子菜单项 例如剪切 复制和粘贴 我还有一些其他没有应用程序命令的菜单项 如何将自定义命令绑定添加到这些子菜单项 我已经经历过this文章但无法将事件附加到我的子菜单项 我使用放
  • WebUSB - “无法声明接口”错误

    我尝试使用下面的代码通过 WebUSB API 使用 POS 打印机 但失败了 claimInterface 错误为DOMException Unable to claim interface 所有测试均在 Linux 上的 Chrome