0

I am charged with the task to design the architecture to stress (burn-in) test computer's USB ports. Requirements are not defined yet, and I have double complicated task - to define what to test and under which conditions, and which tools to use to perform the tests. I have put the following initial requirements:

  1. test must be automated - runnable from the script/batch file;
  2. is able to test both interfaces - USB2 and USB3 - with the same USB3.0 device (to eliminate manual replacement of the 2.0 and 3.0 devices);
  3. USB is about command/data transmission, and it does not matter much which device I use, but it must stress communication channels in both directions. The easiest choice is USB flash drive 3.0 or higher, being continuously read from and written to. Must be relatively cheap and easy.

Now the difficulties and questions:

  1. what would you improve/add to the requirements?
  2. is there any better way you can propose - in terms of methodology and devices used?
  3. re: USB2/USB3 - I can not figure out if it is possible to remove and reinstall the USB device programmatically forcing it to function in specific mode;
  4. does USB provide any lane/channel statistics - e.g. size of transmitted/received information (frames/packets), retransmissions, errors etc;
  5. what software is available, ideally open source/free? E.g. dd is an option for stress test, but I totally can not find any utility providing stats for USB.

Great thanks to @Ale-chenski

If you are in business of QA for production, you only need to check for assembly defects and loss of continuity. Which means that you don't need to stress much, and check for only quick facts of connectivity for all (current) 5 types of USB modes (SS+, SS, HS, FS, LS).

This seems to be a good task to pursue which would satisfy requirements. Now further question -

How to achieve it in the best, automated, and if possible cost-effective way?

Maybe standard solutions? Or custom solution using standard equipment and available software?

Ok, moderator did not like my "broad" question, requiring me to "describe your situation and the specific problem you're trying to solve". So here they are:

  1. USB 3.0 flash drive is installed into the USB 3.0 connector. I need to reinitialize interface to use this drive in USB 2.0 mode without removing it from the connector. What commands, Linux and Windows, do I use?

  2. I want to transfer as much data through USB as possible. What command, Linux and Windows, stresses USB connectivity most in terms of data throughput?

  3. I need to see how much data was transferred through USB interface, and how much transmission errors were detected. What command, Linux and Windows, do I use?

closed as off-topic by DavidPostill Apr 12 at 20:18

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking product, service, or learning material recommendations are off-topic because they become outdated quickly and attract opinion-based answers. Instead, describe your situation and the specific problem you're trying to solve. Share your research. Here are a few suggestions on how to properly ask this type of question." – DavidPostill
If this question can be reworded to fit the rules in the help center, please edit the question.

  • What exactly are you trying to test / show / prove? – Attie Apr 12 at 14:36
  • It is also up to the definition. I would say reliability of the data transmission from/to the device. In other words - hardware. – Anonymous Apr 12 at 14:58
  • @DavidPostill updated the question. I hope now my problems are clear enough and answers will not be opinion-based. – Anonymous Apr 12 at 20:33
1

This is too broad question to answer. USB functionality gets affected by several and different elements.

  1. Host controller implementation - variants of hardware code exist, implementation and manufacturing margins may lead to subtle bugs;
  2. Host software driver subtle details, especially in the area of power management, endpoint management, memory management.
  3. Physical layer signal quality, which includes mainboard trace implementations, presence and selection of extra ESD protection circuitry, quality of connectors (especially for Gen1-Gen2 rates);
  4. Link layer test that are local to each link and might need individual configuration at BIOS/UEFI level;
  5. Power delivery management, especially with Type-C connectors, which includes special sequencing form power management software and its integration into USB framework.

The test strategy roughly depends on your role in development, whether you are dealing with host software/hardware development activity, or are testing end production for defects of assembly.

If this is about OEM system development, for (1) and (2) there exist Microsoft test suite that uses specially-designed MUTT devices and runs for weeks.

For (3) the test uses physical equipment, high-speed 16-40 GHz scopes, Bit Error Rate Testers (BERTs), pattern generators, and again a whole slew of scripted tests.

For (4) you would need USB protocol analyzer and again a set of scripted test that verify few dozens of TD (test definitions).

Typical cost for a set of tools for testing hardware is around $500k

For (5) you will need yet another set of testers.

The above set of tests assures that any defect-free production system has no issues with "stressing command/data transmission" by having enough margins to function.

If you are in business of QA for production, you only need to check for assembly defects and loss of continuity. Which means that you don't need to stress much, and check for only quick facts of connectivity for all (current) 5 types of USB modes (SS+, SS, HS, FS, LS).

To get overall impression about complexity of the issue, you should start with USB Implementing Forum and review development documentation and other guidance and what is offered by industry.

  • Thank you very much for your answer. You nailed it, I updated the question. Will be extremely glad if you elaborate. – Anonymous Apr 12 at 20:05

Not the answer you're looking for? Browse other questions tagged or ask your own question.