Question on Android kernel USB stack

I am trying to debug and understand the USB communication happening in a USB device (as opposed a USB host which is a PC). I am thinking of choosing HTC G1 Android phone to see if I can modify the Linux kernel on it and debug the USB communication that happens when the phone is connected to the PC. But I don't have my hands on the device yet so I am not sure about certain things:

1. Can HTC G1 be connected to a PC as a USB device? (for example for copying data from phone to PC) The spec does say that there is 11 pin USB port, but I just want to make sure it is to what I think it is.

2. Is the USB device communication handled by the firmware or the Linux kernel running on it? What I am trying to understand here is whether I would be able to debug the USB communication part if it is in the Linux kernel rather than the firmware on the USB peripheral device/OTG controller.