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. RHCA rh442 004 加载模块 ulimit cgroup

    模块调优 lsmod 可以看到内核加载的模块 [root@servera ~]# lsmod | grep usb [root@servera ~]# modprobe usb_storage [ro ...

  2. 【爬虫】Java爬取KFC全国门店信息

    官网地址: http://www.kfc.com.cn/kfccda/storelist/index.aspx 基础库 <dependencies> <dependency> ...

  3. 【Java】Input,Output,Stream I/O流 01 概述 & 4个基础流

    Input,Output,Stream IO流 I/O Input/Output缩写.I/O技术用于处理设备之间的数据传输,读写文件,网络通讯 Java程序对于数据的操作以Stream流的形式进行 i ...

  4. 微软的GitHub Copilot

    随着OpenAI的ChatGPT4 Turbo的发布,基于ChatGPT的Copilot也推出了最新版. ======================================= 帮助文档: h ...

  5. Pytorch使用ReduceLROnPlateau来更新学习率

    如需了解完整代码请跳转到: https://www.emperinter.info/2020/08/05/change-leaning-rate-by-reducelronplateau-in-pyt ...

  6. 日均调度 10W+ 任务实例,DolphinScheduler 在蔚来汽车一站式数据治理开发平台的应用改造

    大家好我是张金明,在蔚来汽车担任大数据平台研发工程师.这次和大家分享的是 Apache DolphinScheduler 在蔚来汽车一站式数据治理开发平台的应用和改造,接下来我将从背景.应用现状和技术 ...

  7. 新兴互联网银行搭档Apache SeaTunnel构建数据流通管道!

    当新兴互联网银行乘着数字化改革的风潮搭档数据集成平台Apache SeaTunnel,成千万上亿的数据就有了快速流通的管道.6月26日14:00,Apache SeaTunnel社区将带上企业最佳实践 ...

  8. MySQL 5.7 DDL 与 GH-OST 对比分析

    作者:来自 vivo 互联网存储研发团队- Xia Qianyong 本文首先介绍MySQL 5.7 DDL以及GH-OST的原理,然后从效率.空间占用.锁阻塞.binlog日志产生量.主备延时等方面 ...

  9. 7. 从0学ARM-GNU伪指令、代码编译,lds使用

    <嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总> <到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 关于A ...

  10. Linux 主流桌面环境

    GNOME KDE Xfce Ubuntu 使用 GNOME 作为桌面环境. 基于 KDE Plasma 开发的 Ubuntu 发行版:Kubuntu 基于 Xfce 开发的 Ubuntu 发行版:X ...