linux下类似Bus Hound的工具

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

转自:http://hi.baidu.com/kahn_qiao/item/cb1c57e151f4eeaace2d4f9d
======================================================================================================================================================

LinuxUSB驱动程序调试

:这是LinuxUSB驱动程序调试–003:Ubuntu下的准备工作的详细页面,介绍了和linux,有关的知识、技巧、经验,和一些linux源码等。
Ubuntu下的准备工作:
(1)如何查看内核中的printk输出: dmesg
    再配合管道命令,   dmesg |head   ,    dmesg |tail
通过这个命令,我们可以看到内中的printk输出的内容,这是很有用的一个
工具。
(2)的USB抓包工具:usb_mon
其实,Ubuntu下已经内置了USB抓包工具—USB_MON 
【其实 make menuconfig 时候会让我们选择的】
使用方法如下:
# mount -t debugfs none /sys/kernel/debug
    # modprobe usbmon
查看当前的USB device:
         # cat  /sys/kernel/debug/usb/devices
        
   下面的输出:
  T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 12 Spd=480 MxCh= 0
  D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
  P:  Vendor=601a ProdID=4740 Rev= 1.00
  S:  Manufacturer=Ingenic
  S:  Product=JZ4740 USB Boot Device
  C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  2mA
  I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=50 Driver=skeleton
  E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
        
  如何看懂上面的输出?  Documentation/usb/usbmon.txt
  Bus=01 means it’s bus 1.
通过上面的 Vendor=601a ProdID 可以找到我们设备的Bus号。
上面Bus=01。
使用下面的名利,就开始监听 Bus01上的全部USB数据包。
     # cat  /sys/kernel/debug/usb/usbmon/1u
要想开始监听 全部 Bus 上的全部USB数据包:
     # cat  /sys/kernel/debug/usb/usbmon/0u
    
  一旦有数据包,就会打印出来:
    # cat /sys/kernel/debug/usb/usbmon/1u
      f07dbb80 3233986312 S Co:1:012:0 s 40 01 80c0 0000 0000 0
      f07dbb80 3234327703 C Co:1:012:0 0 0
      f07dbb80 3234327880 S Co:1:012:0 s 40 02 0000 0200 0000 0
      f07dbb80 3234329561 C Co:1:012:0 0 0
      f07dbb80 3234329625 S Bi:1:012:1 -115 32 <
      f07dbb80 3234331550 C Bi:1:012:1 -75 32 = 00000000 00000000  。。。
读懂上面的数据,还是要看usbmon.txt
URB tag  :标志
   TimeStamp:毫秒数
   Event Type:  S - submission,
C - callback,
E - submission error.

   URBType:BusNo:DeviceAddr:EndPointNum
          Ci Co   Control input and output
          Zi Zo   Isochronous input and output
          Ii Io   Interrupt input and output
          Bi Bo   Bulk input and output
   URB Status: 0为没有错误。-XXX是错误码。
转自:http://blog.csdn.net/peng654321/article/details/6949170

linux下类似Bus Hound的工具相关推荐

  1. linux有没有类似于串口的,linux下类似Bus Hound的工具

    linux下类似Bus Hound的工具 0 推荐在linux大家有时候需要调试usb接口的串口消息,但是没有类似于windows下的bus hound工具,感觉比较痛苦,其实linux内核提供了us ...

  2. 那些 Linux 下好用的 小工具 收集

    PS: 由于个人主要使用的平台为基于 Debian 的发行版[准确来说是基于 Ubuntu 的再发行版 Linux Mint],所以默认以 Debian 环境下介绍,不过由于大多数软件都是开源且在多个 ...

  3. Perf -- Linux下的系统性能调优工具,第 2 部分

    https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/ Perf -- Linux下的系统性能调优工具,第 2 部分 刘 明, 软件工程师, 上 ...

  4. Linux下Shell常用命令与工具

    文章目录 Shell常用命令与工具 1.ls 2.echo 3.printf 4.cat 5.tac 6 .rev 7.wc 8.cp 9.mkdir 10.mv 11.rename 12.dirna ...

  5. 20120520 Linux下mysql的自动备份工具

    文章摘自:http://hi.baidu.com/vb98/blog/item/2ed90cea835fa4cfd439c97f.html linux下的MySQL自动备份工具-第二版2011-10- ...

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

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

  7. linux下grep文件内容搜索工具及基本正则表达式详解

    linux下grep文件内容搜索工具及基本正则表达式详解 grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:grep [选 ...

  8. Linux下文件备份和同步的工具软件

    Linux下文件备份和同步的工具软件 1)通过本次实训,熟悉软件项目配置管理相关内容; 2)熟悉shell编程 makefile的应用. 3)掌握文件IO.标准IO库的使用,掌握Linux下多进程.多 ...

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

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

  10. linux测试读写的工具,Linux 下的硬盘读写速度测试工具

    Linux 下的硬盘读写速度测试工具 执行一下以下命令看看你服务器的磁盘性能如何. hdparm -Tt /dev/sda 以下是 2块 希捷 ES2 SATA 500G 做 Raid0 的速度 [r ...

最新文章

  1. 【微信小程序】:小程序,新场景
  2. dede 二次开发系统迁移到 IIS 时会出现的问题及解决方案
  3. QLocalServer和QLocalSocket单进程和进程通信
  4. 信息传递(NOIP2015提高组Day1T2)
  5. linux全符号链接是什么,Linux 下的符号链接到底是个什么鬼?
  6. 《人件》--- 读书笔记
  7. 没有业务思维,数据分析只能是一堆废纸
  8. python中bd是什么属性_python数据类型及其特有方法
  9. spark mlib行矩阵(RowMatrix)入门
  10. BZOJ3813 奇数国
  11. VC++中的Win32 Application和Win32 Console Application区别
  12. 小一寸和一寸照片有区别吗 一寸照片怎么变成小一寸
  13. ubuntu搜狗输入法显示简体中文,输入却是繁体中文解决方案
  14. 电脑时间不准怎么办?电脑时间不准怎么修复?
  15. 修改页面变成灰色代码修改方法
  16. Python分支语句练习题
  17. 点击 数字随着变化html,js数字随着其他数字变化而变化?
  18. mysql5.7驱动(tableau,excel)
  19. Wavelet 工具箱的使用
  20. xlwings模块(数据保存为xlsx文件)

热门文章

  1. 使用Visual Studio进行单元测试-Part4
  2. asp.net 母版页使用详解--转
  3. 工作5年的一份总结(1)-07/09-07/11
  4. mysql8.0.15源码linux_源码安装mysql8.0.20
  5. SpringBoot使用AutoConfiguration自定义Starter
  6. wordpress安装记录
  7. JavaScript链式调用,对象属性与遍历,this指向,callee和caller
  8. openstack相关资料集结
  9. js练习4(注册验证)
  10. [Misc]IE浏览器真正全屏幕操作技巧