对应具体的设备上,只要是支持USB协议的设备,都可以连接计算机,如USB键盘、USB鼠标、USB摄像头、USB音箱等。 2.USB协议版本 从USB协议诞生至今,出现了多个USB协议版本,如USB1.0、USB1.1、USB2.0、USB3.0、USB3.1、USB3.2。 改名为USB3.2 Gen1,USB3.1改名为USB3.2 Gen2,而将能够使用两个USB Type-C Rx/Tx针脚的USB3.2改名为USB3.2 Gen2×2。 USB集线器(Hub)可以将一个USB接口扩展成多个USB接口,扩展出的USB接口又可以通过USB集线器(Hub)扩展,每个USB接口都可以接USB设备。 每个USB设备都有端点0的控制端点,当USB设备插入到USB主机拓扑网络中时,USB主机就通过端点0与USB设备通信,对USB设备进行配置,便于后续的数据传输。USB协议保证控制传输有足够的带宽。
USB 设备状态切换图 2. 对于一个 USB 设备,它可以多种配置(Configuration)。比如 4G 上网卡就有 2 种配置:U 盘、上网卡。第 1 次把 4G 上网卡插入电脑时,它是一个 U 盘,可以按照里面的程序。 大多数的USB设备只有一种配置。 一个配置下,可以有多个接口(Interface),接口等同于功能(Function)。比如USB 耳机有两个接口(功能):声音收发、按键控制。 一个 USB 设备, 只有一个设备描述符:用来表示设备的 ID、它有多少个配置、它的端点 0 一次最大能传输多少字节数据 可能有多个配置描述符:用来表示它有多少个接口、供电方式、最大电流 一个配置描述符下面 3.1 设备描述符 3.2 配置描述符 3.3 接口描述符 3.4 端点描述符 3.5 示例 在 Ubuntu 中可以执行lsusb -v查看 USB 设备的描述符信息: $ sudo lsusb
一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对 USB设备进行访问。 五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。 1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。 2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。
1、现象 HUB芯片电源噪声所引起;USB HUB芯片电压偏置电阻不合适所引起。 2、参考电路 3、原因分析 在眼图测试时发现有一个USB口的眼图有抖动碰到眼图模板,当时经过千辛万苦,屡试不成,都未找到具体原因。 4、解决方法 通过分析有二个因素影响USB host通过不了眼图模板,一个是电源1.8V PLL的电源噪声所引起,另一个是由于偏置电阻的阻值会影响眼图眼睛的睁开的大小。
检查当前 USB 设备状态首先,我们需要检查当前系统的 USB 设备状态。 命令:lsusb查看 USB 设备详细信息:lsusb -v查看内核日志中的 USB 相关信息:dmesg | grep -i usb2. 常见的 USB 设备问题及解决方案2.1 USB 设备未被识别问题:USB 设备插入后未被系统识别。解决方案:检查 USB 端口和设备连接,确保驱动已安装。 示例:检查 USB 端口和设备连接:尝试将设备插入其他 USB 端口。重新插拔设备,确保连接牢固。 USB 设备驱动未加载问题:USB 设备驱动未加载,导致设备无法正常工作。
在使用DirectShow控制USB摄像头的技术方面,需要做几件准备工作: 1、安装DirectShow SDK ,这个比较繁琐,具体可以网上搜索。
USB传输 传输分为四种类型:批量传输、等时(同步)传输、中断传输、控制传输。 USB主机驱动将通过控制传输与USB设备的控制端点通信,完成USB设备的枚举和配置 。 USB事物 USB包 包的组成: 包的内容: 1、PID: 这里只用(PID0~4),PID4~7是PID0~4的取反,用来校验PID PID1~0:01 令牌包、11 数据包、10 握手包、 设备枚举及描述符介绍 当一个USB设备插入主机后,会有以下活动: 在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。 在usb系统中,所有的通信都是由主机发出相应的令牌所引起的。
一、USB设备状态 在USB 2.0协议中第 9.1 USB Device States 章节规定了USB设备的6种状态,包括: Attached/Powered/Default/Address/Configured /usb/gadget/udc/udc-core.c void usb_gadget_set_state(struct usb_gadget *gadget, enum usb_device_state 其中struct usb_gadget是用来标记一个USB设备的信息。此时USB设备的状态就可以确定了。 在USB的枚举阶段,会根据USB所处的状态调用usb_gadget_set_state()去设置USB设备的状态。 比如说在USB设备的枚举阶段,在composite_setup()函数中USB设备接收到了USB Host发过来的USB_REQ_SET_CONFIGURATION命令后调用set_config()设置相应的配置
USB 已经发布了五篇文章,如下: 一文带你了解 USB USB 能连接多少设备? USB 学习路线 USB 学习路线【详细版】 一文带你了解 Typec 接口切换开关 本文主要讲解 USB 电气信号,懂硬件,才能更好的写出软件,否则是空中楼阁。 USB 2.0 协议支持 3 种速率: 低速(Low Speed,1.5Mbps) 全速(Full Speed, 12Mbps) 高速(High Speed, 480Mbps) USB Hub、USB USB 设备状态切换图 硬件线路 下图是兼容高速模式的 USB 收发器电路图: USB 连接涉及 Hub Port 和 USB 设备,硬件连接如下【注意上下拉电阻位置】: 2、电子信号 USB 有 那么,USB Hub 端口或 USB 控制器端口如何发出复位信号?发出 SE0 信号,并维持至少 10ms。
/bcdDevice # USB 1.1: 0x0110 # USB 2.0: 0x0200, USB 2.1: 0x0210, USB 2.5: 0x0250 # USB 3.0: 0x0300 主要的工作流程为: 分配一个config_usb_cfg1结构体,该结构体包含了usb_configuration结构体,保存了该USB设备的配置信息。 设置USB设备的配置描述符的某些选项。 执行流程如下: 判断输入的USB控制器名称,若输出为空或者是none,则解除usb_gadget_driver和底层USB控制器的绑定。 调用UDC驱动接口usb_udc_connect_control连接USB主机控制器,这样USB主机就能识别并枚举USB设备。 USB gadget configfs提供了一个便捷的配置方法,用户可以灵活的组织USB function驱动,以组成不同功能的USB设备复合设备,当配置完成后,USB gadget configfs并不参与
libusb的代码,作者简单翻了一下,跑了一下测试代码,看了一下trace,大概意思就是分析/sys/bus/usb/devices目录下的文件/文件夹,进而可以打开usb设备,或者获取usb设备的attr ;在用户态实现usb协议,则可以直接操作硬件。 usb的设备虚拟化,则和其他usb设备一样,guest中对usb设备进行操作,则qemu把对应的操作通过libusb透传给host的usb设备。 可见,usb的passthrough,并不是直接让guest直接访问host的usb设备。 4,lsusb 相关命令lsusb是一个不错的命令。 ? 后记: 作者对usb协议并不熟悉,关于libusb的解释也未必完全准确。 请教过一个kernel高手的朋友,见我不会usb,还鄙视了我一下~囧
USB是 UniversalSerial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,例如键盘、鼠标、打印机、磁盘或网络适配器等等。 我们这里主要演示USB的鼠标流量和键盘流量。Linux下的分析已经比较多了,下面的环境均在Windows下进行。 一、鼠标流量 1.1 特点分析 USB鼠标流量的规则如下所示: ? 1.2 使用Wireshark捕获和分析 要想使用Wireshark进行捕获,需要在安装时勾选上usbpcap工具选项,这样你的Wireshark中会有一个usb接口的选项,点击就可以进行抓包了。 Wireshark中捕获的USB流量集中在Leftover Capture Data模块,我们可以使用tshark工具来进行提取。 在USB协议的 文档中搜索 keyboard。就可以找到击键信息和数据包中16进制数据的对照表: ? 2.2 使用Wireshark捕获和分析 捕获的步骤与上面相似。
塔顶为USB主控制器和根集线器(Root Hub),下面接USB集线器(Hub),集线器将一个USB口扩展为多个USB口,USB2.0规定集线器的层数最多为6层,理论上一个USB主控制器最多可接127个设备 Linux USB驱动总体结构图 从Host侧看,在Linux驱动中,处于USB驱动最底层的是USB主机控制器硬件,在其上运行的是USB主机控制器驱动,在主机控制器上的为USB核心层,再上层为USB设备驱动层 主机控制器驱动负责识别和控制插入其中的USB设备,USB设备驱动控制USB设备如何与主机通信,USB Core则负责USB驱动管理和协议处理的主要工作。 2.3、USB描述符 对应上述USB设备的构成,USB采用描述符来描述USB设备的属性,在USB协议的第九章(chaper 9)中,有对USB描述符的详细说明,在Linux驱动的以下文件中,定义了USB USB枚举的示意图如下: ? 3.2、USB标准请求的结构 上述提及的USB标准请求的结构如下: ? 3.2、USB标准请求的结构 上述提及的USB标准请求的结构如下: ?
USB RUBBER DUCKY和Teensy都可用于实施HID模拟攻击,其中USB RUBBER DUCKY入手简单,傻瓜式操作,但价格不菲啊;而Teensy USB性价比比较高,也可用来制作各种酷炫的 二、USB RUBBER DUCKY(USB 橡皮鸭) 1.介绍 ? USB RUBBER DUCKY(USB 橡皮鸭)是最早的按键注入工具。 在USB橡皮鸭插入到目标系统中 ⑤当看到命令提示窗口时,移除USB橡皮鸭; 三、Teensy USB ? 不需要特殊的编程器,只需要一个标准的Mini-B USB线缆、一台带有USB口的PC机或Macintosh机。 USB设备; ②USB RUBBER DUCKY和Teensy不能够自动复制传播,仅实现了从USB设备->计算机的单向感染途径,缺少计算机->USB设备的感染途径,仅适用于定点攻击(Targeted attack
type-c接口比较方便,可插拔次数也比较多,很多MCU目前都只具有USB2.0接口,但是只需要一点改动就可以转成type-c接口。以STM32举例说明。 目前常用的usb3.0的type-c是向下兼用USB2.0的,新发布的usb4.0也是向下兼容的。因此下述的方法也是可以的。 目前的type-c接口如下图所示: 在USB2.0端口,USB根据数据传输的方向定义了HOST/Device/OTG三种角色,其中OTG即可作为HOST,也可作为Device,在Type-C中,也有类似的定义 设备刚连接时作为哪一种角色,由端口的Power Role决定;后续也可以通过switch过程更改(如果支持USB PD协议的话)。 stm32 USB2.0 Device转成TYPE-C如下图所示: stm32 USB2.0 Host转成TYPE-C如下图所示: stm32 USB2.0 Otg转成TYPE-C如下图所示: 具体在其文档
Android手机USB调试在哪?安卓手机如何打开USB调试模式?如果我们要将安卓手机连接到电脑上,从而传输文件、下载应用或ROOT等,都需要打开手机的USB调试模式。 安卓系统的版本有很多,它们的打开方法也各不相同,下面给大家介绍各版本安卓手机打开USB调试模式的方法。 步骤方法: 一、2.1—2.3.7 系统打开方法 1、点击手机-Menu键(菜单键),在弹出的菜单中选择设置(Setting),或在应用程序中找到设置程序点击进入; 2、进入设置界面的应用程序即可打开USB 调试模式; 6、打开USB调试模式后,下拉手机通知栏,将手机上连接电脑的USB模式设置为“仅充电”模式或“媒体设备(MTP)”或“同步”模式后,即可正常连接电脑的刷机软件进行相关操作。 上述便是安卓手机打开USB调试模式的方法,需要将手机连接电脑下载应用或干嘛的,可以按照小编描述的方法来打开USB调试模式。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
USB接口标准 USB是电脑的常见接口,有4根线,两根电源线和两个信号线,电源线正负极供电,接烦可能导致USB设备或电脑的南桥芯片烧坏。 type A 即我们常见的标准USB大口,主流的可以分为USB2.0速度(几十M/S)和USB3.0速度(上百M/S),事实上目前有少量Type-A为USB3.1 10Gbps速度,常见于新的台式机主板上 type B 常见于打印机以及带触摸和USB接口的显示器,日常使用频率低。但是其分支之一Mirci USB B却是用的比较多的。 部分USB接口实拍图 从左往右依次为:miniUSB公口(A型插头)、miniUSB公口(B型插头)、USB公口(B型)、USB母口(A型插座)、USB公口(A型插头) USB的传输速度 USB2.0 标准的速度,理论带宽数为480Mbps,换算成MB/S速度单位的过程如下 USB3.0(后被强行划归USB3.1 Gen1系列),其带宽提升到了5Gbps USB3.1(Gen2)带宽,则达到了10Gbps
HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB协议的相关内容。 USB设备描述符-概述 当插入USB设备后,主机会向设备请求各种描述符来识别设备。 Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。 USB有那些标准描述符? 控制管道主要用于以下3个方面: 接收/响应USB主机的控制请示及相关的类数据 在USB主机查询时传输数据(如响应Get_Report请求等) 接收USB主机的数据 中断管道主要用于以下两个方面: USB 主机接收USB设备的异步传输数据 USB主机发送有实时性要求的数据给USB设备 从USB主机到USB设备的中断输出数据传输是可选的,当不支持中断输出数据传输时,USB主机通过控制管道将数据传输给USB设备
1 前言 我们知道USB2.0向下兼容USB1.x,即高速2.0的hub能支持所有的速度类型的设备,而USB1.x的hub不能支持高速设备(High Speed Device)。 图1 全速USB设备的连接 ? 图2 低速USB设备的连接 3 高速USB的识别 USB全速/低速识别相当简单,但USB2.0,USB1.x就一对数据线,不能像全速/低速那样仅依靠数据线上拉电阻位置就能识别USB第三种速度:高速。 至此,高速设备与USB2.0 hub握手完毕,进行后续的480Mbps高速信号通信。 最后附上几幅实际USB高速识别的示波器抓图,图中蓝色信号是D+,黄色信号是D-。 图6 示波器截取的高速USB协商过程3 最后附上一张来自Don Anderson的USB System Architecture里的USB HS接口图: ?
目前USB硬件接口分三种,普通PC上使用的叫Type;原来诺基亚功能机时代的接口为Mini USB;目前Android手机使用的Micro USB。 预了解更多USB知识,请参考USB官网以及下面这篇文章: http://www.crifan.com/files/doc/docbook/usb_basic/release/html/usb_basic.html 完整的USB2.0 OTG 控制器硬件信号如下: USB_ID:输入信号,由 USB OTG 协议定义,用于识别 USB 口所接设备的默认角色(host or device)。 USB接口层为OTG主机和OTG设备提供物理连接,USB系统软件使用主机控制器来管理主机与 USB设备的数据传输。 一问一答: 什么是USB OTG? USB OTG是USB 2.0的补充规范 2. USB OTG针对USB 2.0的最重要扩展是什么?