由FTDI USB串行转换器

时间:2016-02-19 12:28:12

标签: linux serial-port usb monitoring

我想监视(嗅探)由FTDI USB串行转换器创建的/ dev / ttyUSB0的流量。我已经在Windows中编写了自己的应用程序,现在我尝试将其移植到linux并使用/ dev / tty / USB0。我想调试实际发生的通信。

软件strace对我来说不是一个选项,因为它只显示对ioctl的系统调用。

使用Windows软件"免费串口监视器"通过嗅探COM1来做到这一点。

dmesg的输出:

[16975.000221] usb 7-1: new full-speed USB device number 5 using  uhci_hcd
[16975.193543] usb 7-1: New USB device found, idVendor=0403, idProduct=6001
[16975.193548] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16975.193552] usb 7-1: Product: FT232R USB UART
[16975.193555] usb 7-1: Manufacturer: FTDI
[16975.193558] usb 7-1: SerialNumber: A400BJII
[16975.200550] ftdi_sio 7-1:1.0: FTDI USB Serial Device converter detected
[16975.200599] usb 7-1: Detected FT232RL
[16975.202604] usb 7-1: FTDI USB Serial Device converter now attached to ttyUSB0

然而,我试过了moserial做这个和命令" echo foobar>的/ dev / ttyUSB0"验证,如果它的工作原理。我的软件也没有为moserial创建输出。

更新

了解如何直接监控usb,现在我需要将USB数据包转换为RS-232(FTDI基本上做什么)。

  1. 设置usbmon

    modprobe usbmon

    1.1对于2.6.23之前的Linux内核,您还需要运行此命令

    modprobe -t debugfs none / sys / kernel / debug

  2. usbmon0将监控从所有usbmon0到usbmonX的所有流量 2.1。找到正确的USB设备

    cat / sys / kernel / debug / usb / devices | grep FTDI -A 7 -B 4

    T:  Bus=07 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 12 Spd=12   MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
    P:  Vendor=0403 ProdID=6001 Rev= 6.00
    S:  Manufacturer=FTDI
    S:  Product=FT232R USB UART
    S:  SerialNumber=A400BJII
    C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 90mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
    E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    

    2.2。注意端口的总线编号(Bus = 07),因此监控的usbmon将是usbmon7

    2.3。使用wireshark捕获usbmon7接口或使用以下命令将输出输出到控制台(stdout)...用bus-id替换数字

    cat / sys / kernel / debug / usb / usbmon / 7u

    什么意思'你'?  https://www.kernel.org/doc/Documentation/usb/usbmon.txt

    目前支持两种格式:原始格式,或者' 1t'格式,以及' 1u'格式。 ' 1t'在内核2.6.21中不推荐使用format。 ' 1u' format添加了一些字段,例如ISO帧描述符,间隔等。它产生稍长的行,但是否则是#1; 1t'的完美超集。格式。

  3. 如何将USB捕获转换为RS-232捕获? 我不知道...... TODO

1 个答案:

答案 0 :(得分:2)

根据你的提示我设法解决了我的问题,所以最后一点是我的暗示:

  1. 使用Wireshark,打开usbmon0并使用此过滤器

    usb.capdata or at
    
  2. 发出两次命令echo asd > /dev/ttyUSB0会在Wireshark中生成以下结果

    Wireshark result

    您可以使用tshark:

    从捕获文件中提取整个剩余捕获数据

    tshark -r capture.pcapng -T fields -e usb.capdata

相关问题