Linux usb bus日志如何打开,从linux usb bus节点来认识usb linux usb认识
首先从linux dmesg来认识usb:
<6>[ 19.610046] msm_hsic_host msm_hsic_host: Qualcomm EHCI Host Controller using HSIC
<6>[ 19.620391] msm_hsic_host msm_hsic_host: new USB bus registered, assigned bus number 1
<6>[ 19.659942] msm_hsic_host msm_hsic_host: irq 261, io mem 0x12510000
<6>[ 19.679931] msm_hsic_host msm_hsic_host: USB 2.0 started, EHCI 1.00
<6>[ 19.685363] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[ 19.699890] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[ 19.706085] usb usb1: Product: Qualcomm EHCI Host Controller using HSIC
<6>[ 19.729888] usb usb1: Manufacturer: Linux 3.4.0-svn9114 ehci_hcd
<6>[ 19.734863] usb usb1: SerialNumber: msm_hsic_host
<6>[ 19.750549] hub 1-0:1.0: USB hub found
<6>[ 19.753295] hub 1-0:1.0: 1 port detected
<6>[ 20.809967] usb 1-1: new high-speed USB device number 2 using msm_hsic_host
<6>[ 20.882781] usb 1-1: New USB device found, idVendor=05c6, idProduct=9048
<6>[ 20.888427] usb 1-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
<6>[ 20.899902] usb 1-1: Product: Qualcomm CDMA Technologies MSM
<6>[ 20.904541] usb 1-1: Manufacturer: Qualcomm, Incorporated
<6>[ 20.947814] rmnet_usb 1-1:1.5: rmnet_usb0: register 'rmnet_usb' at usb-msm_hsic_host-1, RmNET net device, f2:a7:5f:22:49:61
<6>[ 20.960266] rmnet_usb 1-1:1.6: rmnet_usb1: register 'rmnet_usb' at usb-msm_hsic_host-1, RmNET net device, f2:a7:5f:22:49:61
<6>[ 21.062225] rmnet_usb 1-1:1.7: rmnet_usb2: register 'rmnet_usb' at usb-msm_hsic_host-1, RmNET net device, f2:a7:5f:22:49:61
<6>[ 21.181701] rmnet_usb 1-1:1.8: rmnet_usb3: register 'rmnet_usb' at usb-msm_hsic_host-1, RmNET net device, f2:a7:5f:22:49:61
首先说明该usb接口是干吗的?apq8064与mdm 9x15通信的接口;
上面前9行log说明发现了Qualcomm EHCI Host Controller这样的usb device,host controller也属于usb device,同时给出了PID VID等描叙信息。
注意从log上看出usb是从usb1开始并非其他的像mmc i2c bus是从0开始。任何usb host controller都是与hub同时存在,这里也不例外,1-0就是
hub,1-1:说明是在1 port上的,1-1:1.0也就是1 port上第一个接口。
比如电脑主机上前面的2个usb port其实都是一个hub下面的,我的电脑主机usb1上的第5个端口挂了个hub,同时手机插在该hub上的第4个port,那么节点
该是啥样?1-5.4:1. ?这些就是linux usb节点规范。
下面是我的主机给出的信息:
root@hd:~$ ls /sys/bus/usb/devices/1-5.4/
1-5.4:1.0/ avoid_reset_quirk bMaxPacketSize0 dev ltm_capable removable version
1-5.4:1.1/ bcdDevice bMaxPower devnum manufacturer remove
1-5.4:1.2/ bConfigurationValue bNumConfigurations devpath maxchild serial
1-5.4:1.3/ bDeviceClass bNumInterfaces driver/ port/ speed
1-5.4:1.4/ bDeviceProtocol busnum ep_00/ power/ subsystem/
1-5.4:1.5/ bDeviceSubClass configuration idProduct product uevent
authorized bmAttributes descriptors idVendor quirks urbnum
回归到上面的正题上来:下面是hub节点信息:
cat /sys/bus/usb/devices/1-0\:1.0/uevent <
DEVTYPE=usb_interface
DRIVER=hub
PRODUCT=1d6b/2/304
TYPE=9/0/1
INTERFACE=9/0/0
MODALIAS=usb:v1D6Bp0002d0304dc09dsc00dp01ic09isc00ip00in00
下面信息说明HUB有一个endpoint 同时是输入中断类型:
root@android:/ # cat /sys/bus/usb/devices/1-0\:1.0/
bAlternateSetting bNumEndpoints subsystem/
bInterfaceClass driver/ supports_autosuspend
bInterfaceNumber ep_81/ uevent
bInterfaceProtocol modalias
bInterfaceSubClass power/
root@android:/ # cat /sys/bus/usb/devices/1-0\:1.0/ep_81/direction
in
root@android:/ # cat /sys/bus/usb/devices/1-0\:1.0/ep_81/type
Interrupt
下面的第一个port上节点信息,信息都是从usb devices上获取的descriptors,解析后有个pid vid
Interface等,其中bNumInterfaces是9,从1-1:1.8/也说明是9个Interface,speed 480也就是usb2.0的
速率。
root@android:/ # cat /sys/bus/usb/devices/1-1/
1-1:1.0/ bConfigurationValue configuration power/
1-1:1.1/ bDeviceClass descriptors product
1-1:1.2/ bDeviceProtocol dev quirks
1-1:1.3/ bDeviceSubClass devnum removable
1-1:1.4/ bMaxPacketSize0 devpath remove
1-1:1.5/ bMaxPower driver/ speed
1-1:1.6/ bNumConfigurations ep_00/ subsystem/
1-1:1.7/ bNumInterfaces idProduct uevent
1-1:1.8/ bcdDevice idVendor urbnum //5850
authorized bmAttributes manufacturer usb_device/
avoid_reset_quirk busnum maxchild version
再看下面的1-1\:1.0对应host的usb driver name为diag_bridge,那么上层可以操作该文件,与usb devices
通信,注意本质上是host端1-1\:1.0下面的endpoint与usb device的对应的endpoint通信,通信的数据流都是诊断信息,
该diag_bridge设备写入的数据通过ep_01端点发送给usb_device,同时在端点ep_81读取数据,跑的都是diag_bridge管道数据流。
每个endpoint就如同一个高速串口一样,这样usb就是由许多高速串口构成,这就是usb最大的特点。USB通信最基本的形式是通过端点(USB端点分中断、批量、等时、控制四种,每种用途不同),除了endpoint 0(后面另说)
其他的端点只能是输入或者输出,这个在usb device出厂前就定义好了,包括descriptors,还有一些usb设备descriptors
会有额外的信息,host端usb可以通过额外的信息获取有价值的东西。DRIVER=diag_bridge这个是有Host端的驱动做好的,
driver匹配了对应的PID VID interface0,也有match PID VID bDeviceClass bDeviceProtocol bDeviceSubClass这些项的,
由厂家定。假如没有driver DRIVER这项就没有。
root@android:/ # cat /sys/bus/usb/devices/1-1/1-1\:1.0/uevent
DEVTYPE=usb_interface
DRIVER=diag_bridge
PRODUCT=5c6/9048/0
TYPE=0/0/0
INTERFACE=255/255/255
MODALIAS=usb:v05C6p9048d0000dc00dsc00dp00icFFiscFFipFFin002
再下看下面的endpoint 0,端点0是一个特殊的endpoint,当插入usb设备,host就是通过默认的端点0获取描叙符的,
端点0是usb设备缺省的配置,在host端没有配置好该usb device时使用端口0通信,当配置好后有其他的endpoint还
可以使用端点0,端点0是双向传输控制类型,这个可能许多人不知道。
root@android:/ # cat sys/bus/usb/devices/1-1/ep_00/ <
bEndpointAddress bmAttributes power/ wMaxPacketSize
bInterval direction type
bLength interval uevent
再看下面的1-1\:1.5,interface 5 rmnet_usb driver,该driver上有2个设备,一个字符设备hsicctl0供AP与MODEM
传输控制类信息,比如DATA CALL等等,还有一个net网卡也就是建在该driver上;
有个问题就来了该接口下面有3个端点,而这里起码有2类数据,控制类命令与net socket buf数据流。
之前看了好几次端点是怎么使用来分开传输的。后来终于明白了,该接口下3个端点都是供usbnet使用的,一个输入一个输出(传输类型为bulk)
一个中断。
那么data数据的端点呢?很明显是端点0,同时仔细研究代码确实是端口0,在8064上高通的qmi通道走的就是端点0。
root@android:/ # cat /sys/bus/usb/devices/1-1/1-1\:1.5/uevent
DEVTYPE=usb_interface
DRIVER=rmnet_usb
PRODUCT=5c6/9048/0
TYPE=0/0/0
INTERFACE=255/255/255
MODALIAS=usb:v05C6p9048d0000dc00dsc00dp00icFFiscFFipFFin05
再看下图是usb设备,配置,接口,端点的关联:
要想研究usb请读usb协议吧,同时研究linux kernel usb代码也是不错的选择。
Linux usb bus日志如何打开,从linux usb bus节点来认识usb linux usb认识相关推荐
- ftp文件服务器登录日志,linux ftp服务器日志
linux ftp服务器日志 内容精选 换一换 为加强对系统数据的容灾管理,云堡垒机支持配置日志备份,提高审计数据安全性和系统可扩展性.本小节主要介绍如何在系统配置FTP/SFTP服务器参数,将日志远 ...
- linux usb gadget 日志
1,USB 协议入门 几种USB控制器类型:OHCI,UHCI,EHCI,XHCI 遇到过一些关于USB的东西(如下),一直没搞明白什么USB1.0/1.1/2.0/3.0之类的,当然我知道它们的各自 ...
- linux的错误日志在哪里,在linux中怎么查看错误日志
cat或者 tail -f命令 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与 ...
- linux内核串口日志抓取-minicom工具使用方法
linux抓串口日志 抓串口日志方式 minicom保存串口日志log 抓取主板串口日志 minicom man手册 抓串口日志方式 1) 问题机上,找到串口设备,比如/dev/ttyAMA[0,1, ...
- Linux 下高级日志文件查看器Log File Navigator
Log File Navigator,简称lnav,是一款面向小规模的适用于 Linux 的高级日志文件查看器.它是一个终端应用程序,可以理解您的日志文件,让您轻松找到问题,几乎不需要什么设置. ln ...
- Linux中的日志系统介绍
一.常见的日志 日志是一个系统管理员,一个运维人员,甚至是开发人员不可或缺的东西,系统用久了偶尔也会出现一些错误,我们需要日志来给系统排错,在一些网络应用服务不能正常工作的时候,我们需要用日志来做问题 ...
- 《构建高可用Linux服务器 第3版》—— 1.4 Linux服务器的日志管理
本节书摘来自华章出版社<构建高可用Linux服务器 第3版>一 书中的第1章,第1.4节,作者:余洪春 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.4 ...
- linux日志按照时间切割,Linux下把tomcat日志按日期自动分割
Linux中tomcat日志分割需要用到cronolog 附上cronolog-1.6.2.tar.gz 1. 安装cronolog tar –zxvf cronolog-1.6.2.tar.gz . ...
- 在Linux上建立日志服务器的问题
前天安排了一个任务,要在一台服务器上搭建日志服务器,作用是记录本网段所有服务器的日志,我们这个网段包括WWW.DNS.Mail.计费.Video.电子政务等十几台服务器,系统包括Windows2000 ...
最新文章
- 5分钟掌握手动优化机器学习模型超参数
- VUE:class与style强制绑定
- c++同一屏幕输出多种颜色字体
- HDU 1517 A Multiplication Game
- How do I sort groups of data items?(WPF)
- 树莓派 RespberryPi:通过命令行关机 / 重启
- python跨目录调用_python 跨目录访问文件
- Python maximum recursion depth exceeded while calling a Python object (gevent的SSL无限递归错误)的问题解决
- tomcat 开启 https 使用apr
- 2020 金山云 面经
- 基于javaweb的宠物医院管理系统
- Vosviewer图谱相关指标详细解释1
- 初学java,有哪些值得推荐的 Java 练手项目?
- Lstm(循环神经网络)
- 新网漫时代下的国漫“哥伦布”征程
- 图像匹配论文总结(一)
- 阵列win不识别linux识别,解决Raid模式下重装系统无法识别固态硬盘的问题
- QuickCHM V2.6注册码
- windows server 2016 安装openssh
- debian linux系统安装教程,Debian 10(Buster)安装过程图文详解
热门文章
- jsoup 获取html中body内容_Java 进阶 利用Jsoup获取HTML页面的各分页中的标题信息...
- 汽车电子专业知识篇(四)-一文详解无人驾驶中的各种感知传感器
- 少儿编程150讲轻松学Scratch(十二)-用Scratch制作石头剪子布游戏
- argparse模块_Argparse:一个具体案例教会你python命令行参数解析
- gromacs 安装_带你入门带你飞 gromacs材料计算模拟系列
- vue如何过滤html标签,去除富文本中的html标签及vue、react、微信小顺序中的过滤器...
- matlab导入txt生成曲面,求助:怎样将txt的数据导入到Matlab中并根据参数画出波形...
- java后端工程师平时开发或多或少会用到eclipse,那么它有哪些快捷键呢
- CSS3里的display
- react-性能优化