> >On 9/11/2019 8:27 AM, Peter Chen wrote: >> On 19-09-10 22:01:58, Allen Blaylock wrote: >>> I am trying to validate the USB on an embedded platform based on the NXP i.MX7. >>> So far I have only been able to validate root ports on the board but >>> also have a PCIe xhci controller and a microchip USB3503 hub off of >>> the HSIC port on the SoC which I would like to run the tests on. >>> >>> I have reviewed the mailing list archives and found another >>> discussion of using the EHSET driver to validate a driver and they >>> reference the same issue I am seeing. When I plug in the device I see >>> usb_ehset_test: probe of <port path> failed with error -32 for either >>> the PCIe root hub or the USB3503 HSIC hub. > > >I remember seeing some HUBs which fail to enter compliance mode (STALL SetFeature request) if a device is connected to the port. >You can check usbmon logs if SetFeature request was sent to HUB. So I do see the PORT_TEST SetFeature Request and Response when I use tcpdump to make a capture using usbmon. Unfortunately I am not as familiar with the raw usbmon output or some of the diagnostics output by usbmon so I may be missing something. Here is a capture from the sysfs usbmon file: a52efe00 268933702 C Ii:002:01 0 1 = 08 a52efe00 268933736 S Ii:002:01 -115 1 < a546b700 268934005 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546b700 268934303 C Ci:002:00 0 4 = 01010100 a546b700 268934327 S Co:002:00 s 23 01 0010 0003 0000 0 a546b700 268934384 C Co:002:00 0 0 a546b700 268934438 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546b700 268934520 C Ci:002:00 0 4 = 01010000 a546b700 268980085 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546b700 268980332 C Ci:002:00 0 4 = 01010000 a546b700 269030091 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546b700 269030333 C Ci:002:00 0 4 = 01010000 a546b700 269080082 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546b700 269080335 C Ci:002:00 0 4 = 01010000 a546b280 269130094 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546b280 269130339 C Ci:002:00 0 4 = 01010000 a546b280 269130376 S Co:002:00 s 23 03 0004 0003 0000 0 a546b280 269130577 C Co:002:00 0 0 a546be00 269160091 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546be00 269160344 C Ci:002:00 0 4 = 03051000 a546be00 269160361 S Co:002:00 s 23 01 0014 0003 0000 0 a546be00 269160416 C Co:002:00 0 0 a546be00 269230118 S Ci:000:00 s 80 06 0100 0000 0040 64 < a546be00 269230341 C Ci:000:00 0 18 = 12010002 00000040 0a1a0401 00010102 0301 a546be00 269230358 S Co:002:00 s 23 03 0004 0003 0000 0 a546be00 269230425 C Co:002:00 0 0 a546be00 269260104 S Ci:002:00 s a3 00 0000 0003 0004 4 < a546be00 269260354 C Ci:002:00 0 4 = 03051000 a546be00 269260374 S Co:002:00 s 23 01 0014 0003 0000 0 a546be00 269260430 C Co:002:00 0 0 a546be00 269330097 S Co:000:00 s 00 05 0004 0000 0000 0 a546be00 269330372 C Co:000:00 0 0 a546b700 269380050 S Ci:004:00 s 80 06 0100 0000 0012 18 < a546b700 269380327 C Ci:004:00 0 18 = 12010002 00000040 0a1a0401 00010102 0301 a546b700 269380360 S Ci:004:00 s 80 06 0200 0000 0009 9 < a546b700 269380453 C Ci:004:00 0 9 = 09022e00 01010080 32 a546b700 269380468 S Ci:004:00 s 80 06 0200 0000 002e 46 < a546b700 269380574 C Ci:004:00 0 46 = 09022e00 01010080 32090400 0004ff00 00000705 02020002 00070504 02000200 a546b700 269380608 S Ci:004:00 s 80 06 0300 0000 00ff 255 < a546b700 269380701 C Ci:004:00 0 4 = 04030904 a546b700 269380717 S Ci:004:00 s 80 06 0302 0409 00ff 255 < a546b700 269380824 C Ci:004:00 0 34 = 22035500 53004200 20004500 48004f00 53005400 20005400 45005300 54004500 a546b700 269380845 S Ci:004:00 s 80 06 0301 0409 00ff 255 < a546b700 269380949 C Ci:004:00 0 34 = 22035500 53004200 20004500 48004f00 53005400 20005400 45005300 54004500 a546b700 269380968 S Ci:004:00 s 80 06 0303 0409 00ff 255 < a546b700 269381074 C Ci:004:00 0 10 = 0a034900 4f005600 3300 a546b280 269381564 S Co:004:00 s 00 09 0001 0000 0000 0 a546b280 269381704 C Co:004:00 0 0 a560a000 269407637 S Co:002:00 s 23 03 0015 0403 0000 0 a560a000 269407869 C Co:002:00 -32 0 I was unable to make sense of it with the help of the usbmon.txt documentation and will need some more time using wireshark and the output of tcpdump to get familiar with decoding the raw usbmon output. >>> >>> Further down in the mailing list chain Peter Chen states >>>> Besides, do not connect HUB between your host board and emulation >>>> board (for sending VID/PID). >>> but there is no additional information regarding this statement. >> EHSET is used to test embedded host electrical signal required by USB >> IF Compliance Test, not test the signal for USB HUB, since the EHSET >> module could only let embedded host controller enter test mode by >> writing TEST MODE registers follows EHCI or xHCI spec. Maybe the USB >> HUB could let its port enter test mode, but it needs to use other >> ways, maybe vendor specific commands. > >IMO ehset should work with external HUB as well since all it takes to put a HUB's port in compliance mode is sending a SetFeature request which I believe driver already does. If HUB is sending stall then you can try putting a different port in compliance which is not connected. How do I specify which port I put in compliance? The way I have been doing it was using a PIDVID from testusb.com which, as I understand it, turns into the correct device by setting its VID and PID so by nature of how it works I must have a "device" connected. Allen