0
推荐在linux大家有时候需要调试usb接口的串口消息,但是没有类似于windows下的bus hound工具,感觉比较痛苦,其实linux内核提供了usbmon这个工具,可以收集串口信息。

1.准备:

挂接debugfs (这个可以在内核配置中使能),加载usbmon模块(如果usbmon编译成模块). 如果usbmon编译到内核中的话,第二步可以省略

# mount -t debugfs none_debugs /sys/kernel/debug
# modprobe usbmon
#

确定bus数据已经准备就绪

# ls /sys/kernel/debug/usb/usbmon
0s  0u  1s  1t  1u  2s  2t  2u  3s  3t  3u  4s  4t  4u
#

现在你就可以选择要么使用'0u'(抓bus上的所有包),并且直接跳到第三步,或者进行第二步找到你设备所在的bus,这样就过滤掉很多烦人的信息

2. 查找设备所在的bus
运行"cat /proc/bus/usb/devices", 就会发现设备T开头的行.T行有一个bus口,如下所示
 T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
 D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
 P:  Vendor=0557 ProdID=2004 Rev= 1.00
 S:  Manufacturer=ATEN
 S:  Product=UC100KM V2.00
 Bus=03 说明它在bus3口上

3. 开始查看信息
# cat /sys/kernel/debug/usb/usbmon/3u > /tmp/1.mon.out

命令用来监听某个bus口,要么你可以监听所有的bus口

# cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out
* 数据格式
现在支持两种数据格式: '1t'格式和'1u'格式. '1t' 在内核 2.6.21上不支持. '1u'数据格式增加了一些数据项,如:ISO框架信息,间隔时间等.它产生了稍微多余的行,但是确实是'1t'格式的有效补充.
数据内容的详细说明(从左到右)
- URB Tag. URB地址

- Timestamp, 间隔时间

- Event Type. 时间类型.
支持的类型是: S - submission, C - callback, E - submission error.

- "Address" (通常是一个"管道").它包括4项内容,用冒号分割: URB type ,direction, Bus number, Device address, Endpoint number.
Type和direction被封装成如下数据格式:
Ci Co   Control input and output
Zi Zo   Isochronous input and output
Ii Io   Interrupt input and output
Bi Bo   Bulk input and output
Bus number, Device address, 和Endpoint是十进制数字, 但是他们可能因为阅读便利而设置成为0.

- URB Status word. 这个要么是字母或者是一些由分号隔开的数字

- Setup packet, 如果出现的话,包括5个字串: 他们是bmRequestType,bRequest, wValue, wIndex, wLength, (USB Specification 2.0.协议中有详细介绍)

- 同步号

- Data Length. 数据长度

- Data tag. 即使数据长度不为0,usbmon也不一定总能捕捉到数据,数据包内容只有在此tag为'='才有效

- Data words 大头十六进制数. 
举例:
输入控制得到端口状态的示例
d5ea89a0 3575914555 S Ci:1:001:0 s a3 00 0000 0003 0004 4 <
d5ea89a0 3575914560 C Ci:1:001:0 0 4 = 01050000
 
通过bus5口发送一个31字节长度的块包(其中保存一个SCSI命令 0x5E )到存储设备
dd65f0e8 4128379752 S Bo:1:005:2 -115 31 = 55534243 5e000000 00000000 00000600 00000000 00000000 00000000 000000
dd65f0e8 4128379808 C Bo:1:005:2 0 31 >

详细信息请参阅:http://www.mjmwired.net/kernel/Documentation/usb/usbmon.txt

