Q:

Can you alter usb protocols in Linux?

I have been trying to find a way to have a micro controller communicate directly with a computer through usb without a uart to usb bridge and I thought I could do it by disabling the usb protocols for the USB port and using the port as a regular serial port. I was told, however, that you can’t turn the usb part off. I also heard, though, that Linux leaves a lot more of the inner workings of the operating system open to altering. Does Linux allow you to alter the usb protocols and turn a USB port into a regular serial port?

A:

USB is not "just a serial port" in any sense that would match the old RS-232 serial port standard (also known as EIA/TIA-232). You cannot turn USB into RS-232 by "turning off extra requirements". 
Unlike the classic RS-232 serial ports, USB uses differential signaling: actually a little (very little) like RS-485, although the signal levels and other electrical characteristics are very different. 
RS-232 can use signal voltages of up to +/- 15 volts: USB uses <0.3V for logical low and 2.8-3.6 volts for logical high in USB 1 modes; in USB 2 high-speed mode the voltages are even smaller than that. 
Even if TTL logic levels (0..5V) are used in RS-232, the USB transmitter will be unable to generate a RS-232 "space" (=higher-voltage state) signal reliably. The signal levels just don't match up between these standards: a USB transmitter's signal would be too faint for the RS-232 UART receiver, and the RS-232 output signal would overload the USB receiver.
You can't get around the incompatibility with a simple level converter circuit, either: instead of sending just one start bit, then one byte of data, and then one or two stop bits, the USB transceiver deals with packets. At the start of the packet, there must be a synchronization sequence (8 bits for USB 1; 32 bits for USB 2 high-speed transfers), then several bytes are transferred, and finally the end-of-packet signal that will not match either of the normal "logical low" or "logical high" states. All this can be implemented in hardware for efficiency, and since there is normally no reason to do anything different, there is probably no provisions to bypass it for "bit-banging" the actual data lines in direct software control.
Compare the signaling examples of RS-232 and USB 1.1 in Wikipedia.
To summarize: no, the problem is that the differences between USB and RS-232 are too great at the actual hardware level.

