The USB micro-B and C cable tester identifies capabilities supported by USB cables and deduces it's purpose.
It helps figuring out if a USB cable is for charging or to transfer data, and at which speed.
It supports type A to micro-B, A to C, and C to C USB cables.

usage
=====

- ensure the tester has a non-empty battery in the CR2032/2025, or is externally powered through the USB power port
- plug one end of the cable in one of the host ports
- plug the other end of the cable in one of the devices ports
- the tester will identify the cable's capabilities, on the left side
- the tester will then show the cable's purpose, on the right side

To understand further the capabilities and purpose of a cable, I recommend reading the USB specification, mainly the one for the [type-C connector](https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-release-23).

design choice
=============

features
--------

do:

- USB micro-B: still wide-spread and popular for charging devices
- USB type-A: still the de-facto host plug
- USB type-C: becoming the standard for battery operated devices
- C to C: often used for high power charging of phones and laptops
- battery operated: it's a very simple device, and this avoids needing to require external power
- power port: in case you have no battery or it runs out
- USB 3.0: because it is hard to identify if C-C cable support SuperSpeed
- purpose: deduce from capabilities

don't:

- small: no need to build it as compact as possible
- A or micro-B 3.0: the connectors that support it are obvious, and it's rare they are used for anything else than Super-Speed transfer (plus they are less common or problematic)
- Power Delivery capabilities: this requires complex host software communicating with the eMarker chip in the cable
- OTG: even if detecting this functionality is easy, micro-B OTG adapters are not popular anymore
- impedance: only the presence of wires is tester, not their impedance

mode of operation
-----------------

Most of the tests just verify if the wires corresponding to capabilities are present in the cable.
Some additional tests verify the resistances in the plugs.
For more details, check the schematic, and refer to [type-C specification](https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-release-23).

The left side identifies the capabilities.
Based on that, a micro-controller (MCU) with map the combination into a purpose on the right side.
The left side if independent of the MCU and right side.

limitation
----------

The tester does not:

- verify the resistance of wires, particularly the power ones
- verify the impedance of wires, particularly the differential ones
- verify if the shield(s) is more than just a wire
- read out capabilities from electronically marked cables
- guarantee USB cable compliance or conformity, as this is [very complex](https://www.usb.org/documents?search=&category%5B%5D=49&type%5B%5D=56&tid_2%5B%5D=41&items_per_page=50)

alternatives
------------

- [USB micro-B cable tester](https://www.cuvoodoo.info/cuvoodoo-gadget-micro-usb-cable-tester-v2/): only does micro-B cables
- [USB A-C cable tester](https://www.cuvoodoo.info/cuvoodoo-gadget-usb-a-to-usb-c-cable-tester-v1/): only does USB type A to type C cables
- [USB C-C cable tester](https://www.cuvoodoo.info/cuvoodoo-gadget-usb-c-cable-tester-v2/): only does USB type C to type C cables
- [DT3 Data Cable Detection Board](https://www.aliexpress.com/item/1005006302832038.html): does not check shield, battery charging, USB 3.0
- [USB Cable Checker 2](https://www.tindie.com/products/bittradeone/usb-cable-checker-2-assembled/): too complex and expensive
- [USB Cable Tester](https://github.com/alvarop/usb_c_cable_tester): only for USB-C and you have to understand and interpret the signals