linux下类似Bus Hound的工具的更多相关文章

  1. Perf Event :Linux下的系统性能调优工具

    Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能 ...

  2. 在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1)

    在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1) RAID即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID是一些磁盘的集合, ...

  3. 推荐一个linux下的web压力测试工具神器webbench

    推荐一个linux下的web压力测试工具神器webbench2014-04-30 09:35:29   来源:   评论:0 点击:880 用多了apache的ab工具之后你就会发现ab存在很多问题, ...

  4. Linux下查询CPU 缓存的工具

    在Linux下能够使用例如以下工具查询CPU缓存: 方式1: $ lscpu L1d cache: 32K <span style="white-space:pre"> ...

  5. Linux下获取arm的交叉编译工具链

    转载请注明文章:Linux下获取arm的交叉编译工具链 出处:多客博图 这里介绍,Linux下获取arm的交叉编译工具链,比如arm-linux-gnueabihf-gcc.arm-linux-gne ...

  6. Linux下压缩工具gzip和归档工具tar及其实战shell应用

    Linux下压缩工具gzip和归档工具tar及其实战shell应用       第一章:gzip的使用技巧 gzip [option]... file... -d: 解压缩,相当于gunzip; -# ...

  7. Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 Tracepoint 是散落在内核源代码中的一些 hook,一旦使能,它们便可以在特定的代码被运行到时被触发,这一特性可以被各种 trace/debug 工具所使用。Perf 就是该特性的用户之一。

    Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/i ...

  8. Linux下四款常见远程工具比较

    摘要:Linux远程可不像Windows下那么方便,主要是连接的速度.显示的画质不能令人满意(延迟.撕裂).本文只是说一下我用过的四款远程工具.Anydesk官网:https://anydesk.co ...

  9. STC8PROG - Linux下的 STC8G STC8H 烧录工具

    STC8PROG - Linux下的 STC8G STC8H 烧录工具 动机 在Linux下用 VSCode + PlatformIO 做开发, 因为VSCode的界面字体代码提示, 以及自定义的类J ...

随机推荐

  1. 收集点小文,讲CGI,FASTCGI,PHP-CGI,PHP-FPM之间通透点的文章

    http://blog.csdn.net/meegomeego/article/details/36180343 http://www.opsers.org/linux-home/server/php ...

  2. c++ 14

    一.堆栈(stack) stack -> vector/deque/list push  -> push_back pop   -> pop_back top   -> bac ...

  3. Java异步调用Future对象

    Future类存在于JDK的concurrent包中,主要用途是接收Java的异步线程计算返回的结果. 个人理解的使用场景大概如下: 有两个任务A和B,A任务中仅仅需要使用B任务计算成果,有两种方法实 ...

  4. 减少GC开销的5个编码技巧

    在这篇文章中,我们来了解一下让代码变得高效的五种技巧,这些技巧可以使我们的垃圾收集器(GC)在分配内存以及释放内存上面,占用更少的CPU时间,减少GC的开销.当内存被回收的时候,GC处理很长时间经常会 ...

  5. Live555 分析(一):类介绍

    从程序的结构来看,live项目包括了四个基本库.程序入口类(在mediaServer中)和一些测试代码(在testProgs中). 四个基本静态库是UsageEnvironment.BasicUsag ...

  6. 【转】Linux系统调用列表

    一.进程控制: fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 中止进程 _exit 立即中止当前进程 getdtablesize 进程所能打开的最 ...

  7. Git源码管控规范

    Git分支示意圖 Master:主分支.形成稳定的版本时,才将代码合并到Master分支 Relase:网站发布的分支.通过验证的Bug和功能需求,才合并到Release分支,并将稳定的版本进行备份 ...

  8. [工作问题总结]MyEclipse 打开项目

    ------------------------------ASP.Net+Android+IO开发 .Net培训 期待与您交流!------------------------------ 1.项目 ...

  9. android-sdk-windows版本号下载

    Android SDK 4.0.3 开发环境配置及执行 近期又装了一次最新版本号的ADK环境 眼下最新版是Android SDK 4.0.3 本文的插图和文本尽管是Android2.2的 步骤都是一样 ...

  10. 前端JS模版库kino.razor - 原理流程分析 - 改进版轮子RazorJs

    1.前言 从后台获取数据,在前端JS里面拼接字符串,不累吗?敢不敢找一款前端使使... 现在这种模板库比较多了,我用过的jquery-template .JsRender .听说过的一堆,还有各种MV ...