Interestingly, the Rmin resistance is quoted as 3.6 ohms which is not far off the measurements takenby MrEngman on his Raspi.

Here is our exact component as a product at that site -- MINISMDC014F-2. Unfortunately the "datasheet" (using the word loosely) that they provide for that is exactly the same poor one that I linked in message #3.

Intolerance is a failure of education. Education is predicated on tolerance of the uneducated.

I hadn't actually looked the Lo Rho devices. Nice low resistance. Using these will however need a minor change to the PCB to match the different footprints and there might be a noticable price difference.

mahjongg wrote:These are USB-2 ports, only USB-1 ports are expected to only support low power (low speed) devices.

Using Polyfuses to protect USB ports is common practice, but they are supposed to have resistances in the milli ohms, so that only a few tens of millivolt drops over them at ranges a few 100mA. The only way to accomplish that is to have polyfuses that trigger only at much higher currents.

Looking at the USB 2 spec I can see no link between low power and low speed. However, USB 2 does allow the use of low power ports although this is dependent on the power source used.

If using an external AC or DC supply USB 2 ports should allow for 500mA. However, if the port is battery powered, it only need supply 100mA but can be allowed to supply 500mA if the design(er) requires it to.

Changing the polyfuses to the ones I suggested would seem reasonable. No PCB changes provided the traces on the current board can take the increase in current and probably a minimum increase in cost. And the resistance reduced from over 6 ohms to less than 0.5 ohms.

Those values seem high; if you draw 100 mA from the upper USB port (F1) you'd see a 0.75 V drop over the probably already-slightly-low "+5V" bus on the board, putting it outside the USB spec, and that's assuming F1 is still 7.5 ohms at 100 mA which is surely optimistic given how the fuses work.

Anyone with a Pi, some resistors and a multimeter wanna take some voltage measurementsacross the polyfuses at various loads?Say at 50ma (100 ohms 2 watt resistor) and at 100mA (50 ohms 2 watt resistor).Perhaps two measurements at each current should be taken, first one immediately after connectingthe load and another one a few minutes later.

MrEngman wrote:I think a major issue, however, is that most people just know the term USB and don't realise there is a low power version (max current 100mA) and a high power version (max current 500mA) so people just plug in their devices and expect them to work. And anyway how do you find out if your device is compatible with a low power port or not. There is certainly no mention of power requirements for my device in any of the documentation I seen and searched through. Then of course there are software problems to contend with as well. Making people aware if these issues is important.

What does "universal" in "universal serial bus" mean to you? I do expect my USB device to work whenever I stick it into a USB port, no matter what device that might be. Off-spec external harddrives and CD drives left aside, everything labelled USB should work in a connector labelled "USB". Are we going back to the days of parallel ports where I had to select the baud rate and transmission protocol myself or what? I shouldn't have to check on anything when I plug a plug-and-play universal device into a plug-and-play universal port

Additionally, I am very narrow-minded and can't imagine any situation at all where something bad happens due to 5v 500mA short circuit. When is honestly the last time your USB key exploded on your lap and your house burned down? I understand the raspberry pi circuit board lanes are very thin; Are they dangerously thin? Will they heat up to 150°C when there is 500mA running through them? I honestly cannot know. I find the entire idea behind USB protection circuitry a bit over-the-top and I can totally understand why an average computer's USB ports can easily provide upwards of 1 amp without silly polyfuses tripping; it's all in the expectancy of everything to just work

The design constraints that matter most are the ones that make the Pi affordable for students.

To help students save money, the Foundation designed the system to run off of the nearly ubiquitous 700mA USB phone chargers, rather than force students to buy more powerful/expensive power supplies. The Pi needs power for things other than USB, so it is inconceivable for the Pi to provide 500mA to one downstream port, and downright impossible for it to provide that much power to two ports, from a single 700mA source. So the Pi ports are designed for 100mA devices. Since real world hardware has tolerances, to ensure that the systems provide 100mA to each device they are designed to work at a somewhat higher nominal current. Assuming they did their math correctly, and the parts are within spec, all Model B Pi's will be able to directly drive two 100mA USB devices, all of the time, assuming the Pi's power supply is really capable of providing 700mA at 5volts, and significant power isn't being drawn from elsewhere, such as the GPIO pins, the HDMI connector, or an excessively hungry SD card.

