跳转到主要内容

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

贡献者

变更日志

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 (429.0 kB 查看散列值)

上传时间

构建分布

usbid-2.2-py3-none-any.whl (425.1 kB 查看散列值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面