问题标签 [udev]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
803 浏览

linux - 默认 Udev 规则

如果我还没有定义我自己的一组 udev 规则,那么默认的 udev 规则是什么,我怎么知道它们。在动态注册的字符驱动程序的上下文中考虑这个问题。

谢谢

0 投票
2 回答
3053 浏览

android - adb突然没有权限错误

0 投票
1 回答
9553 浏览

c - 如何获取 SD 卡事件的通知?

我想检查 SD 卡的存在,并接收 SD 卡添加/删除的通知。

到目前为止,我已经使用libudev了,并且我已经制作了一个小应用程序来监听 SD 卡事件。

代码如下:

此代码将收到有关 SD 卡添加/删除的通知(以及 SD 的初始状态 - 插入/拔出)。但是,它更像是一种 hack,并且并非在所有情况下都有效。

我目前使用ID_MODEL设备的属性并检查它是否是SD_MMC- 用于 SD 卡。我现在只需要这种卡,就够了。

插入 SD 卡时,会为子系统模块发送以下事件:2 个change事件,每个分区有 1 个add事件。事件属性如下所示:

change事件中,我无法提取有关设备是添加还是删除的任何信息。我试图打开设备名称\dev\sdd,但我没有权限,所以该选项落...

现在我只是检查分区 ( add/ remove) 的操作属性。

这个版本的程序非常适合有分区的 SD 卡。当没有分区时,只change接收事件。

所以我的问题是:有什么方法可以检查媒体是否已从change活动中添加/删除?还是有其他方法可以检查设备是否可用(请记住分区问题)?

欢迎任何关于改进设备属性迭代或获取通知的方法的建议。

PS而且我不能使用libusb:)。

0 投票
3 回答
1453 浏览

linux - 连接sda时如何使用udev触发脚本,但不是sda1-x

将 USB 驱动器连接到嵌入式系统时,我需要运行脚本。我的想法是:

它需要使用任何 USB 棒运行,因此我无法使用供应商特定的参数。现在脚本使用 sd[a..][ ,1..] 执行,但它应该只在 sd[a..] 连接时执行(_ 表示 NULL)。与?它在断开连接时有效,但在连接时,它为每个分区执行是否有可能或者我必须在 Shell 脚本中解析它?

如果有人可以在这里帮助我,那就太好了。(如果有人看到,我删除了问题:对不起,我想, ? 是最终的解决方案。但它也没有工作)。

这是 udevadm info --attribute-walk -name /dev/sda1 的输出

0 投票
0 回答
487 浏览

linux - 连接 USB 驱动器后,使用 udev 在控制台上显示消息

是否可以使用 udev 规则向我的目标上的控制台发送一些消息,如添加或删除设备等?

0 投票
2 回答
6298 浏览

linux - 插入 USB 设备时运行某些东西不起作用

我在 /etc/udev/rules.d/local.rules 中制作了一个脚本

然后我重新加载udev

我试图删除除子系统之外的所有内容并运行。我试过运行'='而不是'+=',我厌倦了ATTR而不是SYSFS。我试过“sudo service udev restart”和“sudo reload udev”。我拔下设备,然后重新插入,它不运行该操作。我尝试将其重命名为 70-local.rules 并将权限更改为 a+x。我尝试将“子系统”更改为“总线”。我尝试将运行设置为具有相同命令的“/path/test.sh”。

0 投票
1 回答
4842 浏览

linux-kernel - Linux USB 枚举和 uevents

我在http://www.technovelty.org/code/linux/plugging-in-usb.html阅读了一篇文章。它非常好。

连接设备的枚举究竟是在哪个函数中由主机完成的,以及在哪个函数中发送 uevent?

我在 usb_new_device 等函数中引入了 printks,如果我使用“udevadm monitor --kernel”,它甚至会在 hub.c 的 usb_new_device 中调用的枚举函数之前显示内核事件?

日志如下

[110.819399] 123456 hub_irq

[110.824952]123456 hub_port_connect_change

[110.979624]123456 hub_port_init

[111.059625]usb 2-1.2:使用 fsl-ehci 和地址 3 的新高速 USB 设备

[111.189722] 123456 usb_new_device

[111.196219]usb 2-1.2:找到新的 USB 设备,idVendor=05ac,idProduct=12a0

