Forum

Full Version: RPi2 USB power: is there a conclusive answer?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,
I know that this is probably hardware related, but still some of you could give a good advice or opinion.
I have been browsing the web, and I am seeing contradictory statements on non-powered USB HDDs:
One says that it should work if the power supply is 2A, if it is of a good quality and if one of these two lines (usb_max_power=1 or usb_max_current=1) is in the config file.
Another one says that it will not work, even with the best power supply, and that a powered USB hub is necessary.
In my case (RPi2 with XBian 20150407-0) I have tried to investigate the thing. I have run these commands:

Terminal
xbian@XBIAN ~ $ usb-devices | grep 'Product=\|MxPwr'
S: Product=DWC OTG Controller
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
S: Product=External HDD
C: #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=2mA
xbian@XBIAN ~ $ lsusb -v 2>/dev/null | grep -e 'MaxPower' -e 'Bus [0-9]'
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
MaxPower 2mA
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
MaxPower 0mA
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
MaxPower 2mA
Bus 001 Device 013: ID 1058:1003 Western Digital Technologies, Inc. Elements 100
MaxPower 2mA

I don't know what the "2mA" values mean here (if two Ampères are being provided by the power supply to the RPi2 or if there are two Ampères on the USB ports or only that these USB ports can supply up to two Ampères). So is this command output saying that the power supply is working as expected or not necessarily?
Then I added the below shown lines to the config, alternating the hash symbol on two different boots. But still I cannot use a non-powered HDD or CD-ROM (it's fine on a powered on a powered one, the above shown Western Digital, or on USB keys):

Terminal
xbian@XBIAN ~ $ less /boot/config.txt

#initramfs initramfs.gz 0x1000000
gpu_mem_1024=256
gpu_mem_512=144
gpu_mem_256=100
initial_turbo=3
hdmi_ignore_cec_init=1
disable_overscan=1
disable_splash=1
#usb_max_power=1
usb_max_current=1

What do you think?
There is only one answer:

External non-powered HDD's and CD-ROM's are usually working beyond the USB2.0 limits (which only allows 500mA). So, connecting such a device may work, or not. You always have to try it

usb_max_current=1 doubles the current which can be delivered to the USB ports. So if the power supply is good enough and the current consumption is hot higher than the current allowed by the onboard fuse, again, it may work or not.

The 2mA value is the maximum current the USB device will consume from the USB port and has nothing to do with the power supply or the max current which can be delivered by the USB port

In my case (a WLAN and a DVB-C stick is connected) I get

Terminal

Bus 002 Device 002: ID 0cf3:7015 Atheros Communications, Inc. TP-Link TL-WN821N v3 802.11n [Atheros AR7010+AR9287]
MaxPower 500mA
Bus 001 Device 003: ID 0ccd:008e TerraTec Electronic GmbH Cinergy HTC XS
MaxPower 500mA

both devices reports max current of 500mA. But, if I connect one of these devices without parameter usb_max_current=1
to the RPi2, it won't work.
I had two external HDDs and a WIFI stick connected to my Pi 2 and it worked for the most part after setting
Code:
usb_max_current=1

But I faced occasional freezes and reboots from time to time, so I assume this was already a very close call and have now moved to a powered hub for the HDDs
This is a very serious issue, I do not understand it very well yet. But thanks to you everything becomes clear.
bitpim alternative
Where do you put the usb_max_current=1 setting?
I see other threads mention /boot/config.txt -- but I don't see such a file.

I made a /boot/config.txt and added
usb_max_current=1
but it does not seem to have changed anything.
(20th Jun, 2018 08:16 PM)parsifal9 Wrote: [ -> ]Where do you put the usb_max_current=1 setting?
I see other threads mention /boot/config.txt -- but I don't see such a file.

I made a /boot/config.txt and added
usb_max_current=1
but it does not seem to have changed anything.

I believe its "max_usb_current" and on my Pi it says its obsolete:

Terminal
xbian@avr ~ $ cat /boot/config.txt
# When adding this line the USB power manager will change its output current
# limit (for all 4 USB ports combined) from 600mA to double that, 1200mA.
# Obsolete and enabled per default on newer kernels
max_usb_current=1

EDIT: I believe GPIO38 state is controling this:

Terminal
xbian@avr ~ # wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-gpio/raspi-gpio_0.20171123_armhf.deb
--2018-06-20 18:24:05-- http://archive.raspberrypi.org/debian/pool/main/r/raspi-gpio/raspi-gpio_0.20171123_armhf.deb
Resolving archive.raspberrypi.org (archive.raspberrypi.org)... 46.235.227.11, 93.93.128.230, 93.93.130.214, ...
Connecting to archive.raspberrypi.org (archive.raspberrypi.org)|46.235.227.11|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8968 (8.8K) [application/x-debian-package]
Saving to: ‘raspi-gpio_0.20171123_armhf.deb’

raspi-gpio_0.20171123_armhf. 100%[==============================================>] 8.76K --.-KB/s in 0.001s

2018-06-20 18:24:05 (6.88 MB/s) - ‘raspi-gpio_0.20171123_armhf.deb’ saved [8968/8968]

Terminal
xbian@avr ~ # sudo dpkg -i raspi-gpio_0.20171123_armhf.deb
Selecting previously unselected package raspi-gpio.
(Reading database ... 30963 files and directories currently installed.)
Preparing to unpack raspi-gpio_0.20171123_armhf.deb ...
Unpacking raspi-gpio (0.20171123) ...
Setting up raspi-gpio (0.20171123) ...

Terminal
xbian@avr ~ # sudo raspi-gpio get 38
GPIO 38: level=1 fsel=1 func=OUTPUT
(20th Jun, 2018 08:16 PM)parsifal9 Wrote: [ -> ]Where do you put the usb_max_current=1 setting?
I see other threads mention /boot/config.txt -- but I don't see such a file.

I made a /boot/config.txt and added
usb_max_current=1
but it does not seem to have changed anything.

The parameter is max_usb_current, and in the meantime setting this parameter to 1 is obsolete because already set to 1 per default.

You should have a /boot/config.txt. Make sure that /boot is mounted
Reference URL's