Given the way statistics work, this means that the average Pi can usually deliver 140mA on a port. Although, there is no guarantee that it will work all of the time.

If you survey real world hardware, you'll find a whole bunch of devices that report they need 500mA, but actually use less than 100mA, and a bunch that report they use 100mA or less, and actually draw significantly more. Companies have shipped hardware that trusted the power reports by hardware. It lead to some unhappiness.

You can attempt to drive a 500 mA device off of a port on a Raspberry Pi. The polyfuses will prevent anything from getting permanently damaged, however, it won't work until you do something sensible.

All it takes is an inexpensive 4-port powered USB hub to turn a model B, into a system with 3 open USB ports capable of supplying 500mA each. Look for a USB hub that comes with a power supply rated for more than 2 amps. You'll need one port to power the Pi. If you need more than 3 ports, buy another inexpensive powered USB hub. Alternatively, you can buy an expensive hub with more more ports and more amps.

hamjudo wrote:The Pi needs power for things other than USB, so it is inconceivable for the Pi to provide 500mA to one downstream port, and downright impossible for it to provide that much power to two ports, from a single 700mA source.

The inconceivable and the impossible are not really the topic here though.

The topic is very down-to-earth engineering, namely USB power management and protection that doesn't destroy USB voltage regulation by using far too high resistance polyfuses.

Morgaine.

Intolerance is a failure of education. Education is predicated on tolerance of the uneducated.

There seem to be a few misconceptions on why the trip value of the USB polyfuses should be increased, above 140mA its not that the R-PI should deliver such currents to the USB port, its just that the only polyfuses that have internal cold resistances low enough to guarantee normal operation of devices connected to these USB ports are polyfuses that have much higher tripping values. Its also obvious from the measurements done on these polyfuses, the ones used for the USB have internal resistances greater than 5 Ohm, while the 1100mA polyfuse on the power input is only 0.5 Ohm, that is a tenth of the resistance of the USB polyfuses.

5 Ohm is far too high for normal operation, as even at 100mA there will be a voltage drop of 5 x 100mV = 500mV = 0.5 Volt, that is twice the maximum allowable value! because it will drop the 5.00 V of the input to just 4.5 Volt, while normal 5V logic will only operate with 4.75 Volt.Obviously 6 or even 7.5 Ohm is even worse.

In comparison, the 500mA (estimated) used by the PI itself will cause a voltage drop over the 0,5 Ohm input polyfuse of only 0.5 x 500 mV = 250 mV, and that is just within the norm, (4.75V) for the internal 5V logic, but note that with an additional 0.5V drop caused by the USB polyfuses an USB device drawing 100mA will only receive 4.25 Volt!

Conclusion, the polyfuses should have (much) less internal resistance, and thus polyfuses with a higher current rating must be used, the white paper even calls for 5A fuses! Obviously even under short circuit conditions a tiny 700mA 5V adapter wont generate a 5A current, and that would mean that the fuses would never trip, therefore not removing the fault condition. A compromise must be sought!I propose that 1A on the USB inputs, and 1.5A on the power input woud be a good start.Obviously this does NOT mean that the USB ports should be described as having an 1A rating, nor that the power supply should deliver 1.5A under normal conditions, just that a short circuit current of that value will trip the fuses.

Its not strange that one fuse measures 5 Ohm, and the Other 7.5 Ohm. If a polyfuse heats up, or worse trips, its internal resistance raises exponentially, and after removing the fault (after the polyfuse cools down again) it won't return to its normal "cold resistance" immediately, instead it takes hours for this to happen. Perhaps the 7.5 Ohm version has been moderately warm for some time before the measurement.

Last edited by mahjongg on Mon May 14, 2012 11:04 pm, edited 1 time in total.

Before meeting the Pi I think my view of USB was pretty much how you appear to view things although I don't think I would expect the USB ports to output anywhere near 1A. Now though is has changed somewhat.