[111.203113]usb 2-1.2:新的 USB 设备字符串:Mfr=1,Product=2,SerialNumber=3

[111.210438] USB 2-1.2:产品:iPhone

[111.214196] USB 2-1.2:制造商:Apple Inc.

[111.218728]usb 2-1.2:序列号:9356b662a93170509226069e5adf53f2351d774e

内核 [110.940183] 添加 /devices/platform/fsl-ehci.1/usb2/2-1/2-1.2 (usb)

检查时间戳,尽管 udevadm 输出在最后(udevadm 在用户空间中运行),但它实际上在 [110.940183] 得到了事件,因为在 [111.189722] 调用了 usb_new_device

0 投票
1 回答
308 浏览

android - 将 HTC 3D 连接到 ADB

我正在尝试将我的 Android HTC3D 手机连接到我的笔记本电脑,并且已经解决这个问题很长一段时间了。我做了一些研究并扫描了stackoverflow,但没有解决我的问题。到目前为止,我已经按照以下教程进行操作:http: //developer.android.com/tools/device.html但无济于事我会执行./adb devices它,它会给我一个空列表。然后我开始四处搜索,发现这个 stackoverflow Q&A HTC Desire usb connection issue with Ubuntu 10.04,建议我将它们重命名为 70、71、90 和 99。所以我尝试了,仍然没有......这导致我到另一个帖子: Debugging Android App on Device这给了我一个脚本来自动生成 70-android.rules 文件......仍然没有。

到目前为止这是我的设置

  • 操作系统 - Linux Mint 11
  • IDE - 日食
  • 手机:HTC 3D
  • 电话型号:PG86100
  • 手机已通过以下方式设置为调试模式Settings->Developer Options->USB Debugging
  • 规则文件:

    #宏基

    SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666"

    #戴尔

    SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666"

    #富士康

    SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666"

    # Garmin-华硕

    SUBSYSTEM=="usb", SYSFS{idVendor}=="091E", MODE="0666"

    # 谷歌

    SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"

    # 宏达电

    SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

    #华为

    SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666"

    #京瓷

    SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666"

    # LG

    SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666"

    #摩托罗拉

    SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"

    # 英伟达

    SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666"

    #泛泰

    SUBSYSTEM=="usb", SYSFS{idVendor}=="10A9", MODE="0666"

    # 三星

    SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"

    # 锋利的

    SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666"

    # 索尼爱立信

    SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666"

    #中兴通讯

    SUBSYSTEM=="usb", SYSFS{idVendor}=="19D2", MODE="0666"

任何帮助或建议都会很棒。提前致谢。

0 投票
1 回答
1241 浏览

c - libudev 返回重复的 USB 设备

我正在创建一个程序来列出 Linux 中的所有 USB 设备(在我的例子中是 Ubuntu)。我一直在关注本教程http://www.signal11.us/oss/udev/并将子系统从“hidraw”更改为“usb”。

它列出了设备,但它包含重复项。

我显然可以使用我的代码删除重复项,但我想知道您是否知道如何以不会返回重复项的方式设置设备枚举。

如果您想查看我的代码(没有太大变化),请访问https://github.com/DiogoNeves/LinuxUsbTest

谢谢!

0 投票
0 回答
1811 浏览

linux-device-driver - debian linux下无法使用udev自动连接USB modem

在我的 linux 机器上(uname -a Linux gate 3.2.0-0.bpo.2-amd64 #1 SMP Fri Jun 29 20:42:29 UTC 2012 x86_64 GNU/Linux)我有 USB 调制解调器 WeTelecom WM-D300有“zeroCD”选项。ZeroCD USB id 为 22de:6803,调制解调器设备的 USB id 为 22de:6801。我已经为它创建了 usb_modeswitch 规则并测试了这个规则运行良好:

所以,我做了一个小的 udev 配置来允许这个设备的自动热插拔:

它不工作。重新连接调制解调器后,它变得完全不可用。usb-devices 显示它具有 usbfs 驱动程序,并且 usb_modeswitch 即使从命令行也无法切换它。udev 也无法切换,但重新启动后它工作得很好 - 直到下一次物理重新连接。这是我插入调制解调器时的 udev 日志:

所以,我的问题是:为什么以及如何?为什么它从命令行工作以及如何通过 udev 使其工作?请帮忙。提前谢谢!