页次: 1
USB3.0协议分析仪的抓包器硬件,总算有点影子毛了。
章鱼哥搞出了PX Logic usb3.0超高速逻辑分析仪,淘宝已开卖。介绍帖子在这https://zhuanlan.zhihu.com/p/601285602。
硬件基于国产USB3.0芯片沁恒ch569w与国产紫光FPGA PGL22G ;软件是开源PXview项目。
然后,UPV的作者说,要和章鱼哥计划USB 3.0分析仪,这是一个binggo我心事的想法。
我一直想要个价格能接受的USB3.0协议分析仪(流行的商用USB3分析仪,动辄几万的价格,实在玩不起),现在难题回到上位机软件。
请路过的佬们扫一眼,章鱼的这个硬件配置是不是可以做USB3.0协议分析仪的基础平台;解码软件设计,能不能复制usb sniffer的
成功思路,用wireshark做上位机软件,降低解码开发难度。
去年底因为个人原因,没能再继续关注,现在有空回来看看。
短短半年多时间,开源USB2.0协议分析仪ataradov/usb-sniffer在中国就百花齐放商品化,淘宝、闲鱼换个名大量在售,看销量,
用的人似乎还挺多。我作为本帖首个推荐介绍者,也很有成就感,哈~
在售产品看配置,应该是-4级的居多,我不知道有多少是本帖层主们在搞。我觉得,可优化的地方有2条:
一、硬件上。使用国产FPGA、其他配件,降低成本。可以的话,同时提高配置至-5、-6级...加量不加价也是挺好的。
二、软件上。优化Wireshark 解码,这是影响用户体验的关键。比如常用的USB存储设备类(Mass Storage),增加右键菜单选项,
强制Decode as Mass storage。这是为了防止Wireshark默认没能正常解码时,自己进行强制解码。
=============================================================
当然,野心再大一点,未来的目标是USB3协议分析仪。 解码器软件不好做,能否先探讨DIY硬件抓包器可行性? 抓USB3包,
我不知道得要多大的资源,PCB DIY预估成本得是多少,这就有赖诸位懂行的大佬匡算了。
情况通报:
usb-sniffer抓USB启动期间、UEFI/BIOS发的USB包。当被测U盘是USB3盘、被测机器是
USB3口机器时(由于连接的抓包器是USB2口,被测USB3优盘、被测机器USB3口将降速至
high speed工作)。
但是,抓包器wireshark将有很大几率只显示Detected full speed信息,没有Detected high
speed信息。(被测U盘、PC实际已工作在high speed状态,只是抓包器wireshark未显示
Detected high speed信息)
经与原作者交流,这不是BUG。是因为被测机器SE0持续时间过短(一般在30uS以下),不符合
USB规范造成。作者是按默认SE0持续时间在1mS左右来的,SE0持续时间过短将被忽略,不会
进入Detected high speed流程。
如果您想看到Detected high speed信息,请自行修改源代码调试。
@bigniudiy
强烈期待您的成功。
如果FPGA厂家资料齐全,命令和接口都说的详细,那会大大帮助修改C代码。
还是建议选择-5、-6级别的FPGA。-4的我用了,虽没打断抓包分析,但有
Hardware buffer overflow出错提示,有点影响心情。
1847同学在124#提了一嘴,已经做出了换FPGA的板子,但不知他换的是啥
国产FPGA,也不知现在进度、遇到的困难。
我来当这个小白鼠,前段时间就有想法了,不过由于没做过,希望不大
https://whycan.com/files/members/9092/微信截图_20231101111200.jpg
这个板子,除了68013没换,其他的都换了。今天发出去打板
我联系了原作者,把这里的情况反馈给他了。 关于-4、-5,他大致说了两个方面:
一、正品-4、-5 FPGA在US的差价仅2$,(在mouser换算成RMB也类似),所以...
二、关于-4成功,他说:
I would expect speed grade 4 to work at least for most of the devices at room temperature.
The synthesis fails dues to timing violations, so there may be issues on some devices, but
it does not fail by a lot, so it would probably work in most cases.
@bigniudiy
FPGA-4 完全可用的话,完全不需要找国产替代了,价格差不多
@zzm24
FPGA-5换-4速度,以为会翻车,哪知道就成功了
请问,这个板子是用高云FPGA (GW1N-UV2LQ100X or GW1N-UV2LQ144X) 替换设计么?
它可以像原始设计那样,直接使用usb-sniffer-win.exe把68013、fpga的固件烧录全做了,
不用额外安装软件和下载器吗?
换了个fpga画了一版,还缺点器件,回头补上了就可以测试了。
https://whycan.com/files/members/2468/微信图片_20231024084049.jpg
@lcfmax
高速测试是通过的,有40MB以上的,但是这个测速应该不涉及USB3343。我怀疑瓶颈在USB3343的并行接口时序上。
我看readme中说:“MCU和FPGA连接的功能和性能可以使用usb_sniffer命令进行测试,应该得到40-50MB/s结果”
这样看来,USB3343确实没涉及到。
所以我正考虑用回作者的gerber文件,打样一块板子,还是用-4去验证一下。我板子电路跟原来是一样的,只是部分元件封装
和布局改变,而且还是4层板,一般不会出问题。
是的,理论上是这样。如果成功,很有意义:JLC单面焊接加工费要比双面焊接低不少(一半?),我也很期待单面焊接板子能成功。
另外,我看其他网站介绍,max9032是有特色的设计,检测USB上升沿、下降沿。单面焊接板不用这个max9032,不知有没有
大的影响。
啊? 这...... 层主再完整统计一下,看最后成本是?
==============================================
下午捣鼓了半天,JLC下单助手试算出了明细,有点奇怪。费用构成跟同学们不太
一样。
1、JLC库内有这个: LCMXO2-2000HC-5TG100I ,100块左右,用这个替换后,
贴2个的元件费在225块/个。
2、可加工费就比较高了,怎么看,都要大于100块/个的样子。
==============================================
坑了,果然翻车了。
我统计价格时,没算LCMXO2-2000HC-5TG100,
因为LCMXO2-2000HC-5TG100是在 mouser.cn 上面额外买的。。。。。。
主要是LCMXO2-2000HC-5TG100C比较贵,再加上其它的物料。
光物料成本就200多了,算上加工费等接近300左右。
usb-sniffer板子的实际性能、结果已经明了了,可用度非常高。楼上专业搞电子的同学去搞没难度,
一定会成的。对比LZ基础方案的固件、上位机解码完成度,usb-sniffer进度优势太明显了。
至于我这个门外汉,gerber、BOM、坐标文件都捣鼓得差不多了,但到了JLC SMT这一步又卡壳了。
一个是预览图元件位置要旋转对齐(我搞不清第1脚位置不会弄);二是有的原件JLC库内没有,得加钱。
3颗max9032还好,JLC库内有;就是LCMXO2-2000HC-5XXX这个FPGA、还有其他零碎不一定有,
从扩展库选一个就得+20块钱(坑~)。然后,我看到有人说用-4xxx的FPGA替换也能成功(当然原作者
ataradov说极不推荐4,速度太慢)
疑问的不是速率高低,而是觉得这样连物理上都跑不通;不知是怎么做分析仪的,哪位能说明一下
可以做。
我不知道具体原理,usb-sniffer的作者还有个LS/FS作品:usb-sniffer-lite,就是用RP2040做的
Usb Sniffer Lite for RP2040
This is a simple USB sniffer based on a Raspberry Pi RP2040. It supports Low Speed and Full Speed modes.
https://github.com/ataradov/usb-sniffer-lite
感谢楼上aozima,转让的usb-sniffer成品已收到。经试用,体验还是不错的。
这个开源项目完成度非常高,已经达到可用程度了。谈下粗浅感受:
我只试了win上位机环境,Linux没试。对Win的要求:只支持64位。因为:
1.原配usb-sniffer-win.exe是64位;
2.要求wireshark V4.X以上,而wireshark 4.X是针对X64的,所以win
必须用X64版。但我试了win7 X64环境执行不正常,win10 x64环境可以。
用同一U盘,测试了几台机器USB启动,抓UEFI/BIOS包,wireshark
均正常解码。但其中有1台神舟优雅A350-T45 D2老笔记本,AMI BIOS,
可能是SET ADDRESS顺序有误,导致包是抓到了,但wireshark未能把
U盘作为USB Mass Storage设备正常解码(而wireshark中似乎也没有
补救措施,菜单Decode as...没有USBms选项?)
最近无意中翻到一个开源USB2协议分析仪
https://github.com/ataradov/usb-sniffer
硬件配置:
CY7C68013A MCU + Lattice LCMXO2 FPGA + Microchip USB3343 PHY
===========================================
我对硬件不熟,但这个开源分析仪我最欣赏的地方就是:
上位机软件直接使用Wireshark,这简直太好了。
分析仪硬件再牛,上位机软件协议解析(尤其是Mass storage解析)
不行,最终使用效果=0。而这个开源分析仪既没花大力气,还解决
了关键问题!设计思路很好。
最关心上位机解析软件。我是门外汉发言,仅供参考,说错了请多包涵。
一、USB packet viewer的上位机软件是实时捕获解析。其解析器开源,LUA script,
不知有没有参考价值。
二、数据保存、离线分析可行。能不能考虑Save as输出多种格式,便于交换。
wireshark用得不多,似乎是pcapng格式?前面有同学说ellisys的visualusb,
我们倒不一定适配它这个闭源软件。但其数据保存格式策略,是不是可以借鉴
一下?
举例来说,其export格式有pkg、txt、xml等常见几种。pkt 实质就是自定义的TXT
文件,也是visualusb可以直接import的格式,而txt、xml不能import(蛋疼)。
这样一个枚举:
pkt内容是这个样子:
Reset duration<3.742 192 317> time<-3.432 116 117>
PowerChange state<ON> time<0.000 000 000>
Suspended duration<0.892 170 267> time<0.310 076 233>
Reset duration<0.057 357 367> time<1.202 244 483>
HighSpeedHandshake status<Success> time<1.259 316 100>
RawPacket data<2D 00 10> speed<HS> time<1.277 298 550>
RawPacket data<C3 80 06 00 01 00 00 08 00 EB 94> speed<HS> time<1.277 298 883>
RawPacket data<D2> speed<HS> time<1.277 299 383>
RawPacket data<69 00 10> speed<HS> time<1.277 468 467>
RawPacket data<4B 12 01 10 02 00 00 00 40 55 41> speed<HS> time<1.277 468 900>
RawPacket data<D2> speed<HS> time<1.277 469 517>
xml内容是这样:
<Reset duration="3.7 seconds" time="-3.432 116 117"></Reset>
<Power state="OFF" time="0.000 000 000"></Power>
<Suspended duration="892.2 milliseconds" time="0.310 076 233"></Suspended>
<Reset duration="57.4 milliseconds" time="1.202 244 483"></Reset>
<HighSpeedHandshake status="Success" time="1.259 316 100"></HighSpeedHandshake>
...
txt内容是这样:
______________________________________________________________________________
Reset duration<3.7 seconds> time<-3.432 116 117>
______________________________________________________________________________
Power state<OFF> time<0.000 000 000>
______________________________________________________________________________
Suspended duration<892.2 milliseconds> time<0.310 076 233>
______________________________________________________________________________
Reset duration<57.4 milliseconds> time<1.202 244 483>
______________________________________________________________________________
HighSpeedHandshake status<Success> time<1.259 316 100>
______________________________________________________________________________
Container title<GetDescriptor (Device)> device<0 (1)> endpoint<0> status<OK>
speed<HS> time<1.277 298 550>
Transaction type<SETUP> device<0 (1)> endpoint<0> status<ACK> speed<HS>
time<1.277 298 550>
Packet id<SETUP> devAddr<0> epNum<0> crc5<0x02> speed<HS>
time<1.277 298 550>
Packet id<DATA0> length<8> data<80 06 00 01 00 00 08 00> crc16<0x94EB>
speed<HS> time<1.277 298 883>
Packet id<ACK> speed<HS> time<1.277 299 383>
Transaction type<IN> device<0 (1)> endpoint<0> status<ACK> speed<HS>
time<1.277 468 467>
Packet id<IN> devAddr<0> epNum<0> crc5<0x02> speed<HS> time<1.277
468 467>
Packet id<DATA1> length<8> data<12 01 10 02 00 00 00 40> crc16<0x4155>
speed<HS> time<1.277 468 900>
Packet id<ACK> speed<HS> time<1.277 469 517>
Transaction type<PING> device<0 (1)> endpoint<0> status<ACK> speed<HS>
time<1.277 770 500>
Packet id<PING> devAddr<0> epNum<0> crc5<0x02> speed<HS>
time<1.277 770 500>
Packet id<ACK> speed<HS> time<1.277 770 850>
Transaction type<OUT> device<0 (1)> endpoint<0> status<ACK> speed<HS>
time<1.277 771 800>
Packet id<OUT> devAddr<0> epNum<0> crc5<0x02> speed<HS> time<1.277
771 800>
Packet id<DATA1> length<0> crc16<0x0000> speed<HS> time<1.277 772 133>
Packet id<ACK> speed<HS> time<1.277 772 483>
很高兴能找到组织,支持LZ保持热情,把这项工作持续下去。
我不是硬件/固件开发者,但因为研究U盘USB启动需要,掉入USB协议分析仪大坑。
现在手头上已经有了支持HS抓包的USB packet viewer,ellisys USB explorer 200(二手乞丐版)两套分析仪。
我赞同楼上很多同学反复强调的观点:抓包不算问题,关键在上位机软件,协议解析。我也是花了大价钱才直观认识到这一点。
由于USB packet viewer的协议解析软件,不支持USB启动用到的几个UFI/SCSI命令解析,所以,我才不得不购买二手
ellisys USB explorer 200,他家的Mass storage解析很漂亮。
但我没想到从一个坑掉入更大的坑,ellisys USB explorer 200的协议解析,Pro版才有,basic版没有。basic版只有帧解析
(类似沁恒的USB2分析仪那样,对这样的没诚意解析,兴趣顿时大减)。升级需要单独付费,且协议解析软件费用 >> 分析仪硬件本身,
这就很坑了。
=========================================================================
看了一下ViewSB,decode部分似乎完成度也不高,这将是严重障碍,需要特别注意避坑。想要用起来,几个急需的
基础协议解析要完成,例如Mass storage/SCSI命令的解析。
页次: 1