Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Same!

I've also returned a few USB devices that ship with a USB-A to USB-C cable and ONLY charge in that mode, they also MUST charge with USB-C PD.

The two so far were a therapy light and some Zippo hand warmers. Like, who in the hell would design a device that has a USB-C port on it where only a fraction of chargers will work on it. It feels even worse than proprietary charges, because you see a USB-C port on it and think, oh I have a plug that fits it, and then it doesn't F**ing work. Idiot engineering/product teams, making the world suck with their falsely advertised USB-C ports. If anyone of you are on a team that ever makes this decision, just know that it is a stupid decision, and jump ship when you can.



The thing is, making a 5v-only device PD-compliant is literally one resistor. It costs well under a penny.

It's pure ignorance, not a decision, but the lack of one. Lack of caring, lack of having an actual engineer involved, just slapping an oval-shaped port into a product where a trapezoidal port had been, and blindly thinking that magically makes it spec-compliant.

Or not thinking about the spec at all.

I return these devices too. Lots of them. My e-commerce returns over the last year are probably 50% PD non-compliance, 50% all other defects combined.


It's two resistors, actually. But they cost $0.0003 each (that's 0.03¢, or just around 3,333 of them for US$1) from distributors. Though there appears to be a bit of a stock crunch right now.

So... yeah.

The bigger issue is not really the parts cost, it's the fact that it adds an extra part to the design that has to be purchased and tracked and assembled and blah blah blah. This is the real reason it often gets left off on the bottom-of-the-barrel products. Many times there is no other use for a 5.1kΩ resistor. And it might not even fit well at the cheap sizes (0603 or 0402), and going down to 0201-capable assembly factory flow just for these two resistors is not going to happen.


These companies are not manufacturing the device PCBAs, that is done by dedicated companies such as Flex. The PCBA manufacturing companies have warehouses of different resistors, and 5.1kΩ is extremely common. In fact, most PCB resistor values are quite flexible, to save on SKUs (in practice, to save on loading another carrier on the PnP machine) often if a specific resistor needs a specific value then all (or most of) the other resistors will use that value.


I was speaking a little more towards the AliExpress end of things, which is a sadly high proportion of the devices out there. For the midsize CMs and up, you're right, they've got piles and piles of stuff and don't charge by the reel loaded.

5.1k is a surprising resistor value, a lot of modern designs don't really have anything else in that area. I'm often not able to combine anything with it when I'm cost reducing. 4.7k, sure, but there aren't a lot of those either... 2.2k is just not close enough a lot of the time (or ends up as 1k), and same for 10k. So, sadly, it often does stand alone.


Heh, I would've argued the opposite.

5.1k is about the middle of the generic "some kind of pullup" range of 1k-10k, so it's a perfectly fine option for strapping resistors or for a non-critical I2C bus.

4.7k would of course have been better because it's an E6 value (+-20 via the spec) rather than E24, but it's still a value I would expect any PCBA house to have in stock at all times.

But I agree, 1k or 10k would be the obvious no-brainer. I reckon there's probably a technical reason for it, as it does act as a voltage divider together with the Sink pullup, so perhaps there are some restrictions there with the multiple values it needs to distinguish.


The 4.7k "default pullup" is an old-school 5V TTL thing. It works really well for TTL inputs. But CMOS inputs don't really care very much, especially if they aren't toggling or if there's a bit of hysteresis on the input stage (which there often, but not always, is). There seem to be 10k resistors in every design so CMOS pullups often end up at 10k. If power savings are a concern, especially if you need a tie-off more so than a pull resistor, 10k-100k is a perfectly valid range, and I've even used 1M in extreme circumstances.

