问题标签 [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 投票
3 回答
4564 浏览

linux - Ubuntu Linux Udev 规则:是否可以通过 udev 规则运行用 C 编写的程序?

我目前正在开发一个项目,以在插入 USB 设备时运行用 C 编写的程序。这可以通过 udev 规则实现吗?

当我插入我的设备时,我目前已经让它运行一个 Hello World 脚本。但是,它不止一次地运行它。

当前路径:/etc/udev/rules.d/98-local.rules

当前规则:

SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/local/bin/USB.sh"

脚本路径:/usr/local/bin/USB.sh

脚本:

我已经尝试过这样的事情来让可执行文件运行:

键入 usr/games/blackjack 可以在终端中工作,但是插入 USB 设备时它不起作用。但是,我知道脚本正在运行,因为我已经将它们组合在同一个文件中,并且已经创建了 hello world。

我还尝试从我的用户帐户运行可执行文件,如下所示:

但是,这也不起作用。

是设备权限的问题还是无法运行可执行文件?

*注意:我已经广泛阅读了http://reactivated.net/writing_udev_rules.html上的 udev 规则解释。

0 投票
2 回答
6692 浏览

python - python udisks - 枚举设备信息

使用 udisks 二进制文件显然可以获得很多与附加磁盘相关的信息:

udisks 显然只是在枚举 udev 可用的数据。

是否可以使用 python 获取这些信息?例如,如果我只想检索设备序列号、挂载点和大小。

0 投票
1 回答
4454 浏览

linux - 在 Linux 上弹出 USB 设备

我在 python 中通过 dbus 使用 Udisks 来卸载 USB 设备(在本例中为 Kindle),但我想向它发送弹出信号,因为这会将 Kindle 从 USB 模式踢回其通常的界面。

Udisks 不会让我 DriveEject,因为它不是真正的驱动器,我认为这是一个功能。给出的错误是:

Udisks文档提到了可弹出属性:

ID_DRIVE_EJECTABLE

驱动器中的介质是否可以物理弹出。仅当驱动器真正使用(或不使用)可弹出媒体时,才将其设置为 1(或 0)。特别是,对于需要通过弹出(1) 发送命令的 iPod 或 Kindle 设备等,不需要设置此选项,因为桌面用户会话将为可移动设备提供此选项,无论它们是否可弹出。如果未设置此属性,将使用启发式方法来确定介质是否可弹出(使用光盘、Zip 或 Jaz 介质的驱动器被视为可弹出)。

但没有解释如何从桌面用户会话中执行此操作。

(Nautilus 可以让我从桌面 shell 中很好地弹出。'eject' shell 命令将卸载但不会在没有 sudo 的情况下将弹出信号发送到设备)

有没有任何合法的方法可以用 Udisk 做到这一点,如果没有,那 nautlius 是如何做到的?

0 投票
2 回答
18567 浏览

python - USB 设备 UDev 和 D-BUS

我正在尝试获取 Ubuntu 10.10 中当前插入的 USB 设备的列表并监视发生的更改,例如使用 UDev 和 D-BUS 插入或拔出的设备。我对使用 D-BUS 进行编程相当陌生。我看到了一个例子:Linux : How to detect is USB keyboard is plugged and unplugged only that one uses HAL and I know that HAL is deprecated。我找到了一些工作代码,对其进行了一些修改,只是它不适用于任何设备,只有存储设备,如 USB 棒、媒体播放器或 cd-rom 设备。我想要鼠标、键盘、usb 摄像头等所有东西为插入 USB 的任何东西充电,我希望我的程序知道它。这基本上就是我所拥有的(http://moserei.de/2010/01/08/accessing-devicekit-with-dbus-and-python.html):

任何帮助将不胜感激。提前谢谢你,卡洛塔罗密欧

0 投票
5 回答
22272 浏览

linux - 如何为英特尔图形上的“监视器插入”创建回调?

我有一个带有英特尔图形的eeepc。我想将脚本挂接到通过 VGA 插入的监视器的事件。怎么做?

0 投票
2 回答
6100 浏览

linux - 根据设备响应而不是 udev 设备信息使用 udev 创建设备符号链接

我有三个不同的串行设备连接到三个 USB 串行转换器 (FTDI USB-RS232)。如果我连接它们,我会按预期获得通用设备名称 /dev/ttyUSBx。当我尝试编写一些 udev 规则时,udevadm 向我显示了三个设备的相同输出,但某些设备序列号属性除外。

这些序列号会在每台设备上发生变化,所以如果我使用不同的 USB 串行转换器,我的规则将不再适用。因此,我需要一种与连接到串行转换器的特定设备通信并通过其响应识别它的方法。

“编写 udev 规则”HOWTO中,关于使用 PROGRAM 功能调用外部程序来命名设备的内容如下:

PROGRAM 用于运行产生设备名称的程序(除此之外它们不应该做任何事情)。在执行这些程序时,设备节点尚未创建,因此无法以任何方式对设备进行操作,

规则示例: SUBSYSTEM=="usb", PROGRAM="/bin/device_namer %k", SYMLINK+="%c"

所以我无法从那里写入 /dev/ttyUSBx 来识别设备。然后,我有 RUN 功能,但它似乎无法创建新的 SYMLINK,因为 udev 不会得到 RUN 的输出。

规则示例: SUBSYSTEM=="usb", RUN="/bin/program"

我可以从该 RUN 脚本中指示 udev 创建符号链接吗?或者我可以从那里手动创建该符号链接吗?

谢谢

0 投票
1 回答
1087 浏览

usb - udev 和 usb 帧缓冲设备

我想为某个 USB 帧缓冲设备 (DisplayLink) 获取一个固定的设备名称。使用供应商 ID,我可以使用 udev 规则获得匹配:SUBSYSTEM=="usb", ATTRS{idVendor}=="17e9", GROUP="video"

但是使用 SYMLINK+="fbdl" 我没有获得到 /dev/fbX 设备(X=1,2,3..)的符号链接,而是到 bus/usb/... - 这是不一样的:使用这个设备文件(链接)在 xorg.conf 中不起作用。设置 NAME 而不是 SYMLINK 是相同的:真实设备 /dev/fbX 停留在那里并工作,给定的 NAME 是另外创建的,但是是其他一些目标(不起作用)。这里发生了什么??如果像 /dev/input/eventX 和 SYMLINK 一样,你会得到一个指向那个 eventX 的链接。为什么不在这里?

谢谢!(Ubuntu 11.04)

0 投票
1 回答
829 浏览

usb - 如何通过udev向进程发送命令行参数?

在检测到 USB 设备时,我试图让 udev 启动一个进程并将 USB 设备的序列号作为参数传递给该进程。

文件:/etc/udev/rules.d/10-FTDI2232H-usb.rules

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", RUN+="/opt/usbprog %s" ATTR{serial}

我不确定 printf 样式参数是否应该如何完成。任何帮助将不胜感激。

0 投票
3 回答
2903 浏览

linux - 创建 UNIX“特殊字符”文件

假设我想本着 /dev/zero 的精神创建一个文件 /dev/seven,它在读取时生成字符“7”。我应该怎么做这样的事情?我需要修改内核吗?

0 投票
1 回答
880 浏览

linux - udev 监视器在没有轮询的情况下很慢

我按照推荐()尝试了udev udevadm monitor。VGA-Plug 大约在 两秒钟。如果我轮询它,几乎会立即报告更改。这里会发生什么?