Serious Problems With USB and Ethernet On the Raspberry Pi 202
First time accepted submitter rephlex writes "The USB controller used in the Broadcom BCM2835 (which is the SoC the Raspberry Pi uses) has buggy drivers which have been causing problems for many of its users. In addition to this, the Pi can only supply an unusually low amount of current to its USB devices, just 140 mA approximately, and using a powered hub to sidestep this limit exacerbates the issues caused by the USB drivers. Even Ethernet is affected as the Ethernet controller used on the Raspberry Pi is connected to the SoC via USB. This has resulted in packet loss and even total loss of network connectivity in certain situations. Attempts have been made in the past to fix the buggy USB drivers as there are other devices which use this problematic controller. None of these attempts seem to have achieved very much."
Fix for the USB (Score:5, Informative)
If you place a 1 ohm resistor in parallel with F1 and F2, you can get the voltage drop and current higher - fixing a lot of the issues with the USB.
Re:Fix for the USB (Score:5, Informative)
Can't delete or edit...crap: Voltage drop less, and current higher - Here's the site for said modification: http://himeshp.blogspot.com/2012/07/raspberry-pi-usb-power-issues-ultimate.html [blogspot.com]
So fix it. (Score:5, Informative)
The data sheet [scribd.com] (in particular p. 203-ish) talks about the workarounds required to work around PHY bugs and other USB hardware. Doesn't look particularly complex.
Quite reliable in my experience (Score:5, Informative)
I got the Raspberry Pi while ago and this is the first time I am hearing of this issue. Of course, that is only because I haven't encountered it. So far I am using it extensively on my network without problems and it is even handling the load I throw at it quite gracefully.
It is a home VPN, DNS, Backup, File and Print server. On top of this, it is even the endpoint for my IPv6 tunnel and it runs a routing advertisement daemon to hand out v6 addresses on the network. So far it handles the v6 network load without any slowdown from my old machine that took care of this. I even threw in a USB stick to talk to 6LoWPAN devices I use at home and it works flawlessly with that too. So obviously both my USBs and the Ethernet are used up.
All this for a $35 computer that eats up a whole lot lesser energy than my old solution. Even if I had to solder a resistor to fix a problem that I haven't had, I am not sure what can beat this.
Re:Slightly exaggerated I feel (Score:5, Informative)
Indeed. And these "buggy drivers" haven't presented me with any problems for USB or ethernet so far.
The amount of current the usb port will supply was supposed to be an issue, but I tried out a wifi dongle without using a powered hub, and no issues.
I'm sure problems exist for some people, and I'm sure they'll iron them out. For my part, I've gotten more than $35 worth of utility out of mine already.
Can't get good sound on RPi. Power problems. (Score:5, Informative)
I bought two Raspberry Pi(es) to use as audio servers and have been disappointed by the sound quality. The on-board audio out's DSP has limited bandwidth so sound is down-sampled to 11 bits. Scratchy. It's not advertised so that was a let-down.
Using a USB AUDIO dongle is no-go either, because of the crappy USB drivers. Stutters non-stop. Here are oscilloscope grabs of two music samples and a 1Khz tone: http://imgur.com/a/rVR99 [imgur.com] The flat parts shouldn't be there. The only way to get good sound now is to use rather expensive USB soundboards or the HDMI output, but extracting line-level audio signals from that isn't a simple or cheap proposition.
The power design should be re-thought. If you power your Pi with exactly 5 volts, the voltage drop in the polyfuses causes early failures if you connect peripherals that have medium current demands. If you're lucky your power adapter might supply a bit more than 5 volts (5.25 is nice) and you might not experience too many problems. Me, I've soldered supply wires to test points T1(vcc) and T2(gnd) and bypassed the fuses completely.
I hope they come up with another revision, add a Low-drop-out regulator (+$2) and figure out the USB naggies.
Until then, caveat emptor.
Re:Fix for the USB (Score:3, Informative)
Apparently you don't know what a polyfuse is. Nonzero resistance, isn't useless after it blows.
Nor do you know how a regular fuse works, they have greater than 0 ohms resistance. They wouldn't blow, otherwise.
Re:It's open! But with proprietary drivers. (Score:4, Informative)
I'm assuming HD refers to hardware decode. That is on the Broadcom chip, it just has to be licensed separately. They have it on their web store for 2.40 pounds. http://www.raspberrypi.com/mpeg-2-license-key/ [raspberrypi.com]
Re:Fix for the USB (Score:4, Informative)
Ok, for the hyperpicky insignificant: a fuse should have an extremely low, reasonably constant resistance that will vary only slightly with temperature and not with current or voltage applied. Otherwise it isn't a fuse, it's something else. Thermistor, varistor, etc.
Any reasonably astute techincal person, when trying to replace a defective fuse, will ask two questions: what is the current rating and fast vs. slow blow. If he doesn't have one on hand, he may, in a pinch, replace the fuse with a piece of wire and, other than chancing a circuit meltdown (because fuses usually blow for a reason) might be able to get the circuit back online.
Nobody would ask "what is the resistance of your fuse at 100mA?" Nobody would wonder if the circuit needed a specific resistance (or capacitance or inductance) in that fuse. All three of those parameters should be parasitic at best. (That means small and irrelevant in design, sometimes relevant in practice.)
Power supply issues are overstated (Score:4, Informative)
I am the submitter of this story. I posted as "lostintime" on the Raspberry Pi forums before I was banned for the post I made in this thread: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=15320 [raspberrypi.org]
The power supply issues the Raspberry Pi has are mostly a red herring. The Pi is certainly unusually sensitive to power and can only supply a stupidly low amount of current to USB devices no matter what power supply is used, but these issues have been used as a catch-all to explain away every problem people have been having with USB and Ethernet on the Pi. This has obscured the more pressing issue of buggy drivers which I believe are the root cause of the majority of problems Pi users have been having.
Re:It's open! But with proprietary drivers. (Score:5, Informative)
For the record, you can get ARM SoCs that are almost entirely open - the TI OMAP series does a pretty decent job, and last I checked they have excellent open documentation. Sure, the PowerVR graphics crap is proprietary, but you don't have to use it - it's purely a coprocessor that renders to a framebuffer. The video output hardware is independent, open, and documented (i.e. the equivalent of an S3 VGA adapter).
Broadcom, though, is pretty much the antithesis of open documentation.
Not just buggy drivers, but bad HW design too (Score:2, Informative)
All the comments I saw when I briefly scanned the links in the article reference power issues and similar. Another huge problem is that the USB controller in the BCM2835 itself is pretty seriously deficient; it offloads a ton of work that's usually done in HW to SW instead, requiring the CPU to be able to handle interrupts at up to 8KHz, the USB frame rate. Apparently, dropping one of those will then cause issues rather than just delaying transfers. Writing good SW for this HW will be extremely hard.
Comment removed (Score:4, Informative)
$179 (Score:4, Informative)
The VIA board, at $179, is simply not in the same class. It's not an alternative.
It's for completely different projects.
Re:Slightly exaggerated I feel (Score:5, Informative)
And there are known workarounds if you need more power on the onboard USB ports - so you can drive your WiFi adapter without a powered hub.
I've soldered 1-ohm resistors over top of the USB polyfuses. This bypasses the very low current limit on those ports, but they still can't draw more than the main polyfuse will allow (700mA, vs. 140mA on the USB's).
Using a 1-ohm resistor helps prevent current being drawn too low when you hot-plug a USB device. That could cause the Pi to reboot.
MadCow.
USB driver may not be fixable (Score:5, Informative)
The USB driver may not be fixable, the jury is still out on this one. There are three key problems:
1) Documentation on the Broadcom USB controller is proprietary and is not made openly available by the Raspberry Pi Foundation.
2) The USB core for the Broadcom SoC was bought from a 3rd party, and we are told that not even Broadcom has full documentation, nor understands the driver.
3) The Foundation has discovered that the controller and its driver expect realtime response from the ARM core, and if Linux's non-realtime scheduling doesn't respond in 1 ms, a split transaction USB event can be dropped. Not surprisingly, this occurs regularly and produces lost mouse clicks, stuck keyboard keys, etc..
That's a pretty nasty combination of problems, and it means that assuming that it's fixable may not be a safe prediction. We'll have to wait and see.
For the time being though, USB and networking (which is implemented over USB) have a large catalogue of issues and incompatibilities. All boards have this inherent problem but YMMV on whether the issues bite you, as it depends on exactly what devices you have connnected and what you're doing with the board.
In addition to the above faults, the community discovered a PCB track layout error on the board which causes a proportion of the USB chips to overheat owing to an incorrect connection. It doesn't appear to be critical but wastes power and the heat may shorten board or device lifetime.
Relations are very tense on the forum, and the Foundation has banned people who express their concern about the faults.
Re:Fix for the USB (Score:5, Informative)
Direct quote on the front page, March 3, 2012:
"On our original model, weâ(TM)d assumed that only hacker-types were going to be interested. It seems we made a mistake there" -- Liz Upton
http://www.raspberrypi.org/archives/723 [raspberrypi.org]
Re:USB driver may not be fixable (Score:5, Informative)
I work in a company who does SOC and we have one our SOC that use this USB core IP.
This USB core had so many problem that we end up making it work only in full speed mode (and not high speed one). As you said split transaction don't work well (in our case we had seen irq storm that make linux freeze).
BTW we have full documentation of the chip (broadcom should have this), but the driver is so complex that it is very hard to fix/rewrite (AFAIK samsumg rewrite it).
Also for our newer SOC we used another USB IP made by chipidea, but the funny part is there were brought by synopsis and synopsis want people to buy there crappy dwc USB core...
Re:Slightly exaggerated I feel (Score:3, Informative)
I bought two PIs. One for me and one for my son. The purpose was to have a inexpensive piece of hardware on which we can learn the mechanics of embedded Linux development. I noticed all of the above problems on the boards that I bought. As a beginner, I wasn't sure if I was doing something wrong. We spent an entire Saturday working through the power issues, like the crew working on Apollo 13. We did get it worked out, but when you are learning something, it is best to learn on a platform that isn't presenting intermittent problems. The student isn't going to recognize the demarcation between their ignorance and hardware problems. If the board can't be built reliably for $35, get better chips and raise the price. In order for the board to do what is says it does, USB better provide 500ma or it isn't a USB connector. The upside to all this is that I've learned more about Linux in two weeks than I have tinkering with Linux for 10 years.