Questions tagged «udev»

Udev是一个Linux进程,用于管理/ dev下的设备文件条目

2
udev规则,用于为相同的USB串行设备分配已知的符号链接
我有两个(可能将来会更多)相同的USB串行设备(不幸的是,序列号很低)-它们实际上是BTC矿机。当前,它们最终以ttyUSBXX为0、1或2结束,因为还有另一个不相关的USB串行设备(这里不必担心)。 我想编写一个udev规则,它将在内为它们分配可预测的名称/dev,例如/dev/miner0零是递增的整数。我不在乎其中的哪个会最终结束,但是我确实需要它们处于可预测的范围内,并且不会改变。 目前我有这个: SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n" 这很接近,因为我最终得到的名字像我想要的。唯一的问题是,因为矿工和第三装置有时会出现在一个随机的顺序,我可能最终有两个的miner0,miner1和miner2,但我从来不知道其中两个(无需手动寻找)。如果我添加更多非矿工USB串行设备(可能),则会加剧该问题。 我发现%e对它的引用似乎确实符合我的要求,但是似乎不再存在。 如何给这些设备起可预测的名称?如果可能的话,我也不想将它们绑定到USB总线上的位置。 进一步的信息/背景 值得一提的是,我并没有为它们的名字而烦恼,只是即使它们被插入另一个USB插座,它们的名称也不会改变。我会简单地忘记整个udev并在中使用条目/dev/serial/by-id,但是由于它们具有相同的序列号,所以其中只有一个! 还值得一提的是,这样做的原因是需要告知挖掘软件一系列要探测和查找的设备。我可以让它完成所有工作(它基本上只是找到ttyUSB*范围内的所有有效矿工),但是这会惹恼非矿工设备。因此,我需要提前知道的矿工的名称,以便可以将其配置为仅使用那些名称。可悲的是它不会接受通配符(因此,仅告诉它使用/dev/miner*似乎是不可能的),因此就出现了这个问题。

1
以与外部键盘一致的方式交换<esc>和<caps lock>
我有一个名为〜/ .speedswapper的文件,其中包含以下内容: ! Swap caps lock and escape remove Lock = Caps_Lock keysym Escape = Caps_Lock keysym Caps_Lock = Escape add Lock = Caps_Lock ...当我跑步时xmodmap ~/.speedswapper,这会切换esc和Caps Lock键。我的〜/ .profile文件中有这一行,因此每当我登录时,这些键都会切换。 但是,如果我插入外部USB键盘,则该设置似乎不会持久。我的笔记本电脑的键盘工作得很好,但是我必须再次运行命令才能使外部键盘切换两个键。幸运的是,这样做似乎并没有影响我笔记本电脑的键盘-它们似乎是同步的。 一种解决方案是在插入外部键盘时找到某种方式来运行xmodmap命令,但是如果它更健壮,我将对另一种键盘交换解决方案持开放态度。操作系统是Ubuntu 13.04。 鉴于justbrowsing的评论,看来可以通过编写udev规则来实现-我认为我必须使用RUN选项,并且应该在/ dev / hidraw0或/ dev / hidraw1上触发它们,当我插入键盘时会出现...,但我仍在尝试绕开这个概念,因此,我感谢任何知道udev在做什么的人的帮助。

2
/ dev / hidraw:读取权限
要获得对/ dev / hidraw *的读取权限,我该怎么做? 我在网上看到了有关udev规则的内容,并在网上看到了它,但是udev的世界对我来说就像是一块异乡,如果有某种更简单的解决方案,我只是将自己添加到一个花花公子的团队中... (Ubuntu 13.10预览) 随意重提问题-我不太想知道“ hidraw”到底发生了什么。 编辑: 好的,所以,仅提供一些更多信息来阐明问题:我逐字逐句地执行了调用POSIX open()方法的代码,并获得了errno权限不足的提示。cat以普通用户身份在文件上运行会导致权限不足错误,而以普通用户运行会su导致成功(尽管无意义)cat操作。 编辑编辑: 根据要求,我将通过POSIX调用提供相关代码。它来自Signal11的HIDAPI库(函数hid_open_path)。我相信这段代码是正确的,因为它显然已经使用了很长时间了。我errno在GDB中相关阅读所在的位置添加了一条注释。 hid_device *dev = NULL; hid_init(); dev = new_hid_device(); if (kernel_version == 0) { struct utsname name; int major, minor, release; int ret; uname(&amp;name); ret = sscanf(name.release, "%d.%d.%d", &amp;major, &amp;minor, &amp;release); if (ret == 3) { …
8 devices  udev 

3
观看USB连接供应商ID,产品ID和版本
我只想看所有在系统中添加和删除的设备,并查看其USB供应商ID,产品ID和版本以及其他相关信息。如何在Linux中执行此操作?是否有我可以的日志文件,tail -f或者这还需要其他内容?
8 linux  usb  udev 

5
为什么xsetwacom无法在udev上运行?
我编写了一个脚本,将Wacom Bamboo数位板旋转180度。当我以自己(用户)或root身份执行它时,它可以正常工作,但是从udev(即,将平板电脑插入usb端口中)启动时,它将无法工作。 Udev规则: SUBSYSTEMS=="usb", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00d1", ATTRS{manufacturer}=="Wacom Co.,Ltd.", RUN+="/usr/local/bin/red-wacom-bamboo.sh" Wacom脚本/usr/local/bin/red-wacom-bamboo.sh: #!/usr/bin/env bash exec &gt; /tmp/red-wacom.log exec 2&gt;&amp;1 # I had to do this otherwise xsetwacom would say: # "Failed to open Display ." # Is there a way to do this without using my username? export XAUTHORITY=/home/redsandro/.Xauthority export DISPLAY=:0 /usr/bin/xsetwacom …
8 xorg  devices  udev 


1
Udev规则允许已知的USB设备不会检测到我的集线器
因此,我添加了一个udev规则,该规则仅允许已知的USB设备,但它不会授权我的集线器,因此每个USB端口都是未授权的,这是我的集线器的udev规则: # Skeep not USB SUBSYSTEM!="usb", GOTO="usb_end" # Skeep remove actions ACTION=="remove", GOTO="usb_end" # 2.0 root hub SUBSYSTEMS=="usb", ACTION=="add", ATTR{product}=="EHCI Host Controller", ATTR{serial}=="0000:00:1a.0", \ ATTR{idVendor}=="1d6b", ATTR{idProduct}=="0002", ATTR{bDeviceClass}=="09", ATTR{authorized}="1", GOTO="usb_end" # Disable all other USB devices SUBSYSTEMS=="usb", ACTION=="add", ATTR{authorized}="0" LABEL="usb_end" 操作系统:Gentoo Hardened 内核:4.7.9强化 谢谢
3 udev 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.