Five USB-C-to-UART Converters Tested: Only Two Worked Properly

I tested five USB-C-to-UART boards. Three failed on a direct USB-C connection because their Type-C implementation appears to omit the required CC pull-down resistors.

Five USB-C-to-UART Converters Tested: Only Two Worked Properly

When I play with historical calculators—or, more recently, with my PAL-2 computer—I often need to connect a device with a serial port to a modern laptop. The UART side is still simple. The laptop side, however, has moved on to USB-C.

I already had a perfectly usable mini-USB-to-UART converter, but I no longer wanted to keep a mini-USB cable around just for that one board. A native USB-C converter seemed like an obvious and inexpensive upgrade.

The first one I ordered did not work.

More precisely, it did not work when connected directly to a USB-C port. If I connected it through USB-A—or used the wonderfully absurd chain USB-C → USB-A → USB-C—the same converter appeared and worked normally.

Direct USB-C cable and USB-C to USB-A to USB-C adapter chain
The two test paths: a direct USB-C connection and a USB-C → USB-A → USB-C adapter chain.

The tiny components that make USB-C work

The problem is a common shortcut in cheap USB-C designs. A USB-C peripheral acting as a power sink is expected to present an Rd pull-down on both CC pins. A simple implementation uses a 5.1 kΩ resistor from CC1 to ground and another 5.1 kΩ resistor from CC2 to ground. These terminations tell the host that a device has been attached and allow it to determine plug orientation and enable VBUS.

If those resistors are missing, a proper USB-C source may see no valid sink at all and therefore provide no power. The USB 2.0 D+ and D− wiring may be fine, but the converter never gets the VBUS it needs to start.

The USB-A detour hides the mistake. A legacy USB-A port supplies 5 V without the Type-C CC attachment procedure, so the converter wakes up and its otherwise ordinary USB-to-serial circuitry works.

After the first failure I ordered a different design. It failed in exactly the same way. At that point I ordered several variants and decided to find out which ones were genuinely usable from a USB-C-only laptop.

How I tested them

I tested each board in two configurations:

  • Direct: USB-C → USB-C
  • Legacy detour: USB-C → USB-A → USB-C

I recorded the USB identification reported by the operating system, measured the boards, and looked at the UART TX signal with an oscilloscope. As a repeatable example I pressed Fn-Backspace in the terminal. It sends the four-byte escape sequence 1B 5B 33 7E—that is, ESC [ 3 ~. The oscilloscope decoder shows the same four bytes in each capture.

#USB bridgeSizeDirect USB-CMeasured TX high/idle
1CH340
1a86:7523
24.7 × 13.7 mmNo5.245 V
2CP210x
10c4:ea60
20.8 × 15.6 mmYes3.524 V
3CP210x
10c4:ea60
22.7 × 15.4 mmNo3.373 V
4CH340
1a86:7523
32.2 × 13.3 mmYes3.290 / 5.533 V
5CH340E
1a86:7523
Not measured by mistakeNo5.254 V

The voltage figures above are the DVM readings shown by the oscilloscope for the TX line in the captured test conditions. They are useful observations of these samples, not guaranteed specifications for every board sold under the same appearance.

Converter 1: CH340, but USB-C in shape only

Converter 1 CH340 USB-C-to-UART board
Converter 1: CH340, 24.7 × 13.7 mm.

The first converter identifies as QinHeng Electronics CH340, USB ID 1a86:7523. It measures 24.7 × 13.7 mm.

It worked through the USB-A adapter chain, but not from a direct USB-C-to-USB-C cable. This was the board that started the entire investigation. Once powered through the adapter chain, its TX output decoded the expected four bytes and measured 5.245 V.

Oscilloscope capture of Converter 1 transmitting bytes 1B 5B 33 7E
Converter 1 transmitting the Fn-Backspace sequence; DVM reading 5.245 V.

Converter 2: the smallest—and a proper direct connection

Converter 2 Silicon Labs CP210x USB-C-to-UART board
Converter 2: Silicon Labs CP210x, 20.8 × 15.6 mm.

Converter 2 identifies as a Silicon Labs CP210x UART Bridge, USB ID 10c4:ea60. At 20.8 × 15.6 mm it is the shortest board in the test.

Most importantly, it worked with a direct USB-C-to-USB-C connection. Its TX capture decoded the expected 1B 5B 33 7E, and the scope's DVM showed 3.524 V.

Oscilloscope capture of Converter 2 transmitting bytes 1B 5B 33 7E
Converter 2 transmitting the four-byte Fn-Backspace sequence; DVM reading 3.524 V.

Converter 3: almost the same, but missing the point

Converter 3 Silicon Labs CP210x USB-C-to-UART board
Converter 3: another CP210x design, 22.7 × 15.4 mm.

This board also identifies as Silicon Labs CP210x with the same 10c4:ea60 USB ID. It is only about 2 mm longer than Converter 2, measuring 22.7 × 15.4 mm.

Despite the similar chipset and dimensions, it did not work directly over USB-C. It appeared only through the USB-A detour. Once powered, its UART output was fine: the four bytes decoded correctly and the DVM reading was 3.373 V.

Oscilloscope capture of Converter 3 transmitting bytes 1B 5B 33 7E
Converter 3 produces a clean decoded sequence once powered; DVM reading 3.373 V.

Converter 4: the larger CH340 board gets USB-C right

Converter 4 CH340 USB-C-to-UART board
Converter 4: CH340, 32.2 × 13.3 mm.

Converter 4 returns to the CH340 family and USB ID 1a86:7523. It is the longest measured board at 32.2 × 13.3 mm.

This one worked directly with USB-C. It also has a selectable UART output level, allowing operation at either 3.3 V or 5 V. Both captures decoded 1B 5B 33 7E; the scope's DVM readings were 3.290 V and 5.533 V.

Converter 4 oscilloscope capture at the 3.3-volt UART setting
Converter 4 at the 3.3 V setting; DVM reading 3.290 V.
Converter 4 oscilloscope capture at the 5-volt UART setting
Converter 4 at the 5 V setting; DVM reading 5.533 V.

Converter 5: CH340E, but no direct USB-C operation

Converter 5 CH340E USB-C-to-UART board
Converter 5, marked CH340E.

The fifth board is marked CH340E and enumerates as 1a86:7523.

Unfortunately, it failed the direct USB-C test and needed the USB-A adapter chain. Once powered, its scope capture decoded the expected four bytes and showed a DVM reading of 5.254 V.

Oscilloscope capture of Converter 5 transmitting bytes 1B 5B 33 7E
Converter 5 transmitting the Fn-Backspace sequence; DVM reading 5.254 V.

The result

Out of five USB-C-to-UART converters, only Converter 2 and Converter 4 worked when connected directly to USB-C. The other three were functional USB-to-UART bridges hidden behind an incomplete USB-C implementation.

The chipset was not a reliable predictor. One CP210x board worked and another did not; likewise, one CH340 design worked while other CH340/CH340E boards required the adapter chain. The fault is in the surrounding board design—not in the UART bridge family printed on the package.

For a USB-C peripheral, the connector alone is not enough. If the board omits the two inexpensive 5.1 kΩ CC pull-down resistors, it may work from USB-A and still fail on exactly the modern USB-C-only computer it was bought for.

My practical winner is Converter 4: works fine and you can select voltage levels...

References