Raspberry Pi admits to faulty USB-C design on the Pi 4
arstechnica.com
arstechnica.com
However, it damages the purpose (in name) of USB C. Isn't C supposed to be the 'all purpose' spec? If we have popular manufacturers failing to follow the spec, we end up with cables marked as 'compatible with Raspberry Pi' or 'compatible with Nintendo Switch'. To the average consumer (and even most techies), USB C was supposed to be the 'one size fits all' connector. We're slowly heading in the opposite direction.
"There are 14 competing standards"...
Why design them to fit together if they won't always work right?
I too don’t understand dynamic typing. ;)
In my experience, finding the right cable has never been an issue. All the USB-C devices I've bought came with a suitable cable in the box.
My wife wanted a charger with a longer cable for her phone. We need it to be able to fast charge, which is called a variety of different names on both the phone and charger sides. Can I get the $10 charger, or do I need the $40 charger the size of the MBP charger?
We ended up just biting the bullet and getting one of the more expensive, MBP-charger-shaped chargers, since I have laptops that use USB-C - but it was a confusing mess, and I still wasn't really sure fast charging would work on her phone till I plugged it in the first time.
If your phone can only charge at 10 watt (5V / 2A), why would you use a stiff, heavy 100W cable to charge it?
Which is fine, until you need you need a new cable. When I lost the cable for my phone, finding a cable I could trust was a pain.
USB-C is designed for graceful degradation.
There are two main types of non-captive cables: USB 2.0 only and USB 2.0 plus USB 3.x. Hosts and devices have to support at least USB 2.0, so if you try to connect two USB 3.x devices with a USB 2.0 only cable, it'll fallback to a USB 2.0 connection.
There are two main current levels: 3A and 5A. Cables which can carry higher power have a small chip describing this fact; if the chip is missing, the power source will limit itself to 3A.
Then there are the alternate modes. If you try to plug a device which only understands an alternate mode (for instance, a DisplayPort adapter), and the host doesn't understand that alternate mode (or can't understand it, like in the case of a USB-A port with a USB-A to USB-C cable), that device will instead appear as an USB 2.x device (the "billboard device"), which the operating system can use to show an error popup.
And so on. At every corner of the spec you can notice an interest in making it degrade gracefully. Of course, that can only work when the manufacturers follow the spec correctly.
I could see making a mistake like this. The earlier USB specs called for goofy things like grounding the shield to the enclosure entrance via parallel RC networks instead of bonding it properly, as well as adding various bypass capacitors to the data lines(!). These guidelines were poorly thought out, widely misinterpreted and even more widely ignored. They have conditioned engineers to make their own judgment calls in areas where they really should have been both more descriptive and more prescriptive, so maybe this is one of those cases.
I haven't looked at the post-USB 2 specs at all but wouldn't be surprised if they are nowhere near as clear, unambiguous, and well-thought-out as people here are saying.
If they'd instead specified that every detachable USB C cable must be 40 Gbps / 100 watt capable, and any lower-spec cable must be captive to the device (like mouse and keyboard cables are) then this problem wouldn't have happened.
If you are specifying that every cable is going to be $30 minimum, then your spec is dead from day 0. The USB-C committee has to balance a spec that will be used by a significant chunk of the planet, not all of whom can afford expensive cables.
If all USB-C detached cables had to meet full-spec then there would be price competition.
Given this has happened time and time again, it seems like a process flaw more than a document flaw. Maybe well-meaning people just make mistakes. Or maybe people knowingly cut corners to save money (because saving on parts is a pressure that will never go away). Or something else.
So some sort of process fix seems to be needed, one that will (1) reward those who succeed and/or (2) punish those who try to get away with violating the spec and/or (3) create tools (like test equipment or certification services or processes) to make compliance easier to achieve for those who are trying to.
So, for example, could the Pi people have used some kind of device that would plug in and run through all the combinations? Or could there have been a canned list of test cases (representatives of different types of chargers, how they should behave) they should have run? Or could they have sent a prototype device off to USB Shouldn't Suck Labs to have them test it? Or email a schematic to them to have it reviewed by an engineer?
I wasn’t aware there were different specs until a few weeks ago. I’m sure the rpi4 was in development since last year. They should have tested more cables, maybe they can fix it somehow.
Given the problem description (wrong number of resistors), I doubt that they'll be able to fix it in the existing boards. I don't know how feasible it is for them to retool, but maybe we'll see a model 4.1 with an additional resistor show up at some point.
That would have been right in line with demanding that everyone buy 65,536 IDs at a time for thousands of dollars while attempting to prohibit resale.
Obviously not, since there is a way to get it almost right, which is what the Pi 4 demonstrates here. Experience from cryptography suggests that for a spec to be truly unambiguous, any deviation should make the implementation fail obviously in as many situations as possible.
I started digging into USB for a project and the rabbit hole kept going deeper and deeper; I never fathomed the amount of complexity hidden under the hood of USB until I needed to start talking to a Qualcomm modem on the other side of a USB 3.0 connection (and the modem, even though it is a single device, enumerates 16+ USB 3.0 endpoints, which is a problem for a lot of ARM SoCs, or at least the vendors we tried!).
Composing simple devices in a hierarchical address is much better than the old complex devices that had everything explained on the same datasheet, but it had 300 pages and no two devices were alike.
7 bits even parity? 8 bits no parity? hardware or software flow control? how do I know the modem is connected? lots o' fun!
The specs weren’t that simple (why would a serial port connector need 25 wires?).
It’s more the implementations that were simple, going down to 5, 3 or even 2 wires (https://en.m.wikipedia.org/wiki/RS-232#3-wire_and_5-wire_RS-...)
I'd assume there are a bunch of reference designs, probably provided by the USB consortium itself, which should make it unnecessary to know anything about the spec to produce a USB C port.
The hard bit is fitting all those traces (some potentially high current) around that dinky connector with 24+ ground pins - with many all trying to do the swap thing at the same time
And yet people keep saying USB-C will get better, the controller will get better, the quality of USB-C cable will get better. And Time and Time again it has proved vendors only care about cost, not quality.
Maybe people remember the beginning of USB. No cable marked charging/data but some are charging-only. Different resistances interfering with charging. USB 1 hubs pretending to be 2. It was all sorted out with time. Now USB 2 seems like magic that just works everywhere, but it really used to suck. (The experience, not the tech itself)
In fact, you can buy lightning connectors that will destroy your iphone.
Poor quality implementations in order to save costs have nothing to do with USB-C vs Lightning.
In fact, because Apple charges so much to be able to build official lightning devices, people are more likely to go with unofficial cables from unknown brands. At least USB-C cables and chargers are a lot cheaper for reputed brands to manufacture officially.
"The Figure 4–9 I posted above isn’t simply a rough guideline of one way of making a USB-C receptacle. It’s actually normative, meaning mandatory, required by the spec in order to call your system a compliant USB-C power sink. Just copy it."
The reason this is wrong on the Pi is not because of "a huge matrix of incompatibility", but of ignorance to a mandatory design spec that is provided to everyone already.
It seems to parallel crypto from a high level. Yes, USB-C can be complex. But they did the hard work here so: don't roll your own and use this free and complete reference implementation.
RISC-V, is that you?
Well, didn't seem that way to me when I bought an RPi4, tried it with two different power supplies and cables, and it didn't work at all. I thought the device was DoA so I did an RME with the distributor.
Today I learned a different story, and now I'll have to scrounge up yet another cable to see what the true story is. The one cable I have not tried may or may not be "dumb" enough for the RPi4 to work.
It's annoying at best.
At least the "dumb" cable I use in the car with my phone is dumb enough to feed power to the RPi4 anyway, so I'm going to keep the device and just remember to only use it with cheap, dumb cables.
I was very confused a few days ago when I plugged it into the MacBook Pro power supply, thinking "this ought to have more than enough juice for the Pi" - except the thing stayed dead and silent altogether. :)
Surely a not insignificant number of customers have MacBooks? If I was writing some test specs this use case would almost certainly feature, given the MacBook Pro's USB C adapter must be one of the most widespread high power USB C charger designs in existence. Especially when the stock device does not ship with a power supply, not like it was unforeseeable some customers would just use the chargers they already have.
The key point here is the standard charger design used on almost all laptop models from the world's 4th largest computer vendor. In my experience laptops from the top three have nothing close to the level of standardization in their charger design, given none of the top three have standardized solely on USB C for laptop charging. It was entirely foreseeable many people would try this and be disappointed when it didn't work.
"Good, low-cost USB-C power supplies (and USB-C cables) are surprisingly hard to find, as we discovered when sending out prototype units to alpha testers"
In hindsight that reads that they tried a bunch of off-the-shelf cables and were perplexed about why some of them didn't work.
So they built their own official power supply that worked around the design flaw.
[0] https://www.raspberrypi.org/blog/raspberry-pi-4-on-sale-now-...
Edit: Sure, the issue is rather easy to circumvent, but anyone would have preferred not to have it. At the very least, it affects the resale value. My point is that whenever the answer to the question 'do I need it absolutely right away?' is no, it's better to wait a bit, no matter how much you intend to buy it at some point.
- Bought the most basic kit that included a power supply and heat sinks
- Bought a $10 acrylic case with a fan so cooling also is not an issue for me
Is this untrue in the world of USB C? I haven't experienced any oddities yet with my Pixel 2
No, check the article for an explanation.
USB-C is a phenomenally complex system from an engineering perspective, serving at least three masters (compatibility, power delivery, and enhanced performance). As these systems go through the standards process you have vendors designing silicon in anticipation and engineers designing circuits. Not surprisingly, I have met just as many EE's who 'design by looking at something that does something similar' as software engineers who start with code that does something close and hack it into compliance.
Actually taking the time to develop an understanding of the complex system after it has made it through its final standards ballot, and then build systems with it take too long in today's market. You would bring something to market 3 to 5 years after the first products hit and were probably establishing defacto standards.
So the business side pushes to get something out, the engineering side learns just enough to get it to work in their lab, and the trademark validation/usage process is new/non-existent. As a result you will see early products that are broken in various ways until the collective knowledge and number of correct examples reaches the tipping point. After you reach that point future designs will likely work reliably because the chance of everyone involved having enough examples to start from is high, and compatibility issues will have been publicized and thus written into the book of "things not to do."
If you're building a product based on Raspberry Pi that you're selling to others, then sure I could understand the outrage.
Fortunately in this case it fails to 0V so it's not a dangerous or damaging failure, but still the spec literally hands you a schematic. Is it that hard to just copy it? Why did they even try to be clever and use their own design in the first place just to save a single 5.1k ohm resistor?
See also: People who like to get all creative with encryption library implementations in commercial settings. If implementing a standard protocol, unless you have a very good reason otherwise, you should;
1. Go and find the guide by the people who designed it.
2. Read the guide and make test thingies till you are sure you understand it.
3. Now go and do what the guide tells you to do.
$0.02 x 1E6 = $20k
If you are the circuit designer making, say, $150k, you just justified about a month of your salary (after accounting for benefits and other overhead). Your manager may parade you in front of the team at the next big group meeting as an example of how to achieve the BOM efficiency the company need to hit profit margin targets.
Seems like a really questionable cost-savings maneuver to switch to a way more complicated & expensive connector for nearly no reason, and then penny pitch on one resistor.
Also, SMT resistors at that quantity level are more like 1/10 of a cent, not 2 cents, and the PnP machine is running anyway. In fact you often end up using more resistors than strictly necessary, just because the machine holds a limited number of reels and it's cheaper to use more of the same part to arrive at a desired value than to add a new line item.
Things should be as cheap as possible, but no cheaper. Optimizing the cost of individual resistors is almost always a classic example of measuring the wrong thing. We should strive to avoid making excuses for doing that.
I 100% expect the SBC to work with any combination of charger and cable. I have lots of existing cell phone charges and cables so unless I were purchasing this for someone else I don't think I would consider ordering the branded raspberry pi charger/cable.
Compatibility with existing cables is a big deal; I won't be ordering my Pi 4 until sometime after this is resolved.
But it still worked with just a sufficiently powerful PSU, while the Pi 4 requires something implementing the USB-C standard. Honestly, I'd prefer a round plug I could use with a 12V PSU.
Have a hard look at the simple 'how can anyone possibly get a piece of wire wrong' cable, or even better test it.
It's enough of a usability fail that I won't buy one until it's fixed.
wohoo. Glad I waited. Hoping they make some incremental gains on the heat situation too
[1] https://medium.com/@leung.benson/how-to-design-a-proper-usb-...
Now, you are very likely to say something like "but the spec diagram is a correct circuit diagram and the engineer should be expected to comprehend and correctly implement a circuit using it." And you're not wrong. But unfortunately, as is clearly evident by the frequency of failure to convey the intent of the spec, this expectation is too great. It shouldn't be but it is. That's a difficult thing to accept. For many it is simply impossible to accept. But yet that's the cold, simple truth and standing on ceremony doesn't change it.
When it costs money, in the form of lost sales due to disappointed customers or excessive support costs, "better" (as in more concrete, prescriptive) circuit diagrams are provided. One can see this in the datasheets and application notes from successful component manufacturers. They do this because they have to take the calls when engineers misunderstand things or need their hand held. They do this because they hear from managers and executives when their products are not "easy" to integrate.
Standards authors don't feel this pressure, so the subtle and easily dismissed gap between what appears in standards documents and what people actually want (and therefore pay attention to) is wider. What is wanted is something that appears nearly indistinguishable from what the engineer would expect to see while using Altium or Eagle or KiCad or some other commonly used EDA tool, and not a specification sufficient generalization.
If you want to complain something about the product, I think unfinished software would deserve more attention. The current desktop performance doesn't reflect the capabilities of the system. I guess it'll significantly improve once OpenGL ES 3.2 (and hopefully Vulkan!) drivers will be complete.
Other minor issue I had was RPi4B not recognizing the HDMI display. I had to manually force it and this caused loss of HDMI audio. Using the official Raspberry Pi branded micro-HDMI cable.
I hope Raspbian will eventually have a 64-bit version. Out-of-order cores can benefit from more registers in 64-bit mode. More registers allows the compiler to reduce true and false dependencies, leading to faster code execution.
CPU wise it's nice, quad Cortex A72 is a huge boost compared to A53. Hardware accelerated omxplayer can play 4K HEVC content nicely. USB 3 ports have up to 4 Gbit/s bandwidth, and it's not shared with the now truly full speed gigabit ethernet.
I'm very happy with the product. RPi4B is a very capable system for its price. And it'll just get better over time.
That's um... awful.
Also, other cables may have chips in them for data negotiation, specifically TB3/PCI encapsulation (the data rate is so high that over 6 inches you start to run into issues).
I'm looking for a word... worse than awful...
Power plug compatibility which relies on software for fire safety is a bad idea.
I literally don't understand your proposed alternative unless you're saying all cables should be spec'd to handle the max amount of voltage... in which case people would still under-design.
If the fuse is designed to keep cables for some voltage X from going up in flames, how will it keep cables for some voltage X-Y from going up in flames while also allowing Voltage X, when both are in spec?
But I really would not trust all the no-name vendors flooding the market with shitty USB cables to include correct safety measures in all of their cables, so requiring cables to specifically request higher power levels seems like a better precaution to rely on in this case.
(b) USB-C has several modes of operation. The thinner cables aren't under-speced in the lower-tier modes. They're perfectly fine for powering a mouse or carrying low-speed (USB 2.0 class) data. But not for charging a laptop, or other high current / data-rate uses.
Then, it does negotiation with the cable and the device to insure that it can provide the voltage the device needs.
And yes, PSUs MUST negotiate voltage or be 5V only and all USB-C devices must accept at least the 5V voltage.
Are they going to change the boxes and their product spec to remove USB-C from it when they are not USB-C compliant?
there are references to an 8gb model already so no need to act surprised when they do launch it
Maybe a smarter move would've been to bundle the Pi-4 charge (non E-cable) to avoid dissatisfaction with this mis-design ..
it sucks but it's not a deal breaker.
I can see how this would be discovered quickly, since a lot of the early purchasers of the pi4 probably tried to power them up using the nearest USB-C power source at hand, which was their laptop's power adapter.
If you use a USB-C phone charger or any of the cheaper USB-C power sources intended to power things under 20 watts, it shouldn't be an issue. But they definitely do need a new board revision.
Mine, that can charge my gpd pocket can barely power my pi4.
I still see the yellow lightening bolt which indicates a "poor" power supply - which is just plain lying.
It doesn't matter how cheap their charger is, no one should need to even buy one. RasPi botched their USB-C implementation, and the solution to that is not "buy yet another charger", it should be "we're fixing the design immediately, and it's going to cost us a fair bit but you can send your board back to get it replaced"
Edit: I'm serious. What convinced them to implement a design different from the example in the spec that simply does not work (hello, testing?)?
I don't think a long and imperfect specification is a good excuse for getting this one wrong -- since this specific part of the spec is a MUST and accurate.