Articles of USB

如何识别设备与udev

我想使用libudev来监视某些设备。 具体而言,我想监视可移动存储:USB硬盘驱动器,USB钥匙,SD卡等。libudev API可以让您find设备,如果您知道设备的父系的“子系统”和“devtype”。 我尝试了我的电脑上的设备,并使用udevadm发现所有的存储types都有'block' – >'scsi'的设备子系统,但是我不知道这些设备具有哪些设备types。 有一个devTYpes和子系统的列表,我可以用作参考的地方,或更好的方法来查找devtype?

将驱动程序转换为Linux

我试图写一个Linux驱动程序到一个设备,我有Windows驱动程序(类似于这里描述的情况下,但不同的设备) 我使用Libusb在Linux端进行通信,并使用SourceUSB作为我的USB嗅探器(在Windows机器上)。 现在我想我已经正确地复制了控件和块,但是我不能真正在Windows上testinglinux日志。 我在虚拟机上运行Ubuntu 12.04。 所以我的问题是: 是否有多平台logging器? 这可以真正简化日志比较过程。 当我将USB设备连接到VM时 – 我在Windows中获得VM驱动程序。 嗅探这个设备给我什么设备看到的,对吧? 我的意思是 – 这是我想要闻的地方吗? 编辑:我编译我的应用程序在Windows(libusb是跨平台 – 非常感谢libusb开发人员做了这么好的工作),我的应用程序正常工作。 当在Linux上运行我的应用程序时嗅探虚拟机驱动程序时,我将VENDOR_DEVICE而不是CONTROL_TRANSFER和BULK_OR_INTERRUPT的请求视为USB。 这似乎是如果我理解正确的问题,因为这是设备“看到”。 所以我想现在我的问题是为什么Linux发送我的请求作为供应商。 另一个编辑:解决的问题: 听VM驱动程序给了我错误的请求(我正在听VM驱动程序的stream量,而不是,因为我想,我的USB Linux驱动程序的stream量 Libusb是完美的多平台。 我花了几分钟让我的代码在windows下编译,从那里debugging和比较日志非常简单

了解linux标准USB摄像头驱动程序

我试图了解与USB摄像头接口的软件层。 据我所知: 标准networking摄像头适合“USBvideo设备类”或“UVC”类别 。 在Linux中, Video4Linux(V4L,V4L2)封装了所有video捕获设备。 V4L(2)提供了两个API:一个用于想要获取和使用捕获设备数据的程序。 另一个API是内部的,对于驱动程序本身,所以这些驱动程序可以通过V4L(2)的外部API被程序访问。 其中一个V4L(2)驱动程序是UVC驱动程序 ,它包含所有符合标准的USBnetworking摄像头。 我的问题: 查看UVC驱动程序的主页,显示支持的设备列表。 这些设备中的每一个都是在UVC驱动程序内单独照顾的? 或者只有当设备有特殊需要处理? 换句话说,所有符合标准的USBnetworking摄像头是否应该自动与UVC驱动程序一起工作,无论它们是否在列表中? 谢谢

有没有一个definitieve资源文件导航的linux / proc和/ sys文件系统?

我们在Linux中使用/ proc和/ sys文件系统来发现各种types的系统configuration信息。 通常,我们通过不同的文件和目录拼写,直到find我们需要的信息。 我想知道是否有人知道如何通过/ proc和/ sys文件系统来定位特定信息的权威资源。 我们主要从这些文件系统中的各种文件获取USB,PCI和SCSI信息。 谢谢,

通过USB反向连接几个Android设备

我正在尝试为我的android应用程序设置一个testing环境,其中单独的设备需要Internet连接,但没有无线function。 所以我决定使用USB反向共享。 我的主机正在运行Ubuntu。 我已经设法为一个设备设置反向networking连接,连接正在工作,我可以从该设备的adbshellping通google.com。 当我连接第二个设备时,第一个圈子停止工作。 两个设备在其内部的usb0接口上都configuration了相同的IP地址。 以下是我到目前为止: 主机上的端口转发被激活 echo 1 > /proc/sys/net/ipv4/ip_forward 在主机上的iptables规则路由stream量: iptables -t nat -A POSTROUTING -s 169.254.255.2/24 -j MASQUERADE 插件第一个设备: ifconfig shows the device on usb0 @ ip 169.254.255.2/30 在第一个设备(与adbshell) > route add default gw 169.254.255.2 dev usb0 > setprop net.dns1 8.8.8.8 > ping google.com –> is giving results 插件第二个设备 ifconfig shows […]

在linux上通过USB发送原始数据

我在Zebra TLP-2844打印机上打印了一些标签,并且通过向共享的USB打印机发送EPL指令,在Windows上做得很好,如下所示: 键入Label.prn> \ my-pc \ zebra 它似乎与串口一起工作 键入Label.prn> COM1 现在我正试图在Linux上一样,但它变得非常困难! 我的第一个猜测是: 猫Label.prn | 的/ dev /总线/ USB / 005/002 因为我的打印机在总线005,设备002(使用lsusb命令检查),但它根本不工作,因为我得到一个坏 bash:/ dev / bus / usb / 005/002:权限被拒绝 任何猜测?

udev不捕获信息(很多缺less的属性)的USB设备

我有两个系统,一个运行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 […]

`libusb_attach_kernel_driver`不工作

我有一个问题,清理我的Linux应用程序使用libusb (内核不回收接口): int rc; rc = libusb_reset_device(handle_); if (rc < 0) { cerr << "Error resetting the device: " << libusb_error_name(rc); } for (int ifnum = 0; ifnum < 2; ifnum++) { rc = libusb_release_interface(handle_, ifnum); if (rc < 0) { cerr << "Error releasing interface: " << libusb_error_name(rc); } if (libusb_kernel_driver_active(handle_, ifnum)) { cerr […]

Android上USB设备的Linux文件权限

我正在开发运行Android的自定义平板电脑(由我的公司构build为销售工具)的应用程序。 应用程序需要通过虚拟串行端口与附加的USB设备进行通信。 驱动程序安装并且工作得很好(这是由Silicon Labs提供的CP2101 USB至UART桥接控制器)。 我正在使用http://code.google.com/p/android-serialport-api/上的串口库。 问题是无论何时装载设备,我没有权限在Android中打开它。 Android串口库希望打开一个通常为/ dev / ttyUSB0的文件,但是应用程序没有这个权限。 如果我打开adb shell并运行“chmod 666 / dev / ttyUSB0”,一切正常。 当然,我需要一个更持久的解决scheme。 我不认为init.rc会工作,因为我希望能够修改设备文件,而不仅仅是在启动时。 有没有办法迫使Linux以更宽松的权限挂载这个设备(或任何真正的设备)? 提前致谢。

如果一个坏的USB设备能够崩溃一个无bug的Linux内核?

我知道,我的问题相当宽泛,但我很长一段时间一直在想这个问题。 一点背景。 我在一个物理实验室工作,所有的实验室电脑都运行Debian(老版本和Lenny混合使用),或者最近的Ubuntu 10.4 LTS。 我们编写了很多定制软件来与实验硬件和其他计算机进行交互。 我们有很多控制实验各个部分的FPGA板,这些板通过USB连接到不同的计算机。 升级计算机控制实验后,我们开始看到计算机运行所有激光器的崩溃/locking。 这曾经是完全稳定的。 我的问题是这样的:如果整个计算机因a)Python / GTK软件的问题而被lockingb)USB设备驱动程序或者c)实际的设备可以归咎于Linux内核(或其他级别的操作系统) ? 即使我在执行软件/硬件时犯了错误,要求Linux内核不要恐慌也是不公平的。 我自己的猜测:任何用户级别的应用程序都不应该能够崩溃整个系统,因为他们只能访问自己的东西。 任何设备驱动程序都成为内核本身的一部分,因此可以使其崩溃。 我的理由是什么? 奖金的问题:是否有办法隔绝设备和内核,使得Linux不pipe硬件有什么愚蠢的错误,都能保持愉快的运行。 这将是非常有用的,原因有两个:1)使用正在运行的系统进行debugging比较容易2)为了实验的目的,我们确实需要很长的正常运行时间,只有一部分系统崩溃比一部分崩溃该系统传播到其余的。 任何有关这个问题的链接和阅读材料将不胜感激。 谢谢。