问题标签 [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 回答
2906 浏览

linux - 如果设备已连接,udev ignore_device 将不起作用

我不确定这是否是提出这个问题的正确站点,但我把它放在这里是因为这是一个编程问题,而且我认为 SO 人群是三个站点中最面向 Linux 的。

无论如何,我试图找到一种方法来模拟从软件方面断开设备,就像用户物理断开它一样。到目前为止,我已经在 /etc/udev/rules.d 中制定了一个名为 10-nano.rules 的 udev 规则:

此规则适用于忽略设备,但仅在它们已断开连接并重新连接之后。但我想要做的是能够编写规则,然后让设备被忽略,就好像它已断开连接一样。我已经尝试使用和不使用 sudo 的“udevadm 触发器”,但由于某种原因,我无法在设备连接时应用此规则。有什么建议么?

顺便说一句,我可以通过删除 10-nano.rules,然后运行“sudo udevadm trigger”来重新连接已被忽略的设备,但就像上面所说的那样,而不是相反。(由于某种原因,当我运行该命令时,我的系统时间和互联网变得一团糟)

0 投票
3 回答
7102 浏览

udev - 如何使用 udev 规则识别断开连接的 USB 设备?

我有两个使用 Xorg 的 xinerama 功能的 LCD。每个 LCD 屏幕都有一个触摸屏,连接到各自的 USB 线。

查看“/var/log/messages”文件,我看到以下内容:

出于某种原因,在某个时间点,USB 总线似乎重置(或奇怪的东西),我的两个触摸屏倒置了(按左 LCD,鼠标向右移动,如果我按右 LCD,鼠标在剩下)。

为了尝试调试问题,我尝试编写一个 udev 规则来记录我的设备何时重置/断开连接(或其他)。但似乎 udev 在连接时会报告设备上的完整详细信息(产品、制造商、idProduct、idVendor 等),但在移除时只给您一些总线编号。为什么是这样?

当我得到一个 ACTION=="remove", KERNEL=="input*" 规则时,我无法知道它是哪个设备!有谁知道解决这个问题的方法?

0 投票
2 回答
3902 浏览

linux - 使用 udev 自动重命名和编号 nic

我正在编写一个 udev 规则,以自动重命名和编号具有特定 MAC 地址的 NIC。

生成的规则应该做的几乎相同75-persistent-net-generator.rules(匹配卡的 MAC 地址的前 3 个字节,将其命名为“mycard*”,具体取决于安装了该供应商的卡数量,将重命名规则写入70-persistent-net.rules)。

到目前为止,我已经走了多远:

“我没有得到的部分”应该做的任务是将卡(假设它是 eth3)重命名为 mycard0,或者如果它是系统中具有匹配 MAC 地址 mycard1 的第二张卡,依此类推。

在此先感谢,弗洛克拉

0 投票
1 回答
3230 浏览

linux - udev 设备文件的自动权限?

这是来自 SuperUser.com 的骗子。那边的人不够聪明,也不愿意帮助我;也许这更像是一个程序员问题而不是管理员问题:


除了内置触摸板外,我还有一个应用程序可以读取通过 USB 插入的 4(四)只鼠标的输入。/dev/input/mouse4这对于 Ubuntu 9.10 来说没有问题:hald 注意到新设备,udev 将它们称为名为...的全新条目mouse7

我的应用程序作为普通用户应用程序运行。中的文件/dev属于root其他任何人,并且对其他人不可读。

我一次没有问题chmod a+r mouse?,但是每次重新启动以及每次插入或拔出该死的啮齿动物时,设备都会来来去去。

有人可以告诉我一个脚本或一些要操作的东西,以便我chmod自动发生吗?

0 投票
1 回答
6373 浏览

linux - udev 规则中的脚本不运行

我在笔记本电脑上运行 Ubuntu 9.10 (Karmic Koala),并希望 NumLock 根据我的 USB 键盘是插入(numlock on)还是拔出(numlock off)自动切换。

为此,我首先安装了“numlockx”包。numlockx on并且numlockx off工作正常。

要连接到设备系统,我想我会使用 udev。我查看了 StackOverflow 上的其他问题并阅读了“Writing udev rules”。但我无法让 udev 规则发挥作用。

首先,这是一个dmesg输出示例:

我曾经udevadm info收集设备信息:

所以我创建了一个名为/etc/udev/rules.d/usb-keyboard.rules

我曾经用来udevadm test验证规则是否正确:

这是“删除”测试:

问题是当键盘插入或拔出时,NumLock 状态不会改变。我尝试重新启动 udev 服务,但没有成功。我的udev规则错了吗?我会以错误的方式解决这个问题吗?

0 投票
2 回答
5814 浏览

bash - OSX 上 udev 功能的替代方案

我正在尝试为外部硬盘创建一个自定义文件/签入签出脚本,但是脚本的一部分来自 Linux 机器,我已经测试过它可以正常工作,但是使用udevinfo,OS X 没有 udev,所以有没有提供相同功能的东西?

有人知道任何替代方案吗?或者这可以在 OSX 上使用 bash 完成?

0 投票
1 回答
931 浏览

linux - 在 Linux 上使用 libudev 阻塞读取的问题

我们正在使用以下例程(在 Linux 上,使用 libudev)从配置为 USB HID 设备的 PIC 微控制器读取数据。仅当按下或释放连接到 PIC 单片机的按钮时才会发送数据。

该例程缺少来自 PIC 控制器的消息,我怀疑这是因为下面的 poll 调用没有正常运行。

在读取第一条消息之前,对 poll 的调用将可靠地阻塞 1 秒。读取第一条消息后,对 poll 的调用立即返回,而不是像应有的那样阻塞 1 秒(1000 毫秒)。

我通过在每次阅读后关闭并重新打开设备来解决这个问题。这使得 poll 行为正确,但我认为关闭和重新打开设备可能是丢失消息的原因。

PicDeviceDescriptor() 函数会检查设备以确保它存在。以下是 PicDeviceDescriptor 函数的相关细节,展示了设备是如何开始打开的。

我确定我做错了什么,但我已经用谷歌搜索了这个问题,似乎找不到任何相关的答案。任何帮助将不胜感激——谢谢。

0 投票
1 回答
349 浏览

linux - udev 线程安全吗?

我想知道产生多个线程是否存在危险,每个线程都创建自己的 udev 上下文并开始监视硬件更改。它会认为,如果每个线程都有自己的 udev 上下文,那么一切都很好。但是,如果调用喜欢udev_newudev_monitor_new_from_netlink将访问全局/静态变量,则可能会出现问题。

由于 README 或文档都没有提到关于多线程的任何内容,我在这里问它。有人知道更多吗?

0 投票
2 回答
1650 浏览

linux-kernel - 如何在内核模块中支持 udev?

我正在移植一个 linux 内核模块。它曾经为自己创建一个设备文件(使用来自内核空间的系统调用的脏黑客),但现在我想在 udev 中执行此操作。在哪里可以找到有关在内核模块中支持 udev 的文档?

请注意,模块本身不是设备驱动程序。它用作一组驱动程序的多路复用器。因此,注册设备(即 pci 设备)的默认方式不适合我的任务。

0 投票
1 回答
2371 浏览

python - 如何使用 udev 查找有关插入的视频媒体(例如 DVD)的信息

我正在尝试将应用程序从使用 HAL 移植到使用纯 udev。它是用 python 编写的,将使用 gudev 库,尽管我希望看到任何语言的示例。我可以通过以下方式获取所有连接的视频设备(例如相机):

这会打印出如下内容:

我还可以获得块设备列表,但我怎样才能:

  1. 判断它是否是 CD/DVD 驱动器?

  2. 如果驱动器支持可移动媒体,请判断当前是否插入了媒体?

  3. 告诉媒体的名称/标签是什么(例如 DVD 的 FUTURAMAS1)?

我试图移植的原始代码位于http://github.com/danielgtaylor/arista/blob/045a4d48ebfda44bc5d0609618ff795604ee134f/arista/inputs.py

任何和所有的帮助将不胜感激!


更新:在下面添加答案。

上面的代码将输出如下数据:

谢谢您的帮助!