问题标签 [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.
linux - 默认 Udev 规则
如果我还没有定义我自己的一组 udev 规则,那么默认的 udev 规则是什么,我怎么知道它们。在动态注册的字符驱动程序的上下文中考虑这个问题。
谢谢
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
:)。
linux - 连接sda时如何使用udev触发脚本,但不是sda1-x
将 USB 驱动器连接到嵌入式系统时,我需要运行脚本。我的想法是:
它需要使用任何 USB 棒运行,因此我无法使用供应商特定的参数。现在脚本使用 sd[a..][ ,1..] 执行,但它应该只在 sd[a..] 连接时执行(_ 表示 NULL)。与?它在断开连接时有效,但在连接时,它为每个分区执行是否有可能或者我必须在 Shell 脚本中解析它?
如果有人可以在这里帮助我,那就太好了。(如果有人看到,我删除了问题:对不起,我想, ? 是最终的解决方案。但它也没有工作)。
这是 udevadm info --attribute-walk -name /dev/sda1 的输出
linux - 连接 USB 驱动器后,使用 udev 在控制台上显示消息
是否可以使用 udev 规则向我的目标上的控制台发送一些消息,如添加或删除设备等?
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”。
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
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"
任何帮助或建议都会很棒。提前致谢。
c - libudev 返回重复的 USB 设备
我正在创建一个程序来列出 Linux 中的所有 USB 设备(在我的例子中是 Ubuntu)。我一直在关注本教程http://www.signal11.us/oss/udev/并将子系统从“hidraw”更改为“usb”。
它列出了设备,但它包含重复项。
我显然可以使用我的代码删除重复项,但我想知道您是否知道如何以不会返回重复项的方式设置设备枚举。
如果您想查看我的代码(没有太大变化),请访问https://github.com/DiogoNeves/LinuxUsbTest
谢谢!
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 使其工作?请帮忙。提前谢谢!