USB-C is 0v by default and you have to signal to get anything at all. A lot of junky devices are non compliant and aren’t set up to signal 5v so they get 0 when plugged in to a C-C cable.
With resistors on the CC pins. In particular, there is resistor value that indicates legacy USB charging. This is in the USB-A to USB-C adapters and cables.
The manufacturers cheaped out in not including the right resistors.
I would also guess that some of these cases are designs that were adapted from previous USB mini- or micro-b configurations. Like an intern got the assignment, switched the connector, and wiped hands on pants, not realizing that an electrical change was required as well.
And if you spin the new board and it works with the A->C cable sitting on your desk, then what could possibly be different about plugging it into a C<->C cable, right?
> How does it negotiate with a host-powered device if it's unpowered to begin with?
Through a pair of resistors.
The unpowered device connects each of the two CC pins to the ground pin through a separate resistor of a specific value. The cable connects one of these CC pins to the corresponding pin on the other end of the cable (the second pin on each side is used to power circuitry within the cable itself, if it's a higher-spec cable). On the host side, each of the two CC pins is connected to the power supply through a separate resistor of another specific value. When you plug all this together, you have the host power supply connected to ground through a pair of resistors, which is a simple voltage divider. When the host detects the resulting voltage on one of the CC pins, it knows there's a device on the other end which is not providing power, and it can connect the main power pins of the connector to its power supply.
I have 2 powerbanks that cannot be charged by USB-C port when at 0%. The signaling circuitry simply doesn't work. No idea who designed this. It is silly beyond belief. I have to charge it with normal 5V A-to-C cable for 30 seconds, then unplug, then all the PD stuff will start working and I can fastcharge it with USB-C port again. I'm screwed without A-to-C cable.
Holy shit. This explains why my Anbernic 406v is so weird. If I drain the battery too much, it won't let me charge with anything except with a normal 5v USB A to C cable and the USB-C cable that I use to charge it while it's on does nothing. It makes so much sense now.
This (and the GP) are because your device supports some sort of fast charge USB-PD negotiation, but does not support what is known as “dead battery mode”. Basically, dead battery mode enables those pull down resistors by default (when no power is applied) so you can get 5V to the system, where eventually it would charge up and the chip that can do PD negotiation will be powered. Usually this is done simply by having the negotiation chip default to pull down resistors internally when unpowered.