Linux的USB文件系统API
项目描述
USB文件系统抽象API
此模块提供了一个USB文件系统抽象API,可用于获取Linux系统上物理USB总线结构的详细信息。
USB文件系统(摘自http://www.linux-usb.org/FAQ.html)
# ls /sys/bus/usb/devices/ 1-0:1.0 1-1.3 1-1.3.1:1.0 1-1:1.0 1-1 1-1.3.1 1-1.3:1.0 usb1
以“usb”开头的名称指的是USB控制器。更准确地说,它们指的是与每个控制器关联的“根集线器”。数字是USB总线号。在示例中只有一个控制器,因此其总线号为1。因此名称为“usb1”。
“1-0:1.0”是一个特殊情况。它指的是根集线器的接口。在几乎所有的方面,它都像实际集线器中的接口一样工作;请参见下文。
所有其他条目都指的是真正的USB设备和它们的接口。设备通过如下方案命名:
bus-port.port.port ...
换句话说,名称以总线号开始,后面跟着一个“-”。然后是沿着路径到设备的每个中间集线器的端口号序列。
例如,“1-1”是指插入到总线1,端口1的设备。它恰好是一个集线器,“1-1.3”是指插入到该集线器端口3的设备。该设备是另一个集线器,“1-1.3.1”是指插入到其端口1的设备。
接口由以下形式的后缀表示
:config.interface
也就是说,一个“:”后跟配置号,然后是一个“.”,然后是接口号。在上面的例子中,每个设备都使用配置1,并且这个配置只有一个接口,编号为0。因此接口显示为:
1-1:1.0 1-1.3:1.0 1-1.3.1:1.0
集线器永远不会超过一个接口;这是USB规范的一部分。但其他设备可以并确实有多个接口(有时还有多个配置)。每个接口都会在sysfs中得到自己的条目,并可以有自己的驱动程序。
用法
API由一个USB根对象组成,从该对象可以访问所有子对象,就像Python容器类型一样。
>>> from usbid import USB
>>> usb = USB()
>>> usb
<usbid.fs.USB [/sys/bus/usb/devices] at ...>
>>> usb.keys()
['1', '2']
获取特定的总线。
>>> bus = usb['1']
>>> bus
<usbid.fs.Bus [usb1] at ...>
从总线获取端口。
>>> port = bus['1']
>>> port
<usbid.fs.Port [1-1] at ...>
从端口获取接口。
>>> port.interfaces
[<usbid.fs.Interface [1-1:1.0] at ...>]
接口可能有关联的tty。
>>> port.interfaces[0].tty
'ttyUSB0'
不推荐通过tty挂载名称引用USB接口。但记住文件系统名称进行唯一标识是一个好主意,通过此名称查找接口,然后连接到相应的tty。
>>> interface = usb.get_interface('1-1:1.0')
>>> interface.tty
'ttyUSB0'
对于调试,您可以打印USB结构。
>>> usb.printtree()
<usbid.fs.USB [/sys/bus/usb/devices] at ...>
<usbid.fs.Bus [usb1] at ...>
- Linux 3.13.0-48-generic xhci_hcd
- xHCI Host Controller
<usbid.fs.Interface [1-0:1.0] at ...>
<usbid.fs.Port [1-1] at ...>
- FTDI
- FT232R USB UART
<usbid.fs.Interface [1-1:1.0] at ...>
- ttyUSB0
源代码
源代码位于一个GIT DVCS中,其主分支位于github。
贡献者
Robert Niederreiter <rnix@squarewave.at>
Jens W. Klein <jens@bluedynamics.com>
Benjamin Stefaner <bs@kleinundpartner.at>
变更日志
2.2 (2023-05-15)
官方支持Python 3.7 - 3.11。[rnix]
CI集成。[rnix]
将doctests转换为unittests。[rnix]
2.1 (2022-07-18)
Python 3支持[rnix, 2022-07-17]
2.0 (2015-04-09)
完全重写。[rnix, 2015-04-08]
1.0.3 (2014-03-03)
具体的ttyXXX设备可能位于tty子目录中。[rnix, 2014-02-26]
1.0.2 (2014-02-26)
将usbid.device.devicelist重命名为usbid.device.device_list。由于导入可用,因此[B/C]为。[rnix, 2014-02-26]
引入usbid.device.device_by_path实用程序。[rnix, 2014-02-26]
使用最新的usb.id文件版本2014.02.03,来自http://www.linux-usb.org/usb.ids [jensens, 2014-02-20]
1.0.1 (2014-02-20)
修复设备节点层次结构 [rnix, 2014-02-17]
维护,修复测试 [rnix, 2014-02-17]
1.0 (2013-12-19)
初期工作 [benniboy, jensens, 2013-12-19]
许可证
版权(c)2013-2023,BlueDynamics Alliance,奥地利,德国,瑞士。保留所有权利。
重新分发和使用源代码和二进制代码(无论是修改还是未修改),前提是满足以下条件
源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
二进制形式的重新分发必须在本文档和/或其他随分发提供的材料中复制上述版权声明、本条件列表和以下免责声明。
未经事先书面许可,不得使用BlueDynamics Alliance的名称或其贡献者的名称来推广或支持从本软件派生的产品。
本软件由BlueDynamics Alliance提供,"按原样"提供,并且任何明示或暗示的保证,包括但不限于适销性和特定用途的适用性保证均被排除。在任何情况下,BlueDynamics Alliance均不对因使用本软件而产生的任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务的中断)承担责任,无论损害是由于何种原因引起的,以及基于何种责任理论,无论是合同、严格责任还是侵权(包括疏忽或不作为)。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源分布
构建分布
usbid-2.2.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5a6298939289ef1416c6c26e57d9dfadcb59a6412de39c9fbc03611963ddcb03 |
|
MD5 | 311cc212e823dead845944f7e6006ff4 |
|
BLAKE2b-256 | 08713a78bee9e0af7c69ca9913ff1a0bbd0d02a496fd0eeca18898233543f0bb |
usbid-2.2-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | ccba93a9cf97a2ab8e7f853608aa1a69d9da2bdff36bfe932ee2159fd09371ec |
|
MD5 | f67038ff10d8b46c48c79e4d8fb55e9a |
|
BLAKE2b-256 | d284c54c85050312501d163a50f6cf95e628b590eb80860b4b02978cf9da62fc |