Using Windows, which is what I've been used to for a long time now I can plug in a device and generally it will work. If there's no driver it will generally find something on the internet, install it and away you go. Linux is not like that is it?

I think a large part of the problem may lay in the software and maybe the documentation that is available (or not) depending on how you look at things. Looking at the USB spec current supply is measured in units - 1 unit being 100mA. A high powered USB port can supply upto 5 units, i.e. 500mA. All devices start using 1 unit (100mA) and if they need more they send some sort of request for it to the host port. I'm not totally sure how that is done but if a port cannot supply the current needed then a device should probably be turned off and a message output by the software to the screen to make the user aware that they should plug the device into a hub. That is if the software can detect more current is needed. There is info buried in the device status registers somewhere that indicates the maximum current it uses and I'm unsure whether this is used to tell the USB port it requires more power or the device sends some sort of request to the hub.

Telling the user that the device needs to be moved to a hub rather than just crashing or hanging or some other such bad behaviour would be an improvement.

Alternatively change the fuses as I've suggested to allow the higher current limit or you could of course solder a piece of wire across each fuse and remove the fusing completely, which I must say I do not recommend. With no fuses a short across the power is unlikely to set the board on fire, just don't ask me to try it and see if it does, but almost certainly will burn out the PCB traces.

Just try to remember this is a Pi you are now using not some PC with a huge motherboard, a load of peripheral cards and 4/5/600 watts or more PSU.

Before meeting the Pi I think my view of USB was pretty much how you appear to view things although I don't think I would expect the USB ports to output anywhere near 1A. Now though is has changed somewhat.

Using Windows, which is what I've been used to for a long time now I can plug in a device and generally it will work. If there's no driver it will generally find something on the internet, install it and away you go. Linux is not like that is it?

No do not go blaming Linux for this hardware problem, linux has nothing to do with it!Even if the PI would be running Windows The same problem would occur.It isn't that the problem occurs when you draw more than 100mA, even with low power devices such as keyboards there is a problem. So it makes no sense to "warn the user when using a 200mA device", as a 100mA device can also cause problems, just not as severely.

Linux also supports USB power metering, just like windows, it just that the PI has no way to tell the software that a problem has occurred, it has no power monitor chip.

Also nobody is saying you need a "higher rated power supply", 700mA should be ok for normal operation, unless obviously you power two extremely power hungry USB peripherals directly from it, but for that you have powered USB hubs.

Before meeting the Pi I think my view of USB was pretty much how you appear to view things although I don't think I would expect the USB ports to output anywhere near 1A. Now though is has changed somewhat.

Using Windows, which is what I've been used to for a long time now I can plug in a device and generally it will work. If there's no driver it will generally find something on the internet, install it and away you go. Linux is not like that is it?

No do not go blaming Linux for this hardware problem, linux has nothing to do with it!Even if the PI would be running Windows The same problem would occur.

Linux also supports USB power metering, just like windows, it just that the PI has no way to tell the software that a problem has occurred, it has no power monitor chip.

Also nobody is saying you need a "higher rated power supply", 700mA should be ok for normal operation, unless obviously you power dozens of power hungry USB peripherals directly from it, but for that you have powered USB hubs.

I'm certainly not blaming Linux for this particular problem but there are issues with device drivers or the lack of them and other apparent USB software problems that have been mentioned often enough in various other posts which don't help.

As far as the PSU is concerned as you say 700mA should be OK provided it is of good enough quality. Again unfortunately many are not. As far as I was concerned I was using a powered hub to power my Pi and that appeared to be OK as I had no major issues but after taking a few voltage measurements I found it didn't supply a sufficiently high enough voltage as I found to my amazement. TP1-TP2 was usually about 4.68v, although sometimes even a little less, and the USB voltage to my wifi adapter was going down to around 4.2v but most of the time the Pi remained working remarkably well. I have since turned to an old switched mode supply I found in the garage and can adjust the voltage out of it to give 5v across the test points and my Pi is now very stable.

