如何在运行 Node.js 的 Raspberry Pi (Debian) 上解决 LIBUSB_ERROR_BUSY

2024-01-03

我在树莓派 3 (debian) 上运行 node.js。

我有一个小型原型项目,它从我的 Turbo 教练机上的 ANT+ 发射器收集数据,这些数据通过 Suunto Movestick USB 加密狗发送。

我正在使用Ant-Plus用于管理 ANT+ 协议的节点模块和将数据输出到控制台并通过 REST API 发送到云存储的脚本。

无论如何,切入正题,一切都工作正常,多个进程启动和停止没有问题,直到我无意中通过点击杀死了该进程ctrl + z代替ctrl + c

现在,当我尝试运行我的脚本时,出现以下错误:

/home/pi/ant-plus/node_modules/usb/usb.js:168 this.device.__claimInterface(this.id) ^

Error: LIBUSB_ERROR_BUSY
    at Error (native)
    at Interface.claim (/home/pi/ant-plus/node_modules/usb/usb.js:168:14)
    at GarminStick2.USBDriver.open (/home/pi/ant-plus/build/ant.js:287:20)
    at Object.<anonymous> (/home/pi/ant-plus/sample/cadence-sensor.js:39:12)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)

经过搜索,似乎由于节点进程没有正常关闭,某些进程仍然连接到 USB。

我尝试了各种方法来终止该进程:

ps | grep <something>
kill <somepid>

killall node

但不知何故,我不认为这是我需要杀死的节点进程,我“感觉”像我需要以某种方式清理 USB 接口,但我不知道如何做到这一点。

该项目使用node-usb https://github.com/nonolith/node-usb库,但我不确定是否可以以某种方式使用它来清理东西。


我对此做了一些研究:原因是Raspberry Pi将内核驱动程序附加到连接的设备。您需要检查内核驱动程序并在声明接口之前将其分离。

看你正在使用的node-usb,这是一些伪代码:

device.open()
const deviceInterface = device.interfaces[0]

let driverAttached = false
if (printerInterface.isKernelDriverActive()) {
   driverAttached = true
   deviceInterface.detachKernelDriver()
}

deviceInterface.claim()

// ... use the device interface

deviceInterface.release(() => {
   if (driverAttached) {
      deviceInterface.attachKernelDriver()
   }

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

如何在运行 Node.js 的 Raspberry Pi (Debian) 上解决 LIBUSB_ERROR_BUSY 的相关文章

随机推荐

  • 使用解构元组赋值扩展方法进行类型推断

    给出一些扩展方法 public static TO ConvertValue
  • 如何在 Swing 应用程序中捕获并处理 JavaFX TouchEvent?

    我开发了一个 Swing 应用程序 现在需要在其中实现自定义的多点触摸手势 经过一番研究 最简单的方法似乎是使用 JavaFX 因为它可以嵌入到 Swing 中 并为触摸屏上的每个手指单独提供事件 然后我尝试根据以下示例实现触摸处理 htt
  • 使用 svc 调用实现 fork()

    我实现了系统调用宏来调用软件中断调用 对于许多系统调用来说它运行良好 然而 这并不是为了fork 父进程和子进程的返回 pid 相同 片段如下 define SYSCALL0 N register int ip asm ip N regis
  • 如何获取 PSCustomobject 的长度?

    以下内容存储在powershell中 Maintainer Note The leftmost parameter must match the registry key name exactly e g DES 56 For more i
  • 从部分字符串中查找全局原子

    我可以使用创建一个全局原子GlobalAddAtom我可以使用再次找到该原子GlobalFindAtom如果我已经知道与原子相关的字符串 但是有没有办法找到关联字符串与给定部分字符串匹配的所有原子呢 例如 假设我有一个原子 其字符串是 He
  • 使用模板时的类型推断

    所以这就是我想做的 我使用std pair 但我肯定想使用元组或几乎任何类型的模板来做同样的事情 分配对变量时 我需要输入如下内容 T1 t1 T2 t2 std pair
  • python 中的字数统计

    我想计算从网站上获取的文本的字数 我正在尝试下面的代码 import requests from bs4 import BeautifulSoup from urllib request import urlopen def get tex
  • TensorFlow DataSet API 导致图形大小爆炸

    我有一个非常大的训练数据集 我正在使用数据集 API 如下所示 self dataset tf contrib data Dataset from tensor slices self images list self labels lis
  • 存储经度和纬度值

    所以我有 5000 多个船舶坐标 它们是经度和纬度坐标 我想知道为每艘船存储这些的最佳方式是什么 每艘船都有未知数量的坐标 最初我想到的是一个类似于以下的双二维数组 double array new double 但我不知道我需要的尺寸 我
  • 延迟加载和 Load() 有什么区别

    在实体框架 4 中 延迟加载和使用 Load 方法有什么区别 编辑 我添加了两个 if 语句 延迟加载 var query from c in context Contacts select c foreach var contact in
  • robospice 如何管理活动生命周期?

    我正在寻找有关 android robospice 库如何管理活动生命周期的技术答案 从入门页面 https github com octo online robospice wiki Starter Guide https github
  • 背景图像上出现流氓白线

    html height 100 overflow hidden background url http farm9 staticflickr com 8345 8208481483 fc6b1bdf7d h jpg no repeat ce
  • C# 正则表达式提取键值

    有没有一种简单而优雅的方法从以下格式的字符串中提取键值对 key1 value1 key2 value 2 key3 value3 key4 value4 key5 5555 key6 xxx666 我的尝试导致了这个结果 但我对此不太满意
  • 什么IDE适合开发PyQt应用程序? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 什么IDE适合开发PyQt应用程序 我正在使用 Eclipse 的 pydev 扩展进行 Python
  • Bootstrap-3:带有 jQ​​uery 验证消息的输入组插件 STRETCHES

    我正在使用 Twitter Bootstrap 3 和 jQuery Validate 插件 但由于某种原因 当弹出验证错误消息时伸展运动 my 输入组插件框和图标 正常 无验证 WITH VALIDATION 这是我的小提琴 以防您想解决
  • 复选框设置为已检查= false 不起作用

    我正在生成一个 HTML 输入checked false 但是该复选框显示为已选中 我在 javascript 控制台中执行了以下操作 但无法完全弄清楚发生了什么 使用后生成的 HTML prop 将值设置为 false 看起来相同 只是现
  • 如何将 matplotlib 颜色条刻度线更改为朝外?

    我在 matplotlib 示例库中注意到 所有具有垂直颜色条的图都有朝内的刻度线 即从条形的边缘到条形的彩色区域 对于我正在使用的绘图和色阶类型 将刻度线朝外会更好 我会怎样修改 matplotlib 库中的这个简单示例 见下文 在其颜色
  • Google Script:如何通过电子邮件发送Tablechart? [复制]

    这个问题在这里已经有答案了 我正在 Google 脚本中创建一个表格图表 我想通过电子邮件发送它 这是我的代码 var data Charts newDataTable addColumn Charts ColumnType STRING
  • Symfony 原则多对多完整性约束违规:1062 重复条目

    我有一个具有多对多 自引用 关系的实体用户 Serializer Expose ORM ManyToMany targetEntity User ORM JoinTable name user referent joinColumns OR
  • 如何在运行 Node.js 的 Raspberry Pi (Debian) 上解决 LIBUSB_ERROR_BUSY

    我在树莓派 3 debian 上运行 node js 我有一个小型原型项目 它从我的 Turbo 教练机上的 ANT 发射器收集数据 这些数据通过 Suunto Movestick USB 加密狗发送 我正在使用Ant Plus用于管理 A