Power arduino with USB 5v.

To not bypasses the auto-sensing/voltage protection method by applying 5V to Vin I power arduino with USB 5V. If I power it with barrel jack or with USB from PC all are working fine but if I power it with USB connected to 5V 3A external power supply SD card fails to initialise. I tested with multimeter and it is 5.2V which is ok. Modules are always powered by external power supply. Why is this happening

while (!SD.begin(4)) {
   Serial.println("Card failed, or not present");

Post details of the 3.3v supply. What do you use for that when it works?

It is voltage regulator LD1117 3.3V 800mA. I measured the voltage on SD card for both cases and it is same 3.3V. Also I tested 2 SD cards.
On PC that is working Vcc=4.9V, D- =0.9V, D+=2.9,
On external power adaptor that is not working Vcc=5.4V, D-/D+ unconected
On external power supply phone charger that is miss working Vcc=5.4V, D-= 3.3V D+=3.3V. It is very strange