The USB-C Port That Charged on the Bench but Not in the Field: CC Resistors, VBUS Discharge, and the Dead-Battery Flag

Asha Lindqvist

There is a specific kind of USB-C failure that does not announce itself with a dead port or a burned connector. It announces itself with a support ticket that says “sometimes it charges, sometimes it doesn’t,” or “my laptop says the charger is connected but not charging,” or “it worked with my old cable.” The unit comes back, you plug it into the bench supply, and it charges. You plug in the bench phone, and it charges. You run the same test you ran before tooling, and it passes. Then you ship another thousand units and the tickets keep coming.

This article is about the gap between a prototype that charges on the bench and a product that charges in the field. It is a diagnostic lens, not a documented incident: no specific product, customer, or return rate is claimed here. The technical substance comes from USB Type-C and USB Power Delivery (PD) documentation that is publicly available, and the argument is that the bench exercises a narrow slice of the CC and VBUS state space while the field exercises the rest of it.

The CC layer is a passive advertisement, not a negotiation

USB Type-C uses the Configuration Channel (CC) pins for three jobs: determining cable orientation, advertising default power capability, and setting up alternate or debug modes. The physical layer is simple. A source presents pull-up resistors (Rp) on CC1 and CC2. A sink presents pull-down resistors (Rd) on CC1 and CC2. A cable contains a resistor Ra on the unused CC pin. When a cable connects source and sink, one CC channel forms a voltage divider. The source sees its CC voltage drop below 3.3 V and knows a sink is attached. The sink sees its CC voltage rise above 0 V and knows a source is attached. This is described in TI’s USB Type-C Configuration Channel (CC) Controller Selection Guide (SDAA284).

The voltage divider alone yields only three default power levels: 5 V at 900 mA (4.5 W), 5 V at 1.5 A (7.5 W), and 5 V at 3 A (15 W). Any power negotiation above 15 W requires a PD controller. TI’s USB PD Power Negotiations application report (SLVA842) states that USB PD is required in USB Type-C systems for power levels above 15 W (5 V at 3 A) up to 100 W (20 V at 5 A).

The CC resistor network is not a negotiation. It is a passive advertisement. That distinction matters because a passive advertisement can be wrong in ways that a negotiation would catch. If the Rp value is wrong, the source advertises a current capability it cannot deliver. If the Rd value is wrong or missing, the sink may not be detected at all. If CC1 and CC2 are shorted together to save a resistor, the advertisement is corrupted in a way that only appears with certain cables.

The shared-resistor shortcut and the e-marked cable

One of the most common cost-reduction moves in a 1k–10k unit run is to collapse CC1 and CC2 onto a single resistor. The reasoning is that the connector is symmetric, the sink only needs one Rd, and the bill of materials (BOM) can lose a part. The Chromium project’s USB Type-C Cable and Adapter Tips and Tricks page is explicit about why this fails: active cables, e-marked cables, or any device that requests Vconn have an Ra pulldown on one of the pins. If the adapter shorts CC1 and CC2, that Ra pulldown prevents accurate detection of the CC voltage. The failure is cable-dependent. A passive cable works. An e-marked cable does not. The bench cable is usually passive. The field cable is often e-marked.

The same page warns against using the 3 A Rp on a legacy cable. The resistor indicates the capability of the power adapter, not the capability of the cable. A cable rated for 3 A must still use the 56 kΩ Rp because the adapter may not be capable of providing 3 A. Using the 3 A Rp in a cable can overheat the adapter. This is a cable-design rule, but it shows up in product failures when a contract manufacturer substitutes a cable or when a product ships with a captive cable that was specified incorrectly.

The practical point for a 1k–10k unit team is that the CC resistor network is a place where a single part change can create a field-only failure. The bench test does not catch it because the bench cable is not the field cable. The fix is not complicated: verify that CC1 and CC2 are not shorted, verify that the Rp value matches the intended power level, and verify that the Rd value is present on both CC pins. But the verification has to happen with the cables the field will use, not the cable that happened to be on the bench.

VBUS cold and the 10 µF receptacle limit

A USB-C power adapter with a receptacle must hold VBUS cold. The Chromium reference states that when nothing is attached to the receptacle or plug, VBUS must be 0 V or vSafe0V, and 5 V shall be applied to VBUS only when a UFP is detected by monitoring the CC pin. TI’s technical article on upgrading USB chargers from Type-A to Type-C (SSZTAH2) clarifies that in the USB specification, “0 V” really means less than 0.8 V, referred to as vSafe0V. The same article notes that a Type-C receptacle cannot expose more than 10 µF to VBUS when the receptacle is empty.

Both requirements are invisible on a bench supply. The bench supply is already current-limited and the bench cable is short, so the inrush current into a large bulk capacitor does not cause a visible problem. The 10 µF limit exists to protect legacy Type-A ports that can be connected to a Type-C receptacle through an adapter cable. A design that ignores the limit can pass every bench test and still damage or fail to enumerate a partner device in the field.

