How to disable power check for Linux USB subsystem

Hello Toradex Community,

we have designed a PCB using a Colibri iMX6 SoC and an USB hub. The hub is directly powered by 5V and is configured via I2C.

In rare cases, it happens that the device is rejected in Linux because of bus power limitations. The cause is unknown to us (it does not always happen).

We tried to use the information from this site: USB: rejected 1 configuration due to insufficient available bus power | /contrib/famzah

This does not always work unfortunately.

So, is there a way to tell the system to not check the power limitations but always accept the device?

We use a customized Toradex Linux, so any hint regarding kernel configuration, kernel boot parameters or even device tree customization to achieve this would be helpful.

Thank you in advance!

What hub IC you are using? Most likely that rejection is done by hub itself.

Sorry for the long delay, I was out of office. The IC is Microchip USB2514B. Could you please explain why the chip could be responsible for the rejection? Thank you for any suggestions.

To clarify the question a bit: We are not interested in debugging the chips or USB protocol or something like that. Our question is: Can I instruct the Linux USB subsystem to accept any device, no matter what power draw it signals.

hi @crusader4

Could you provide the version of the Bsp of your module? Please share also the complete dmesg log with and without the error?

Thanks.

Hi jaski,

we use a customized variant of the BSP 2.7 (Angström v2016.12) version. The bitbake target is derived from the “console-tdx-image” target.

The problem is: It is nearly impossible to reproduce this. It only happened twice: once at the external PCB manufacturing company (BSP 2.8 default image), once in a test run with our own image.

Therefore we don’t want to investigate the problem further, but simply disable the power check for the USB subsystem.

Thank you for helping!

Regards, crusader

if you check in the chapter 4.1.1 of the datasheet, in case of over current (0.8A), the Pin PRTPWRX is disabled. This pin can be just enabled by host or by resetting the hub.

We have the same usb hub on our Colibri Evaluation Board, but we are not using the I2C Port but we are configuring the device through two pins.

Which driver are you using for the Usb hub, specially for the I2C Communication?
Could you read the register 06H: CONFIG_BYTE_1, Bit number 7 to know if you are bus-powered or self powered mode?

Final Question: Is only one device which is rejected? If yes, is this device also rejected on a PC?