Hi,
We are developing an HealthCare IOT product using AM335x processor & SDK8 software.
We are using USB in OTG mode for following purposes
1. for connecting the SmartPhone using USB tethering
2. for connecting Pen drive (Mass storage device)
3. eMMC flashing using USB RNDIS mode & Uniflash tool
In first two cases, USB port on AM335x acts as USB host. In the USB host mode, we have a USB switch to limit the VBUS power to 150mA.
In USB tethering mode, setup always fails with VBUS ERROR with Over Current condition.
After analyzing the issue and USB packet captures on CATC analyzer, we wanted to understand a particular behaviour in the Linux mUSB Stack.
Behavior:
- In the CATC analyzer, we found that the Mobile phone is requesting for 500mA power through Configuration Descriptor request.
- We have configured the maxPower to 150mA in Linux mUSB stack
- After receiving the configuration descriptor, Linux mUSB stack should reject the configuration as it cannot give 500mA as per USB 2.0 Specification. But it is observed that Linux mUSB stack is accepting the configuration by sending SET_CONFIGURATION request.
- Because of this, Mobile phone starts sourcing more current and end-up in VBUS Error.
Questions:
1. Is this condition be avoided by some changes in the stack?
2. Or is it that we need to provide the 500mA power (minimum) in hardware to over come this condition?
Other observations:
1. Mobile phone (MotoG and few other mobile phone) has only one configuration with 500mA power requirement. In this case, what happens the Linux mUSB stack rejects the configuration?
2. VBUS error is observed on USB Pen Drive from SanDisk, Transcend, etc. Here, it requires 200mA power.
Please let us know if you have any thoughts or suggestions.
Regards,
Kamal