我的程序需要访问ttyUSB没有根权限。 我试着用chmod 777 /dev/ttyUSB0改变它,正如你所知,当我重新启动这个权限改变为默认。 我如何configuration我的udev rules.d这个?
我在Ubuntu 12.04.5 LTS,x86_64上。 我有一个使用libusb与电脑通讯的USB设备。 一旦我将其插入计算机并运行通信程序,我收到以下错误: libusb couldn't open USB device /dev/bus/usb/008/004: Permission denied. libusb requires write access to USB device nodes. libusb failed to find the Optotrak USB device. Are you sure you have set the udev permissions correctly? 所以如果我chmod / dev / bus / usb / 008/004如下: sudo chmod 777 /dev/bus/usb/008/004 并再次运行通讯程序,然后设备完美工作。 问题是,每当我插入设备,最后一个数字的变化,所以我应该不得不chmod每一次的USB总线,但由于不是所有的用户知道pipe理员密码这是一个问题。 所以制造商build议如下编辑udev规则。 […]
我有一个示例c ++代码,使用udev库接收热插拔事件。 它在Ubuntu 10.04中运行良好。 这只是libudev-dev软件包的先决条件:sudo apt-get install libudev-dev 但是当我在12.04试图安装这个软件包时,我得到: sudo apt-get install libudev-dev Reading package lists… Done Building dependency tree Reading state information… Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet […]
我试图启动一个python脚本 ,通过由UDEV规则 触发的shell 脚本 等待用户input 。 input到达后,python脚本需要进行一些数据库调用。 我遇到了几个不同的问题。 这是udev规则: SUBSYSTEM=="usb" RUN+="/path/to/script.sh" 问题#1 – 我似乎无法真正打开窗口。 这是我在script.sh中的: #!/bin/bash lxterminal -e /path/to/python_script.py 这是我从udev得到的错误: '/path/to/script.sh'(err) '(lxterminal:4606): Gtk-WARNING **: cannot open display: ' 这里是另一个shell脚本的版本,它实际上运行,但是不可见,并在检查input时崩溃。 猜测,因为如果我打开terminal,我需要重新路由stdin? 脚本: export DISPLAY=0:; bash -c /path/to/script.sh 错误: (err) name = input('Enter your name') (err) 'EOFError: EOF when reading a line' 如果我摆脱了input,我得到这个错误: [4859] exit with return […]
我正在用udev枚举scsi_generic设备来检索/dev/sg*文件名,以便我可以向每个设备发送一个查询。 当我在那里的时候我也可以得到/dev/sd*文件名(scsi_device)吗? 如果没有,我怎么得到一个scsi_genericpath的scsi_device? 这是我的udev代码: IntPtr udev = IntPtr.Zero; IntPtr enumerate = IntPtr.Zero; try { udev = Libudev.udev_new(); if (udev == IntPtr.Zero) throw new UdevException("Failed to create udev"); enumerate = Libudev.udev_enumerate_new(udev); if (enumerate == IntPtr.Zero) throw new UdevException("Failed to enumerate udev"); Libudev.udev_enumerate_add_match_subsystem(enumerate, "scsi_generic"); Libudev.udev_enumerate_scan_devices(enumerate); for (IntPtr listEntry = Libudev.udev_enumerate_get_list_entry(enumerate); listEntry != IntPtr.Zero; listEntry = Libudev.udev_list_entry_get_next(listEntry)) { […]
我正在Android设备上运行Linux chroot环境,并试图与基于Atmel atmega2560(Arduino Mega衍生)微控制器进行通信。 执行“ls -ld / dev / ttyACM0”会显示调制解调器的以下权限: crw——- 1 root root 166, 0 Feb 11 22:28 /dev/ttyACM0 “lsusb”告诉我: Bus 003 Devices: ID 03eb:204b Atmel Corp. LUFA USB to Serial Adpater Project “udevadm info –attribute-walk –name = ttyACM0”说: Udevadm info starts with the device specified by the devpath and then walks up the […]
我正在写一个udev规则来设置两个串行端口的名称。 我想在符号链接中使用属性bInterfaceNumber的值。 我的规则是: SUBSYSTEMS ==“usb”,DRIVERS ==“usb”,ATTRS {idVendor} ==“0403”,ATTRS {idProduct} ==“6010”,SYMLINK + =“toto%s {bInterfaceNumber}” 该规则与设备匹配,但该属性的值从未find。 以下是一个设备的层次结构图: console@host:udevadm info –name=/dev/ttyUSB0 –attribute-walk looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0': KERNELS=="1-1:1.0" SUBSYSTEMS=="usb" DRIVERS=="ftdi_sio" ATTRS{bInterfaceNumber}=="00" looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-1': KERNELS=="1-1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{idVendor}=="0403" ATTRS{idProduct}=="6010" 提前致谢
我正在开发一个Linux机器上的android和我已经创build了一个android的udev规则,它的工作原理。 一段时间后,如果我拔下设备并重新插入, adb不会识别该设备,如果我运行lusb或dmesg获取有关该设备的信息。 我试图重新加载udev规则,它不工作,我甚至试图杀死adb进程,但它仍然无法正常工作。 有人可以帮忙吗? 无论如何,谢谢。
我有点困惑与下面列出的问题: 当我在我的桌面上执行udevadm时,它能够侦听从内核发送的uevent 。 我想在执行udevadm之前,会检查udevd的可用性。 这意味着,如果udevd在我的桌面上不可用, udevadm将无法工作。 我的想法是否正确? 为了拥有udevadm的相同function,我发现linux也提供了另一种方式 归档这个。 这就是所谓的networking连接。 令我困惑的是,如果我这样做,我可以使用udevadm同样的事情。 因此, udev与netlink socket什么区别? socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); <—-我创build的套接字来听uevent 。 感谢avd的反馈。 得到你的反馈后,我仍然有一些问题要问。 不仅udevd可以从内核听消息,而且还有udevadm 。 我的想法是否正确? 或者udevadm只是pipe理udevd 。 通过设置绑定到NETLINK_KOBJECT_UEVENT的套接字,用户空间代码也可以监听从内核发送的事件。 在这一点上,似乎我没有理由selectudev来完成这个function。 这两种方法有什么不同吗? 在用户空间中,两个不同的进程可以同时监听uevent吗? netlink可以同时发送消息给这些进程吗?
uevents通过netlink套接字从内核空间发送到用户空间。 在内核中,必须有东西触发事件。 我想有两种可能性: 硬件中断 – 这意味着,一旦硬件中断发生,内核发送事件到用户空间,表示发生了一些事件。 软件轮询 – 这意味着,总是有一个守护进程来检查这些文件系统,看看是否有任何改变。 如果是这样,那么将这些信息更新到上层。 有谁能提供你的反馈? 谢谢