The VBUS cold requirement is also easy to miss because it is a behavior, not a component. A charger that applies 5 V to VBUS before detecting a sink on CC will pass a bench test with a phone that is already expecting power. It will fail with a device that needs to see VBUS at 0 V before it will enumerate. The TI article notes that when faults occur, the source is required to drive VBUS to 0 V for close to 1 s as it performs a USB PD Hard Reset. That is a long time in firmware terms, and a design that cannot discharge VBUS quickly enough will fail the reset sequence.

The dead-battery flag

The dead-battery condition is the state most likely to be skipped in bring-up because engineers test with a charged battery. A product that ships with a deeply discharged battery presents a different CC termination than a product with a charged battery. TI’s TPS65988DK datasheet states that Type-C USB ports require a sink to present Rd on the CC pin before a USB Type-C source provides a voltage on VBUS. The same datasheet describes how the TPS65988DK hardware is configured to present this Rd during a dead-battery or no-battery condition, and how additional circuitry provides a mechanism to turn off this Rd once the device no longer requires power from VBUS.

The detail that matters for a 1k–10k unit run is that the dead-battery Rd is not the same as the normal-operation Rd. The datasheet describes a resistance R_RPD connected to the gate of the pull-down FET on each C_CCn pin. During normal operation when configured as a sink, RD is RD_CC. During dead-battery or no-battery conditions, the resistance is untrimmed and is RD_DB. When an external connection pulls up on C_CCn, the connection through R_RPD pulls up on the FET gate, turning on the pull-down through RD_DB. The C_CCn pin acts as a clamp VTH_DB in series with the resistance RD_DB.

This is a hardware behavior, not a firmware setting. If the external components around the CC pins are wrong, the dead-battery advertisement can be wrong. A source that expects a trimmed Rd may mis-detect the sink, or may fail to source power at all. The failure appears only when the battery is deeply discharged, which is exactly the state a product is in when it ships from the factory or sits in a warehouse for months.

The bench test with a charged battery does not exercise this path. The bench test with a bench supply does not exercise this path either, because the bench supply is already on and the sink is already powered. The only way to catch a dead-battery CC problem is to test with a fully discharged unit and a source that follows the Type-C detection sequence.

What the bench does not exercise

The bench setup for a USB-C prototype typically includes a bench supply, a bench phone or a USB tester, and a short cable. That setup exercises a narrow slice of the CC and VBUS state space. It does not exercise an e-marked cable, a deeply discharged sink, a legacy Type-A-to-C adapter, or a partner device that needs to see VBUS at 0 V before it will enumerate. The field exercises all of those states, and the field also exercises the cables and adapters that users already own.

The failure signatures that come back from the field are consistent with this gap. A unit that charges with one cable but not another points at the CC resistor network. A unit that charges when the battery is partially charged but not when it is fully discharged points at the dead-battery Rd path. A unit that causes the source port to lock out or reset points at VBUS discharge or the 10 µF limit. None of these signatures require a complex root cause. They require a test that exercises the state the field will present.

A pre-tooling checklist for 1k–10k unit runs

The following checklist is a recommendation, not a research finding. It is based on the sourced requirements above and on the practical observation that the bench setup is not the field setup.

  • Verify Rp values against the intended power level. The CC voltage divider yields only three default power levels: 5 V at 900 mA, 5 V at 1.5 A, and 5 V at 3 A. If the product advertises 3 A, the Rp value must match. If the product uses a legacy cable, the cable must use the 56 kΩ Rp, not the 3 A Rp.
  • Verify CC1 and CC2 are not shorted. A shared resistor fails with active or e-marked cables because those cables have an Ra pulldown on one pin. Test with an e-marked cable, not just a passive one.
  • Verify VBUS is cold on an empty receptacle. VBUS must be 0 V or vSafe0V when nothing is attached, and 5 V shall be applied only after a UFP is detected on CC. This is a behavior, so it needs a test that watches VBUS and CC together.
  • Verify receptacle capacitance is under 10 µF. A Type-C receptacle cannot expose more than 10 µF to VBUS when the receptacle is empty. This is a BOM and layout check, not a firmware check.
  • Verify the dead-battery Rd path on a fully discharged unit. The sink must present Rd before the source provides VBUS. The dead-battery Rd is untrimmed and is not the same as the normal-operation Rd. Test with a unit that has been discharged below the point where the normal-operation path is active.

The checklist is short because the failure modes are specific. The CC resistor network, the VBUS cold behavior, the receptacle capacitance, and the dead-battery Rd path are four places where a prototype can pass the bench and fail the field. Each one is verifiable before tooling with the right cable, the right battery state, and the right measurement.

What this article does not claim

This article does not claim a specific field return rate, a specific product failure, or a specific contract manufacturer. The USB Type-C specification and the USB PD specification were not available at the time of writing, so the technical claims here are sourced from TI application notes and datasheets and from the Chromium project’s cable and adapter reference. The field-failure framing is a diagnostic lens, not a reported incident. The checklist is a recommendation based on the sourced requirements, not a measured result from a specific build.

The argument is that the gap between bench and field is not a mystery. It is a set of specific states that the bench does not present and the field does. The CC resistor network, the VBUS cold requirement, the 10 µF receptacle limit, and the dead-battery Rd path are four of those states. A team that tests them before tooling is a team that does not have to learn them from returns.