I'm afraid the USB doesn't initializes because you replaced applicationstart.xml with main.xml. But maybe Igorsk can help in this. Or maybe kovidgoyal has any idea because he reversed engineered the USB protocol.
The code that seems to do this in applicationstart.xml is:
Did you try the "ten times" reset method that I posted? Maybe it will initialize the USB outside of the appplicationstart.xml. It is meant to recover from a corrupt firmware so who knows.