Adb在一段时间后停止检测我的手机
我正在Linux机器上为Android开发,并且我已经为Android创建了一个udev规则,并且可以正常工作.一段时间后,如果我拔下设备并再次将其插入,adb如果我运行lusb或dmesg以获取有关设备的信息,则无法识别设备.我尝试重新加载udev规则,但它行不通,我什至尝试杀死adb过程,但仍然不起作用. 有人可以帮忙吗? 无论如何,谢谢. 解决方案 这似乎是Linux上的一个真正问题,在某个时间点,ADB将不再看到设备.我真正应该说的几乎是ADB永远不会看到的.就我而言,我有一个三星Galaxy Tab 10.1,该选项卡给了Google I/O 2011的与会者.我的Ubuntu 10.10开发系统在此设备方面工作正常. 9月19日附近的某个时候,ADB停止看到该设备!实际上,ADB检测到该设备的时间是Breif时刻.关于我和我认为法老的问题的问题需要清楚的是,执行 的权限问题不是权限问题 $ adb设备 返回?????????????对于设备.该设备根本
2 2024-02-02
编程技术问答社区
从udev规则文件向shell脚本传递参数
在规则文件中,通过传递"标签"和" devname"的"登录" 来执行脚本 ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh %E{ID_FS_LABEL} %E{DEVNAME}" 在USB_MOUNT.SH文件中,将参数值打印为 echo "LABEL: $1 DEVNAME: $2" # this does not work reliably 某些设备具有空的标签字段,因此DevName被打印为标签.在bash脚本中,我们可以以双引号传递args,即使args为null. 也可以使用. 将args传递给UDEV规则的等效物是什么? 解决此问题的解决方法可能是切换参数的顺序.有什么可靠的方法吗? 解决方案 您应该能够使用单引号而不是您提到的双引号: ACTION=="add", RUN+="/appmount/scripts/usb_mount.sh '%E{ID_FS_LABEL
10 2023-11-13
编程技术问答社区
需要在linux上找到并打开一个USB串行设备
我正在编写一个小C应用程序,以在我的(Linux)QNAP NAS上运行,该应用程序将与Arduino交谈(我对Arduino的任何USB代码毫无困难). (Arduino上有一个受信任的应用程序,该应用程序通过USB串行接受文本命令.) 我的愿望是使用USB供应商/产品ID(目前只有一半)找到它.到目前为止,我到目前为止(见下文)确实可以找到设备. // runs on NAS #include #include main () { struct usb_bus *bus; struct usb_device *dev; usb_init(); usb_find_busses(); usb_find_devices(); for (bus = usb_busses; bus; bus = bus->next) { for (dev = bus->devices; dev; dev = dev->next)
12 2023-11-10
编程技术问答社区
Raspberry Pi上FAT32 U盘的默认文件权限
当我将已格式为FAT32格式的USB棒/Thumbdrive插入Raspberry Pi(运行RaspBian)时,文件权限默认为644,我无法更改它们. 我需要将棍子作为fat32留下 我已经使用UDEV编写了一条规则,但我无法正常工作. 我的UDEV规则看起来像这样: # Set up any USB stick for full write access KERNEL=="sd?1", MODE="0777" 我确定该规则正在被触发,因为我将其重命名为设备.它正在设置设备本身的权限,而不是设备上的单个文件. 我最终试图实现的是能够从php中写入USB棒的能力. 我觉得我非常接近答案,但看不到我缺少什么. 解决方案 解决问题 - 几个小时后,我的Linux Guru朋友Jox的建议. 它有些参与,可能有一种更简单的方法 - 很高兴听到它. 1)disble GUI又禁用了自动启动. (无论如何,PI都在运行无头). 2)
2 2023-11-10
编程技术问答社区
使用udevadm在bash中读取usb的串行代码
我正在尝试使用Udevadm命令读取bash中的USB唯一ID. 二手命令是: udevadm info --query=all --name=/dev/sdc1 使用常规USB存储时,输出是正确的, E: ID_SERIAL=JetFlash_Transcend_2GB_7FYD0N04-0:0 E: ID_SERIAL_SHORT=7FYD0N04 但是当我使用MP3播放器时,输出是奇怪的: E: ID_SERIAL=10d6_USB_2.0_FS__FLASH_DISK_USB_2.0_FS__FLASH_DISK E: ID_SERIAL_SHORT=USB_2.0_FS__FLASH_DISK 除了用于USB存储的ID_Serial_short外,还有其他独特的东西吗? 谢谢 解决方案 没有唯一的USB序列号.每个供应商都根据自己的意愿选择代码.根本没有USB_Serial的设备很多.
4 2023-11-10
编程技术问答社区
使用iSerialNumber USB设备描述符来唯一地识别GoPro相机
我感兴趣的字段是从:lsusb -d : -v 的输出中 非唯一iserialnumber的示例输出: Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x0402 ALi Corp. idProduct 0x9665 Gateway Webcam bcdDevice 0.09 i
16 2023-11-10
编程技术问答社区
Udev规则不适用于Ubuntu 12.04上的libusb
我在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? 因此,如果我将/dev/bus/usb/008/004 Chmod如下: sudo chmod 777 /dev/bus/usb/008/004 并再次运行通信程序,然后设备完美工作. 问题在于,每次我插入设备时,最后一个数字都会发生变化,因此我必须每次
6 2023-11-10
编程技术问答社区
我怎样才能在Linux中检测到一个用于充电的USB端口?
我正在使用Raspberry Pi 3型B上的USB端口通过USB磁充电电缆为配件充电.我想检测到电缆何时插入并从pi . 中卸下 我一直在插入并卸下该电缆,并寻找在Linux上检测到的任何痕迹.到目前为止,我尝试了: 通过udevadm monitor监视UDEV事件. 在/var/log等中尾声登录 在新设备的/dev目录上运行iNotify手表 在/sys/bus/usb/devices中四处寻找任何线索 是否可以检测我的简单充电电缆正在插入/卸下?通过直觉,我认为否(因为电缆纯粹是用于充电,并且没有驱动程序),但是我观察到RPI在插入电缆时会闪烁其内置的LED红色. 解决方案 没有大量努力(硬件或黑客),否. 您观察到的红色LED闪光灯是PI的电源监视器,表明当电流开始流向附件时,电压降低了.该LED表明电压(电能)短暂下降到稳定的水平以下,并且可能导致系统不稳定性. 由于连接纯粹是充电(没有与PI交换的USB数据),操作系统不知道该设备
6 2023-11-10
编程技术问答社区
使用udev-rules在没有sudo的情况下调用libusb
在kubuntu上进行了测试16.04 64位.我有一个不在我控制的源的应用程序.它使用一些libusb调用,例如: libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/001/031: Permission denied libusb: error [_get_usbfs_fd] libusb requires write access to USB device nodes. 在将上述应用程序作为root运行时,它可以按预期工作. 当我更改有关文件的权限时,例如: sudo chmod a+w /dev/bus/usb/001/031 然后,该应用程序将与标准用户权利一起使用(直到我断开/重新连接我的USB设备). 现在我正在寻找一种方法,例如每次插入特定的USB设备时,每次自动执行chmod
0 2023-11-10
编程技术问答社区
如何列举USB设备*和*读/写它们?
我需要与自定义的USB设备进行通信.没有特殊的驱动程序.该设备不显示为/dev/tty*. i 我无法弄清楚的是我可以open(2)设备,所以我可以从中write(2) write(2) read(2). 是否可以与通用USB设备进行通信,设置Baudrate并读/写?如果是这样,我应该在使用libudev找到设备后打开什么"文件"?如果没有,是否需要编写内核级驱动程序? 解决方案 libusb 是理想的选择.还有您所描述的. 的几个示例 在您的情况下,您只需要: 创建默认上下文. 请求设备列表. 使用所需供应商/产品ID搜索设备. 打开设备,然后通过清理请求的设备列表. 完成后,关闭设备手柄并销毁上下文. 这使您可以相对轻松地编写用户空间应用程序/库.我已经与麦克风,相机和DIY硬件(我构建的迷你装配线设备)一起使用了它. 邮件列表中的开发人员也非常有帮助,尽管一个或两个同伴往往有些苛刻如果新成员的帖子不是完美写的,给新成员.
2 2023-11-10
编程技术问答社区
如何知道哪个设备连接在哪个/dev/ttyUSB端口?
我正在使用两个WaveCom 16端口调制解调器.当我将调制解调器连接到系统上时,我能够列出所有/dev/ttyUSB端口名称,但我也想知道,哪个调制解调器包含端口0至16,哪个端口包含17至32的端口? 一次可以在一天内将调制解调器附加并删除多次,因此,当调制解调器断开并再次连接时,我也想保留日志. 使用C/C ++/php脚本/node.js? 有什么想法. 解决方案 您可以从sys文件系统中获取此信息.从外壳检查很容易检查,然后执行相同操作的程序: cd /sys/devices 找到第一个端口的目录:find -name "ttyUSB0".它可能会在./pci0000:00/0000:00:1d.0/usb2/2-2/2-2.1/2-2.1:1.0/... 之类的东西中找到它们 pci*部分是USB控制器.有趣的位是2-2.1是USB设备.在该目录中,有很多文件可以识别您的设备: serial:序列号.可能是您想要的. idVendor
48 2023-11-10
编程技术问答社区
如何在插入U盘时运行Python脚本
我的目标是在USB闪存驱动插入上运行Python脚本.我写了一个UDEV规则和一个在该规则中称为的shell脚本. udev规则:/etc/udev/rules.d/10-usb.rules KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/home/Hypotheron/Desktop/script.sh" script.sh: #!/bin/sh echo 'Hello, world.' > /home/Hypotheron/Desktop/foo.txt #/home/Hypotheron/Desktop/job.py & exit 我的python文件的第一行是: #!/usr/bin/python 我也执行了以下命令: chmod +x job.py chmod +x script.sh script.sh中的线路写入foo.txt
2 2023-11-10
编程技术问答社区
ubuntu 12.04 libudev-dev由于依赖关系而无法安装
我有一些示例C ++代码,该代码使用UDEV库接收热销事件.它在Ubuntu 10.04中正常工作.唯一的先决条件是libudev-dev包: sudo apt-get安装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 bee
2 2023-11-10
编程技术问答社区
用Bash脚本来检测我的USB是否插入,然后与目录同步。
我可以写一个bash脚本和/或守护程序,它将检测到特定的USB驱动器,然后将该驱动器与目录同步? 解决方案 供将来参考,以下是在检测USB驱动器时运行bash脚本的方法. 连接设备并运行lsusb以检索设备的信息.您应该看到与此类似的东西: $ lsusb Bus 002 Device 039: ID 0bc2:2100 Seagate RSS LLC 在这种情况下,设备的供应商ID为0BC2,产品ID为2100. 现在您可以使用您选择的文本编辑器创建UDEV规则. $ sudo vi/etc/udev/rules.d/85-my_usb_device_rule.rules 并添加此: action ==" add",subsystem ==" usb",sysfs {idvendor} ==" 0bc2", sysfs {idproduct} ==" 2100",运行+="/home/myhome/my_script" /home/
4 2023-11-10
编程技术问答社区
Docker绑定挂载目录中的文件没有更新
我正在使用Docker Bind Mount来映射Ubuntu生成的主机/dev/serial/文件夹(其中包含识别符合串行设备的符号链接,例如/dev/ttyUSB0).完整的Docker容器运行命令我正在使用 docker run -d --restart always --privileged=true -v /dev/serial:/dev/serial DOCKER_IMAGE_NAME 首先运行良好,但是如果串行设备断开并重新连接,则重新链接.此更改不会传播到Docker容器中,而是Docker容器找到一个空的/dev/serial文件夹.我还测试了该目录中的主机上和Docker容器中的手动创建文件,并且奇怪的是,在两种情况下,另一个更改均未更新. 卷显示为 { "Type": "bind", "Source": "/dev/serial", "Destination": "/dev/serial", "Mode": ""
24 2023-11-02
编程技术问答社区
使用UDEV更改TTYUSB权限
我的程序需要未经根许可而访问ttyUSB 我尝试使用chmod 777 /dev/ttyUSB0更改它,如您所知,当我重新启动此权限时,此权限将其更改为默认值.如何为此配置我的UDEV规则. 解决方案 在rules.d目录中查找ttyUSB*,然后将其更新到下面的LKE: KERNEL=="ttyUSB*", MODE="0777" 留下您在行上找到的任何其他条目,如果不存在,请添加模式属性.
6 2023-11-01
编程技术问答社区
从udev启动的脚本不再有DISPLAY权限?
我有一个脚本,该脚本从udev插入外部驱动器时运行.它总是有效的.但是从 Linux 3.8/Xorg升级后1.12/Mint 14 ( ubuntu 12.10 兼容)到 linux 3.11/xorg 1.14/mint 16 ( ubuntu 13.10 兼容),它不再起作用. 脚本仍在运行,但没有需要显示工作的命令.我通过退出udev守护程序并手动运行udevd --debug来弄清楚这一点(更多以下). 这个脚本用于薄荷14/12.10 : export DISPLAY=:0 UUID=$1 DEV=$2 notify-send -t 700 "mounting $DEV ($UUID)" gnome-terminal -t "Backing up home..." -x rsync long line of data zenity --warning --text="Done." ,但不再在薄荷16/13.10 中.如果您想知道可能的解决方案,我逐渐添
12 2023-11-01
编程技术问答社区
USB设备UDev和D-BUS
我正在尝试获取当前插入Ubuntu 10.10中USB设备的列表,并监视发生的更改,例如使用UDEV和D-BUS插入或插入的设备.我是使用D-Bus编程的新手.我看到了一个例子: linux:linux:如何检测是USB键盘被插入并插入插头只有一个人使用HAL,我知道HAL已弃用.我找到了一些工作代码,对其进行了修改,仅适用于仅适用于任何设备的存储设备,例如USB棒,媒体播放器或CD-ROM设备.我想要整个鼠标,键盘,USB摄像头会汇集任何已插入的USB的东西,我希望我的程序了解它.基本上,这就是我所拥有的( http:/http:/http:/http://moserei.de/2010/01/08/accessing-devicekit-with-with-dbus-and-python.html ): import dbus import gobject from dbus.mainloop.glib import DBusGMainLoop def device_adde
6 2023-11-01
编程技术问答社区
通过udev规则触发的shell脚本打开一个lxterminal窗口
我正在尝试启动一个python脚本 通过shell 脚本触发 ud> ud> udev规则, .输入到达后,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脚本的另一个版本,它实际运行但不可见,在检查输入时崩溃了.猜测是因为如果我让终端打开,我需要重新列出stdin?脚本: export DISPLAY=0:; bash -c /path/
4 2023-10-17
编程技术问答社区
在启动期间自动安装单独分区时,systemd/udev依赖项失败
编辑:当我尝试使用任何安装点的单独分区时,不仅是/var. ,就会发生这种情况. 我正在使用BuildRoot来构建嵌入式Linux系统.我正在尝试使用/var的单独分区,但是对于任何安装点来说,都会发生这种情况.我的Init System是SystemD,用于设备管理的UDEV.我已经编辑了我的FSTAB: # /dev/root / ext2 rw,noauto 0 1 /dev/mmcblk0p4 /var ext2 defaults 0 2 proc /proc proc defaults
26 2023-10-13
编程技术问答社区