Obviously however the current situation with the resistance introduced by the fuses is a serious issue and needs addressing. Just changing the main power fuse to 2.6A and the USB fuses to 750ma would make a tremendous difference. Looking at all the various numbers published so far the resistance between main power in and the USB power pins is somewhere between about 5.5 ohms to about 8 ohms which is really ridiculous, with about .3-.5 ohms of that being the main power fuse. Using the fuse values I've suggested would drop that to probably less than 0.05 ohms for the main power fuse and less than 0.5 ohms for the USB fuses a very substantial improvement.

As far a Linux is concerned It has been more than 15 yrs since I have used it but once I get back into it my view of it is very likely to improve and maybe I'll even try some driver development again, although unfortunately Pi doesn't have a SCSI interface.

I would like to see somewhere explained more clearly what design considerations are involved in fusing USB ports downstream of a (for example) 5V 1A power supply that is already UL listed. Or for that matter, any microUSB-connected power supply sold on ebay. The Pi has a main input fuse F3 and then a secondary output fuse F1 / F2 on the USB ports. If we replace F1 & F2 by a 0-ohm jumpers, what safety hazard does that present? I'm prepared to say "none" but would be interested to hear the argument.

I'm not counting someone hacking in a high-current 5V supply to the GPIO pin and then having a shorted USB device burning a PCB trace that way.

Worth noting is that someone had already reported a melted microSD card in a Pi, due apparently to a fault inside the card, so the current Pi design already allows that type of hazard. But as far as I know, most other SD/uSD card readers permit the same. viewtopic.php?f=6&t=5464

Last edited by jbeale on Tue May 15, 2012 1:32 am, edited 1 time in total.

MrEngman wrote:As far a Linux is concerned It has been more than 15 yrs since I have used it but once I get back into it my view of it is very likely to improve and maybe I'll even try some driver development again

You'll be glad to hear that Linux today has transformed quite dramatically from what it was 15 years ago. I've been using Linux since it was invented (and prior to that many other flavours of Unix), and I think it's fair to say that over the last 10-12 years Linux has undergone a quantum leap from "cool O/S for techies" to "best in class O/S for professionals". That doesn't mean it excels in all niches, and a few parts of it are truly bad, but then the perfect O/S for all platforms and all users doesn't exist. That notwithstanding, Linux is I think the nearest thing to a universal O/S so far.

Unfortunately ARM lags substantially behind x86 in the O/S quality stakes, and that's as true for Linux as for everything else that runs on ARM. The open source compilers and other tools just haven't been exercised as much on ARM, and the lack of standardization in the embedded space has meant that driver support is meager except when manufacturers have stuck to class-compliant designs. It's somewhat early days for ARM still.

On the bright side, isn't it fun to be an early adopter? ... Tick one: Yes: __, No: __

Morgaine.

Intolerance is a failure of education. Education is predicated on tolerance of the uneducated.

Those values seem high; if you draw 100 mA from the upper USB port (F1) you'd see a 0.75 V drop over the probably already-slightly-low "+5V" bus on the board, putting it outside the USB spec, and that's assuming F1 is still 7.5 ohms at 100 mA which is surely optimistic given how the fuses work.

That's probably why nothing on the USB side works, I'm returning the pi to RS for replacement.

Morgaine wrote:Unfortunately ARM lags substantially behind x86 in the O/S quality stakes, and that's as true for Linux as for everything else that runs on ARM. The open source compilers and other tools just haven't been exercised as much on ARM, and the lack of standardization in the embedded space has meant that driver support is meager except when manufacturers have stuck to class-compliant designs. It's somewhat early days for ARM still.Morgaine.

Really? Bearing in mind that Arm Linux is running in the vast number of smartphones (and dumb ones), as well as innumerable other devices. These devices HAVE to work properly, so get more testing that x86. That makes me think its probably more exercised than x86 linux. Driver support also doesn't seem to be a problem - 'x86' drivers usually just recompile.I would agree with the lack of standardisation, but that's a HW issue, not a Linux issue.

Volunteer at the Raspberry Pi Foundation, helper at Picademy September, October, November 2014.

Does'nt appear to be available any longer However I'm not sure what my 15000rpm SCSI drives would make of it. They'd probably tend to doze off waiting for the data to be transfered. No disrespect to the Pi of course.