Usually 5k is a little too weak for I²C. Rule of thumb is that you want to be around 1mA, so for a 3.3V system you start at 3.3k. Generally 1.8k to 3.3k ends up being a pretty common range. More current is usually better than less current, so even at 5V where 4.7k might be OK (if you're even at 5V Vdd these days), going stronger is often a good idea. If power savings is a concern, or if timing's somehow important (did you find another touchy badly behaved I²C device? say it isn't so!) then it might be time to break out the active pullup structures (mostly current source type things). Once this is done and tested it tends to get fossilized, for good reason, so this one won't usually get swept up in a standard-effort cost reduction pass.


Interesting, thank you. That is an end of the market that I have not seen.

I wonder if PD will cause a comeback of that value as more and more legacy device refreshes move to USB-C plugs.


There's an otherwise decent shortwave radio out there that was originally charged with a micro-usb, then they released a "new" USB-C model...except it will only charge with a 5V brick because they literally just swapped out the ports. Really annoying.


Oh man, please tell me it wasn't the CC GP-7. I have the micro version and have been hemhawwing about updating it.


You mean the CountyComm? If so, I'm 99% certain that radio is a rebranded Tecsun PL-360, which is in fact a 5V. I love Tecsun, but why they would cheap out on the USB-C refresh is beyond me.

https://www.tecsun-radios.com/product/pl360-radio-receiver/


Looks more like the 368, but yeah. Good call!

Sounds like the juice may not be worth the squeeze on a USB-C refresh if I have to use an A-to-C cable for it anyway


I'd imagine that a significant portion of the shortwave radio community is capable of soldering in the two resistors.


If the board had unpopulated 0802 pads, I absolutely would be.


Is there not enough room for a through-hole resistor to just hang out in the air? Most devices I've opened seem to have more than enough room, so long as one is skilled enough with the small chisel tip.


Yeah, it's a significantly trickier proposition when the pads aren't there.

The contacts are in the connector, you just need to bring them out and get the resistor on them, which is frankly a pain I shouldn't have to endure when USB-C has been out for 12 years. None of this is rocket science, the manufacturers just aren't feeling the pain.


Only if the device's consumption is < 2.5W, which is what a USB 2.0 computer USB-A's data port limit is. Anything above that, compliance gets a bit more involved and complicated.


Yes, but that's the case with microUSB as well. In fact, refusing to work with underpowered source is easier with USB-C.


It's certainly not easier. Type-c power sink can advertise USB default, 1.5A or 3A easily. USB default is not necessarily underpowered. You still have to use BC1.2 to see if the source is actually underpowered.

If you're just a microUSB device, you'll also check based on BC1.2. And you can ignore CC/Rp check. It's actually simpler.

I guess you can assume anything advertising itself as USB default is underpowered, but then you'd be wrong.


It sure is. You can just spec it to require a USB-C 7.5W/15W source and then you can gate the operation behind a simple analog circuit and Bob's your uncle. No such way with microUSB until you implement BC1.2, which you don't have to support with USB-C (though it's certainly nice when you do).

> but then you'd be wrong

Not at all, it would just miss signaling it's not compatible with, just like with all sorts of proprietary signaling protocols out there. The point is that with microUSB you have no other way, you have to implement BC1.2 (or some proprietary spec) which is often more complex than a comparator on CC line.


Yes, that way your type-c device will also be refusing to work with many sources that can provide enough power, that is with anything advertising USB default power.

For proper detection of actually underpowered source without awful lot of false negative results, you always need BC1.2. You're just adding type-c CC pins circuitry on top maybe to detect what power is availabe in non-default-usb-power scenarios. If you just use CC pins for detection, a lot of your users will not like you, and will not understand why they can't charge your type-c port featuring smartphone or whatever with a perfectly capable 2.1A/5V charger connected via USB A-C cable.

Been there done that.


Yes, that's all true. It's also irrelevant, as USB-C devices aren't required to support BC1.2, and the same concern applies to any proprietary signaling method you won't handle. "This thing requires 15W USB-C power source" is easily understood, regardless of existence of >=15W USB-A power bricks using QC3.0 or whatever else.

Supporting BC1.2 in a smartphone won't make it any more complex than it already is (been there done that). We're talking about simple equipment here, where handling USB-C power correctly can be easily done without any ICs.


> I've also returned a few USB devices that ship with a USB-A to USB-C cable and ONLY charge in that mode...

By "that mode", do you mean "1.5A @ 5V" permitted by BC, or do you mean "3A @ 20V" permitted by non-type-C PD?

> Like, who in the hell would design a device that has a USB-C port on it where only a fraction of chargers will work on it.

Who in the hell would design a charger that can do Type-C PD but can't do either pre-Type-C PD or BC? Does the charger in question also shit the bed when a USB 1.0 device attempts to draw 100mA @ 5V? I hope not! Were it me, I'd return that crappy thing for a refund.


> By "that mode", do you mean "1.5A @ 5V" permitted by BC

Neither - OP means devices with missing CC resistors which will fail to charge with a compliant PD source. (The A-to-C cable works because it provides 5V Vbus unconditionally.)


The A-to-C cable often does not work because the resistors are supposed to be in there.

So if you are having complete charge failures, try a different cable.


That's close, but it's not quite complete. There seems to be lots of confusion here, and that's natural: It is confusing.

For just-getting-power from a USB A port into a USB C peripheral: There are supposed to be 2 resistors in the peripheral device [always], and also 1 resistor within the cable for USB-to-legacy cables[1]. That's 3 resistors, total, to get a relatively dumb USB-C equipped peripheral device to reliably charge from both USB A and USB C hosts/chargers/whatevers:

The cable itself: It gets an internal 56k pullup resistor between Vbus and USB C pin A5 -- which is the CC line [yes singular]). This resistor signifies the capabilities of the host/charger/whatever for devices that care (some do care, some do not care).

The peripheral: This minimally needs two pulldown resistors [commonly 5.1k], between each of CC1 and CC2 [yes a plurality] and ground[2]. This tells a compliant USB C host/charger/whatever "It's OK! Send the juice juice!" regardless of connector orientation.

[1]: https://www.usb.org/sites/default/files/USB%20Type-C%20Spec%... section 3.5

[bleh]: Again, it is a confusing thing. Nobody said that dealing with such flexible, ambidextrous connections would be simple. CC performs a lot of different tasks: It can be a bidirectional serial bus for active PD negotiations, and/or a resistor network for passively dealing with power, and it's the bit that performs detection of cable orientation for applications where that matters, and it probably does other stuff too.

That single little wire is clever AF. It'd be simpler to use multiple wires instead of just one, but that would take more copper. Copper is expensive, and we each save a tiny bit of money (or a large pile of money globally) by using less copper instead of more of it.


My point, which matches what you've written out in more detail, is that there's supposed to be stuff (resistors) in the cable, stuff which is often not there. There are plenty of these abhorrent cables in the wild. And when you come across one, things get weird, because some sources and sinks deviate from the standard in ways that make them work with these bad cables. Others don't do that. (I believe there were a lot more abhorrent cables in the early days, and thus began the chain of accommodation....)

So unless your cable is known-good, if you are having trouble, trying a different cable should be the first thing you do. It really does often get things working.

Contrarily, if you have identified a naughty cable, it should be immediately widlarized.


Resistors don't go in the cable. They go in the device. They indicate that the device can't negotiate voltages above 5V, so just send 5V.

USB-A has no ability to provide voltages other than 5V, so there's no need for indicating it's the max.

Not all chargers have USB-A ports. Many laptops don't have USB-A ports, so if you want to charge a noncompliant device from a laptop it won't work. Or a laptop charger, which is dedicated USB-C.


I gathered that you knew that. I'm mostly just trying to complete the picture for those following along at home, who might find some of this resistor business to be a bit weird compared to the USBs of yore.

Except the old ways were weird in unseen ways, too. Some combinations of cable, phone, and charger worked well and some barely worked at all.

We're in much better shape with USB C and PD. It's generally a good, forward-looking way of doing all kinds of things.

I just wish the cables and ports were better-marked, and that manufacturers stopped fucking around by making non-compliant stuff, and that there were a clear way with two battery-equipped USB C devices to unequivocally declare that a particular one will charge the other (and not the other way 'round).

And yes: The non-compliant widgets should ideally be named, shamed, and Widlarized -- not simply tolerated or worked around.


A-C cable assembly always works, CC signal is connected within the cable to Vbus via 56kOhm resistor, but that's only relevant to the downstream port, not to the upstream USB-A power sourcing port which does not have access to the CC signal. Upstream port provides power unconditionally within some limits depending on port type (CDP/DCP/USB3.0/2.0 data port/...).


That's how it's supposed to work, yeah.

But there is some trash out there in the world. A lot of it, actually.

Some naughty cables work with some naughty chargers work with some naughty devices. Postel's Law in action, I guess?

Usually the best place to fix it is by getting rid of the bad cables. Usually.


> Usually the best place to fix it is by getting rid of the bad cables. Usually.

No. There is no USB-C to C cable that will charge a badly implemented device with a standards compliant charger. That is the entire point.

An USB A to C cable is completely standards-compliant and safe, even if it always supplies 5V on the C end - any standards compliant USB-C device should not activate the MOSFET on its Vbus line unless it successfully negotiates via CC.


You may wish to re-read the type-c specification, especially 4.5.2.2.3.2:

"A USB 2.0 only Sink that doesn’t support accessories and is self-powered or requires only default power and does not support USB PD may transition directly to Attached.SNK when V BUS is detected."

or 4.5.2.2.5:

"A port that entered this state directly from Unattached.SNK due to detecting V BUS shall not determine orientation or availability of higher than Default USB Power and shall not use USB PD."

or 4.5.2.2.11.2:

"The port shall transition to Attached.SNK after tCCDebounce if or when V BUS is detected."

CC detection, let alone PD negotiation is not needed. You can draw up to 2.5W right away from Vbus and be standard compliant without wiring anything to CC signals.

Of course if you try this with a DRP device like a smartphone, you'll get no power. But that's not really an issue for type-c chargers or USB A-C cable assemblies.


They mean bad USB-A to C cables with no resistor on CC line. Of course this is broken junk which will work with some devices and won't with others. I've also seen cables with resistors on both CC lines, which is also broken but in a slightly subtler way.


But it’s not what anyone was talking about. Such a cable should be really quite rare because it’s unlikely to work at all in most situations, whereas devices with USB-C ports that don’t work with PD chargers (due to a cent’s worth of missing Rd resistors) are irritatingly common, because they do work with USB-C to A cables!


Huh? It seems clear to me that this is what exmadscientist was talking about, any other interpretation just doesn't make sense.

And no, such cables would still work in plenty of cases. You usually get them by having them bundled with devices they do work well with. In fact, they always work fine with the kind of devices you mention. These cables aren't as common as USB-C-shaped junk that's missing resistors on the receptacle, but I stumbled upon them anyway and I didn't really try to.


Right. That phrase "standards-compliant" in the above comments is doing a lot of heavy lifting.

A lot of devices are not actually standards-compliant. Some are close. (This may actually be worse.)

My experience has been that if the source and sink are broken, they are often hilariously badly broken and it is pretty easy to figure out that they are the problem, if not quite exactly what they've done wrong. But if things are flaky and weird and don't really make sense, it's probably the cable. Try a known-really-seriously-actually-standards-compliantly-good cable and many problems go away, even if the source and sink aren't perfect.

(Many sources and sinks aren't standards-compliant because, even though they easily could be, they're trying to work around the other end not being standards-compliant itself, because that's what you've got to do to sell a product. So they're close but not quite there. This is not always ideal.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: