监视(嗅探)/ dev / ttyUSB0由FTDI USB串行转换器创build

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

软件strace不是我的select,因为它只显示ioctl的系统调用。

使用Windows软件“Free Serial Port Monitor”通过嗅探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”来validation,如果它的工作。 另外我的软件不会创build输出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的stream量。 find正确的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。 注意端口的总线号(总线= 07),所以要监控的usbmon将是usbmon7

    2.3。 使用wireshark捕获usbmon7接口或使用以下命令获得输出到控制台(标准输出)…用总线idreplace数字

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

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

    目前支持两种格式:原始格式或“1t”格式和“1u”格式。 内核2.6.21中不推荐使用'1t'格式。 '1u'格式增加了几个字段,如ISO帧描述符,间隔等等。它产生稍长的行,但是否则是'1t'格式的理想超集。

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

随着你的提示,我设法解决了我的问题,所以这是我最后一点的提示:

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

     usb.capdata or at 

发出两次命令echo asd > /dev/ttyUSB0在Wireshark中产生下面的结果

Wireshark的结果

您可以使用tshark从捕获文件中提取整个剩余捕获数据:

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