我有两个系统,一个运行Ubutu 14.04,一个运行raspbian。 当我连接一个USB打印机到我的Ubuntu机器时,我可以从udevadm得到大量的信息: :~$ udevadm info -q property –export -n /dev/usb/lp2 DEVNAME='/dev/usb/lp2' DEVPATH='/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1.1/3-2.1.1:1.0/usbmisc/lp2' ID_BUS='usb' ID_MODEL='DYMO_LabelWriter_450' ID_MODEL_ENC='DYMO\x20LabelWriter\x20450' ID_MODEL_ID='0020' ID_REVISION='0112' ID_SERIAL='DYMO_DYMO_LabelWriter_450_09041413125694' ID_SERIAL_SHORT='09041413125694' ID_TYPE='printer' ID_USB_DRIVER='usblp' ID_USB_INTERFACES=':070102:' ID_USB_INTERFACE_NUM='00' ID_VENDOR='DYMO' ID_VENDOR_ENC='DYMO' ID_VENDOR_ID='0922' MAJOR='180' MINOR='2' SUBSYSTEM='usbmisc' USEC_INITIALIZED='873171356' 但是当我在另一个系统(raspbian)上执行相同的命令时,我几乎没有得到任何信息: :~$ udevadm info -q property –export -n /dev/usb/lp0 DEVNAME='usb/lp0' DEVPATH='/devices/platform/bcm2708_usb/usb1/1-1/1-1.4/1-1.4:1.0/usbmisc/lp0' MAJOR='180' MINOR='0' SUBSYSTEM='usbmisc' UDEV_LOG='3' 在第二个(raspbian)系统上,我可以在连接时在系统日志中看到有关设备的信息: Jun 3 17:24:06 raspberryPi kernel: [ 2517.897717] usb […]
我有一个脚本,只要连接了供应商1004的USB设备就可以运行。 我使用的udev规则是这样的。 SUBSYSTEM=="usb", ATTR{idVendor}=="1004", RUN+="/var/www/beta/trigger.php" 现在,我希望在任何USB设备连接时运行此脚本,并将Vendor ID作为parameter passing。 (所以脚本可以决定是否需要运行。) 添加一个可以在脚本中访问的参数到目前为止工作: SUBSYSTEM=="usb", RUN+="/var/www/beta/trigger.php myparam" 有人可以告诉我如何用ATTR {idVendor}的值replace“myparam”? 我已经尝试了各种组合,但我从来没有得到预期的结果… 非常感谢!
这个问题是双重的: 1-如何从USB设备手动分离驱动程序并附加不同的驱动程序? 例如,我有一个设备,当连接自动使用USB存储驱动程序。 // usbview输出 Vendor Id: xxxx Product Id: xxxx … Number of Interfaces: 2 Interface Number: 0 Name: usb-storage Number of Endpoints: 2 … Interface Number: 1 Name: (none) Number of Endpoints: 2 … 我不想使用USB存储驱动程序,所以我有一个应用程序运行在我使用libusb库分离USB存储驱动程序,然后我声称的接口的主机上运行。 然后,我可以将数据发送到USB设备和我的主机Linux系统上运行的应用程序。 如何在应用程序之外手动分离驱动程序? 2-如何自动分配驱动程序以附加在设备插件上。 我目前有一个udev规则设置自动设置设备权限。 SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666" 我可以使用udev规则将驱动程序分配给USB设备上的特定接口吗? 例如,如果我想在接口0上自动使用usbnet模块而不是usb-storage,那么在udev中可以使用吗? 谢谢, (我对StackExchange如何与其他站点工作或者它们都是一样的有点困惑,这是一个Linux问题,所以也在Unix和Linux上发布,请原谅,如果不应该在这里发布,但StackOverflow也处理Linux,所以…)
我试图得到一个脚本运行,只要任何USB闪存驱动器(不只是一个特定的一个)插入到系统,我已经拉了我的头发约2个星期,现在开始和closures试图弄清楚。 有谁能够帮助我? (如果有帮助,运行Ubuntu)。 我需要能够传递驱动器序列号和devpath(/ dev / sd **)在最低限度。
在我的Linux上(BeagleBone Black上的Angstrom发行版),我有一个USBencryption狗,它performance为一个串口,默认情况下是/dev/ttyUSB0 我想启动一个守护进程,它将连接到串行端口并使其可用作套接字。 我有这个USB到套接字桥的代码,它在手工启动时工作。 我希望它在系统启动时自动启动,假设USBencryption狗已插入。我该怎么做? 尝试到目前为止: systemd:我用条件After: remote-fs.target和After:syslog.target创build了一个systemd服务,但是看起来USBencryption狗还没有准备好,而且守护进程的启动失败了。 是否还有其他系统targets或services需要处理,以便守护进程只有在udev已经完成安装设备和networking准备就绪后才能启动? udev:我创build了一个udev规则 KERNEL ==“ttyUSB?”,RUN + =“/ path / to / daemon.sh” 执行成功。 但守护进程(在该脚本中以“&”开头的后台进程)似乎不会执行。 也似乎被折磨,叉从udev规则长期运行的进程。 什么是正确的方法来做到这一点?
我已经看到了使用udevadm解决命令。 在init脚本中使用这样的命令是什么?
我需要处理两个通过两个串行连接发送debugging数据的定制硬件。 这些串行连接通过两个串行到USB转换器。 串口到USB设备具有相同的供应商编号,设备编号,显然是相同的序列号。 这是问题:我想分别logging两个串行端口。 自定义硬件需要不断重新启动,并且它们是否连接到相同的/dev/ttyUSB*是完全随机的。 我怎样才能让他们每次都select相同的设备path? 我可以让它取决于它插入什么端口,但似乎有点哈克。 所以,我对udevadm的输出进行了比较,如下所示: $ udevadm info -a -p `udevadm info -q path -n /dev/ttyUSB1` > usb1 $ udevadm info -a -p `udevadm info -q path -n /dev/ttyUSB2` > usb2 $ diff usb1 usb2 diff的输出很长, 你可以在这里看到它 系列化(两者相同): $ udevadm info -a -p `udevadm info -q path -n /dev/ttyUSB2` | grep serial […]
使用udev我已经能够获得某个USB设备的这个信息: idVendor: 13b1 idProduct: 0018 manufacturer: product: USB 2.0 Network Adapter ver.2 serial: 00FFFF 现在我想获得与供应商和产品ID相关的完整string。 我发现文件/usr/share/misc/usb.ids包含我正在寻找的信息: 13b1 Linksys 000b WUSB11 v4.0 802.11b Adapter 000d WUSB54G Wireless Adapter 0011 WUSB54GP v4.0 802.11g Adapter 0018 USB200M 10/100 Ethernet Adapter 001a HU200TS Wireless Adapter 001e WUSBF54G 802.11bg 0020 WUSB54GC 802.11g Adapter [ralink rt73] 0023 WUSB54GR 0024 WUSBF54G v1.1 […]
我从Linux开始转向一个无头的媒体中心,我相对比较新。 我正在运行KODIBuntu。 我正试图实现一个自动翻录系统备份我的硬拷贝媒体collections。 我喜欢linux的概念,“如果你能做到这一点,你可以做到这一点”。 我想要达到的目的是将光盘放入驱动器,脚本将内容撕碎到驱动器中。 例如插入的光盘 – >确定的媒体types – >正确的翻录脚本运行 我通过谷歌search使用了大量有用的网页来创build脚本,这些脚本将会完成抓取工作。 我已经做了一堆的阅读,并指向使用“HAL”….然后我发现他的function已被弃用,取而代之的是udev。 我做了一堆更多的阅读,发现如何使用UDEV,并创build了我已经certificate了作品直接链接到翻译脚本 ACTION=="change", SUBSYSTEMS=="scsi", KERNEL=="s[rg][0-9]*", ATTRS{vendor}=="TSSTcorp", MODE="0660", GROUP="optical", RUN+="/home/jlivin25/myscripts/DiscTypeTest.sh" 我意识到我需要一个中间脚本来做“工作”来确定光学媒体的types。 进一步的阅读让我相信我需要使用某种“IF”陈述。 如果光盘插入然后IFaudioCD运行RIP脚本1 IF DVD运行RIP脚本2 IF蓝光运行RIP脚本3 ELSE没有CD插入 我做了更多的search,并在各个地方使用环境variables来发现一些代码。 然而,从谷歌进一步的信息看来,这些variables直到UDEV引用才定义? 我通常的做法是构build一行代码,在terminal中运行,如果我得到我想要的然后我把所有的行在一起的shell脚本? 我正在工作的代码是在下面。 我虽然从逻辑上说,如果我能得到脚本输出什么它认为是在驱动器到一个文件/日志,一半的战斗将赢得,我可以用这个脚本位置,将做相应的翻录任务。任何想法人们为什么这不工作,因为我想? 我已经使用这些页面来获取信息: https://pathar.tl/blog/the-ultimate-…pping-machine/ https://askubuntu.com/questions/35985…on-of-dvd-disc 这里是我的代码: #!/bin/bash # set -eu # # code below is derived from work by JimVanns, thanks # https://github.com/jvanns/htpc/blob/master/dsc-trg-q # # […]
我一直在开发一个使用libusb_hotplug_register_callback()监视USB设备树的应用程序。 当符合一些标准的设备被附加时,它将fork()和exec()一个应用程序来处理这个设备。 这个应用程序现在一直工作正常,但我已经回来尝试“整理”了… libusb将打开一些文件描述符(见下文),它监视事件,等等…问题是,我打电话后fork()和调用exec() ,我想closureslibusb,closures文件描述符,并让孩子处于干净的状态。 家长: root@imx6q:~# ls -l /proc/14245/fd total 0 lrwx—— 1 root root 64 Feb 9 18:15 0 -> /dev/pts/2 lrwx—— 1 root root 64 Feb 9 18:15 1 -> /dev/pts/2 lrwx—— 1 root root 64 Feb 9 18:15 2 -> /dev/pts/2 lrwx—— 1 root root 64 Feb 9 18:15 3 -> […]