usb hub区分端口 USB 子系统拓扑浅析

USB ID Database VendorID and ProductID

usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: xHCI Host Controller
usb usb1: Manufacturer: Linux 4.19.157 xhci-hcd
usb usb1: SerialNumber: xhci-hcd.0.auto
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected usb 1-1: New USB device found, idVendor=0451, idProduct=8142, bcdDevice= 1.00
usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
usb 1-1: SerialNumber: 3E000079C0A6
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected usb 1-1.1: New USB device found, idVendor=0451, idProduct=8027, bcdDevice= 1.10
usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
usb 1-1.1: SerialNumber: F30100617AAF
hub 1-1.1:1.0: USB hub found
hub 1-1.1:1.0: 2 ports detected usb 1-1.2: New USB device found, idVendor=0424, idProduct=9e00, bcdDevice= 2.00
usb 1-1.2: Product: USB 2.0 Fast Ethernet Adapter

usb1 是 USB Host Controller 直接控制的 roothub, roothub 是 1 起序的,所以这是第一个 hub;其中 “1-0:1.0”中的 “1-0”表示的是第 1 个 hub(即usb1)的第 0 号端口,但实际上 hub 的 port 编号是从 1 开始, 0 号 port 就是指 hub 自身。而 “:” 后面的 “1.0” 对应的语法格式是 “configID:interfaceID”,当检测到连在 roothub(usb1) 上的另一个新设备 “1-1”。 它连在 roothub 的第 2 个 port 上,编号从 1 开始。

idVendor(vid):    厂商ID
idProduct(pid): 产品ID
bcdDevice: 设备版本号 iManufacturer: 描述厂商的字符串索引
iProduct: 描述产品的字符串索引
iSerialNumber: 产品序列号字符串的索引

usb拓扑图

---------------------------------------+------------------------------  platform bus
|
/-----------------
| Host Controller | (usb1), which contains a roothub (1-0)
-----------------/ the roothub has only one downstream port
|
---------------------------------------+------------------------------ usb bus (level 1)
|
/---------
| 1-1 | hub (1-1), has 4 ports
---------/
|
-----------------+----------------+---------------------+-------+----- usb bus (level 2)
| | | |
/--------- | | |
| 1-1.1 | Fast Ethernet Adapter(1-1.2) 1-1.3 1.1.4
---------/
|
----------+-------------+------------------------------------------- usb bus (level 3)
| |
| |

那其实我们注意到hub的root必须是Host,之前在项目上就遇到过识别到client的情况下,我们的usb3803进入hub mode而导致usb口在电脑上无法识别于工作,正常应该是要bypass mode

hub的root需要usb Host Controller,常见的就是

(1)UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1),主要是因特尔自家芯片组

(2)OHCI: Open Host Controller Interface (开放主机控制接口,USB1.0/1.1),其他厂商的nvidia等使用

(3)EHCI: Enhanced Host Controller Interface (用于USB2.0高速设备的“增强主机控制接口”)

(4)XHCI: EXtensible Host Controller Interface,(用于USB3.0的接口标准), xHCI支持所有种类速度的USB设备(USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed)。xHCI的目的是为了替换前面3中(UHCI/OHCI/EHCI)

Android Qcom USB Driver学习(三)的更多相关文章

  1. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  2. Delphi 调试连接 任意Android手机/平板/盒子(要安装Google USB Driver,并且还有USB的相关许多文章)

    Delphi有时候无法连接调试一些手机,解决方案: 1.安装Google USB Driver 2.通过设备管理器查看手机或平板USB的VID,PID 3.修改你的电脑上的android_winusb ...

  3. CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android. Buffer Overflow Vulnerability reported by #plzdonthackme, Soctt.

    CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android.Buffer Overflow Vu ...

  4. Android自动化测试之Monkeyrunner学习笔记(一)

    Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...

  5. android的USB MTP && USB CDC/USBnet(ECM, NCM, ACM) && USB gardget

    MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议.早在智能手机普及前,数码相机和MP3播放器等都使用了MTP的前身PTP(Pictu ...

  6. Android 开源项目及其学习

    Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...

  7. Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. Android Wear(手表)开发 - 学习指南

    版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...

  9. Android(java)学习笔记71:生产者和消费者之等待唤醒机制

    1. 首先我们根据梳理我们之前Android(java)学习笔记70中关于生产者和消费者程序思路: 2. 下面我们就要重点介绍这个等待唤醒机制: (1)第一步:还是先通过代码体现出等待唤醒机制 pac ...

  10. android 与usb 设备通信(二)

    再次遇到android  mUsbManager.getDevicelist() 得不到usb 设备的问题.于是深入去探讨android 与usb 外围设备通信的问题.第一篇文章写的有点乱,本质就是需 ...

随机推荐

  1. Python 在PDF中添加、替换、或删除图片

    PDF文件中的图片可以丰富文档内容,提升用户的阅读体验.除了在PDF中添加图片外,有时也需要替换或删除其中的图片,以改进视觉效果或更新信息.本文将提供以下三个示例,介绍如何使用Python 操作PDF ...

  2. Python学习的个人笔记

    python基础知识 目录: Python基础语法: (1)打印出hello world (2)注释 (3)数据类型 (4)运算 (5)输入 (6)输出 (7)序列 (8)相等比较 (9)选择 (10 ...

  3. windows10使用scp命令

    windows10使用scp命令 windows自带scp命令 windows上传文件到linux//使用方法:scp 源文件路径 账户@地址:目的路径scp   C:\Users\zbh\Deskt ...

  4. 代码随想录Day1

    704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: ...

  5. 5、Git之版本号

    5.1.概述 每一次提交,Git 都会生成相关的版本号:每个版本号由 40 位 16 进制的数字组成. 这 40 位 16 进制的数字,是根据提交的内容,通过 SHA-1 算法计算出来的. 版本号具体 ...

  6. 【微信小程序】 自定义组件

    创建微信小程序组件 在小程序中创建组件: 1.项目根目录中创建[components]目录,存放自定义组件 2.进入components目录,给组件创建一个组件目录 3.右键组件目录,选择[创建Com ...

  7. 【DataBase】MySQL 26 存储过程

    一.概述 存储过程&函数,类似编程语言的方法 什么是方法? 完成特定功能的一组语句 方法的特点 1.可重用性 2.简化操作 二.存储过程[ Stored Procedures]: 一组预先编译 ...

  8. Http、Https简介和Session、token的请求流程

    Http Http (超文本输出协议) 是一种分布式.协作式和超媒体信息系统的应用层协议,它通常运行在TCP之上,因特网应用最广泛的便是Http协议,所有www都遵循这个标准.主要用于Web 浏览器与 ...

  9. 【转载】 Python格式化字符串f-string概览

    版权声明:本文为CSDN博主「sunxb10」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/sunxb10/a ...

  10. 给我5分钟,保证教会你在vue3中动态加载远程组件

    前言 在一些特殊的场景中(比如低代码.减少小程序包体积.类似于APP的热更新),我们需要从服务端动态加载.vue文件,然后将动态加载的远程vue组件渲染到我们的项目中.今天这篇文章我将带你学会,在vu ...