Raspberry why? 3 unfortunate things about the Raspberry Pi hardware design

posted Mar 30, 2015, 1:45 PM by Georges Meinders   [ updated Sep 28, 2015, 3:43 AM ]
Raspberry Pi
Are you using a Raspberry Pi B2 or thinking about getting one? Read on! Disclaimer: the idea behind the Pi is great, the community around it is amazing, the price is great, coding hardware with Python = cool, but the hardware design itself? ... meh... 

Here are some of the more common reasons why people run into trouble with the Raspberry Pi B2 due to some unfortunate hardware design choices. Also included are suggested fixes. Please comment if you have great ideas!

1. The USB power supply connector that is neither USB or power

Small USB connector for small powerBy design the RPi B2 is supposed to be fed all of its power through a Micro-B type USB connector. This type of connector implies that it respects the USB 2.0 standard for power (since it is a USB 2.0 type connector and all). This standard implies a maximum power of 2,5W per port (or 500mA current @ 5V). The RPi B2 actually draws way more than that in a lot of situations and it should even be able to draw way more (see point 2 below).  This has quite some confusing consequences for its users: 

  • Most standard USB 2.0 compatible wall adapters (such as for charging your smartphone) won't work, since they can't supply enough  power to the RPi B2 at a stable enough voltage. This will cause the RPi B2 to crash. 
  • Most standard (cheap) USB 2.0 cables can be problematic as well as the Micro B connector on the Pi itself; again these are designed to provide a stable 5V @ 500mA maximum. Not more than that. The consequence is that in some cases the voltage may drop when drawing over 500mA adding to unstable behavior
  • To make things even more unpredictable and unstable the RPi input power is limited by a poly fuse at it's input port. This polyfuse will also cause the voltage to drop as more power is drawn (anything over the 700mA hold current of the fuse). When the voltage drops enough the board will crash. 

2. The USB 2.0 ports that aren't actually USB 2.0 ports

RPi USB ports which aren't USB ports
The USB 2.0 client ports on the Pi should allow a 500mA current draw @ 5V per port. Well... guess what? They don't. Not even close. 

Besides the fact that the main power supply circuit of the Pi can't deliver enough power to power all USB client ports, each of the client ports are also current-limited by polyfuses. This means these ports are not actually USB 2.0 ports as defined by the standard, as implied by the looks of the connectors and as implied by the RPi hardware wiki. 

Again this is very confusing for users and will make the RPi very unstable for a lot of folks. The RPi will (seem to) crash randomly depending on: what USB devices you plug in, how many of them you plug in, for how long you plug them in, what the USB devices are doing, length of cables, quality of cables, what the Ethernet connection is doing and on whether the Pi is processing a lot. In other words: !!@#$!#$ wat? 
A workaround to this would be to use an externally powered USB 2.0 hub... But... Come on, wasn't the RPi supposed to be cool for it's small size, low cost and easy of use? Oh and remember, only use hubs that are on the "Raspberry Pi tested & working USB hubs"... hmmm...

3. The Micro SD card reader that maybe reads SD cards... or destroys them...  

One would assume that if an SD memory card is put into an SD card reader this would actually work. Not with the Raspberry Pi... Before using or buying an SD-card for the Pi, be sure to first check the tested & supported SD-card list

But even if you do use a correct card you will eventually get into trouble when running the Pi for extended amounts of time (minutes to months). Here's why: 
  • If you remove power from the RPi or remove the SD card while it is being written to, there's a big chance the OS-image will become corrupted and will fail to boot. See point 1 and 2: this will happen (a lot) if experimenting with power-draw, (USB-)devices, GPIO and/or *cables everywhere*. 
  • The SD card is flash memory. Flash memory has a limited amount of write cycles per memory cell before it will fail. The RPi has no correction mechanisms for this. If you leave the RPi on long enough and actually use the SD card to write to during it's operation, it will fail eventually. All by itself. Withing months, according to the internet. There are workarounds though to limit the amount of "unnesesary" writes to the SD card and extend the life of your SD card a bit. Does that make RPi a really stable platform? Not really in my opinion... 

Other smaller problems

The above are some of the main problems with the RPi B2 (and other RPi's too). These are different problems however in that they don't depend on the hardware "design fails" as much, but are more general misfortunes: 

Fixing the Raspberry Pi B2 hardware design

All of the problems described above could be fixed in future hardware designs. Better yet: they can be fixed without increasing the price of the RPi. Examples of fixes: 
  1. Add pads (or a power-happy connector) for an external power supply + use a poly fuse with a much higher hold current at the input power circuit (or use multiple smaller ones in parallel) for the entire board. Specify a slightly higher input voltage than 5V to compensate for the poly fuse voltage drop(s). Place the voltage regulator circuit behind the poly fuse. Of course traces would need to be adjusted to support the higher currents. 
  2. Replace the USB port poly fuses by poly fuses with much higher hold currents and/or place some of them in parallel. 
  3. Use a type of non-error prone system memory, such as eMMC. And/or... add an SATA interface if price allows. Just... any memory that is not prone to fail after a bit of use.