Arduino Serial Port Confusion

I'm using an Arduino Pro (mini 328) 5v board and am a little confused as to the operation of its serial ports. Specifically, I have no problem reading either the dedicated UART or a NewSoftSerial port using an Arduino USB-to-Serial programming cable (FTDI 5v). BUT when I use a generic Serial-to-USB converter, at first all I got was gibberish. After considerable head scratching and trial and error, I changed my NewSoftSerial initialization code to:

NewSoftSerial mySerial(2, 3, true); // invert serial signal

and - voila - it worked fine. While it was nice to see it working, the solution downright confounds me.

So my question is why do I have to invert the serial signal depending on the Serial-to-USB device? The generic Serial-to-USB converter works fine with some other non-Arduino devices and my terminal settings were identical. Are the signals inverted on the Arduino? Or is there something else going on here?

That indeed is a bizzare one. The Arduino TTL serial protocol is a standard one. +5vdc = data bit high/on = Mark condition = stop bit = idle condition, and 0vdc = data bit low/off = space condition = start bit. Why you have a converter that uses an inverted logic is very strange to say the least. 8n1 (8 data bits, no parity bit, 1 stop bit) is also the arduino default serial setup.

Lefty