jbeale wrote:I would like to see somewhere explained more clearly what design considerations are involved in fusing USB ports downstream of a (for example) 5V 1A power supply that is already UL listed. Or for that matter, any microUSB-connected power supply sold on ebay. The Pi has a main input fuse F3 and then a secondary output fuse F1 / F2 on the USB ports. If we replace F1 & F2 by a 0-ohm jumpers, what safety hazard does that present? I'm prepared to say "none" but would be interested to hear the argument.

I would expect one of the primary reasons for fusing the USB port is to protect the Pi from excessive voltages being input on the USB ports. On the main power input there is the fuse F3 supplying 5v to the Pi and the transient-voltage-suppression diode D17 (TVS) between 5v and GND. The TVS is usually used to protect from voltage spikes and provide ESD protection. If however a higher than normal constant voltage is supplied to the main power input the TVS will limit the voltage and in doing so will produce excessive current through the fuse and trip it. The same situation applies to the USB power pins. Normally power is output on the USB power pins but if something is connected that feeds excessive voltage back into the Pi the TVS will limit the internal voltage and cause the fuse to trip.

There are possibly other reasons - could be part of the USB 2 spec to provide over current protection. Don't know about that but if it is removing the fusing would probably mean it could no longer be called USB 2.

I would be quite happy to live without the fuses, all 3 of them. But in terms of protecting the Pi from usually unintentional excessive voltage inputs they are pretty useful. Its just unfortunate the current ones have such a high resistance.

MrEngman wrote:If however a higher than normal constant voltage is supplied to the main power input the TVS will limit the voltage and in doing so will produce excessive current through the fuse and trip it.

Using the breakdown voltage of the TVS, the junction to ambient thermal resistance of the package, assuming a maximum junction operating temperature of 150 degC, it can be calculated that the TVS will not withstand more than about 0.2A continuously, much less than the current needed to trip the main fuse.

If the TVS melts into a shortcut the Pi will be broken. If it doesn't it won't be able to protect the Pi against the overvoltage and the Pi will be broken as well.

MrEngman wrote:If however a higher than normal constant voltage is supplied to the main power input the TVS will limit the voltage and in doing so will produce excessive current through the fuse and trip it.

Using the breakdown voltage of the TVS, the junction to ambient thermal resistance of the package, assuming a maximum junction operating temperature of 150 degC, it can be calculated that the TVS will not withstand more than about 0.2A continuously, much less than the current needed to trip the main fuse.

If the TVS melts into a shortcut the Pi will be broken. If it doesn't it won't be able to protect the Pi against the overvoltage and the Pi will be broken as well.

All protection devices that are connected in parallel such as a TVS, Transzorb, MOV, VDR need a seriesresistance to clamp against.I have seen plenty of Transzorbs and MOVs which have simply evaporated, depositing residue all overthe PCB and the inside of the case of the item they were meant to protect.Needless to say the equipment that was supposed to be protected was not.

Been doing some more reading regarding this whole USB power thing.The way I see it is such:

USB ports are "normally" powered up but limited to 100mA.The USB spec states that when a peripheral is detected on a port, the host limits the current to 100mAinitially for several reasons. (The USB specs is a lengthy document so if you want the "simple" versionas regards power see the first page of this pdf http://www.ti.com/lit/an/slyt118/slyt118.pdf ).The host then "interrogates" the peripheral in a process called enumeration where one of the things that the peripheral can ask for is extra current up to 500mA.

The host then sets that port to 500mA and away we go.Once the peripheral is disconnected, the host detects this and the port reverts back to 100mA max.Now the question I have is:Is the driver that deals with the enumeration specially written for the Pi and denies the extra current?Or does it allow it, so the peripheral now expects to get it.Under normal conditions, the host will drive a power control circuit which ups the limit to 500mAbut since this is not physically implemented on the Pi, exactly what happens to this control line/s and where(if at all) is it/they mapped to?

Even if the host (the Pi) physically permitted 500mA, then this would still be limited by the 140mA polyfuses.So either way, the USB ports on the Pi are not 100% USB compatible and thus do not conform to theUSB specs.

Last edited by Dave_G_2 on Tue May 15, 2012 3:53 pm, edited 1 time in total.