I am wondering if I have the right idea. I need to connect my computer to my servers serial port for some debugging, I have no other computers that have serial ports but I have FTDI serial boards for programming some arduinos. If I connect the pins of the FTDI board to a DB-9 connector and Cross the Tx<->Rx will that work?
5 Answers
Beware that there are several versions of USB / SERIAL adapters. The standard type, and the kind you want for connection to your server's D-Sub 9 connector, will be one that comes already with its own D-Sub 9 connector. These have an internal FTDI chip that converts from USB to a serial logic level signal and then an RS232 transceiver part that converts the logic level serial over to the +/- bipolar signalling used by the standard serial port.
You will most likely need a null modem adapter between the USB/SERIAL adapter and the server computer serial port connector. A really convenient type of null modem adapter for this use looks like this:
The other type of FTDI USB to serial adapter is one that does not include the RS232 transceiver chip. These bring out the logic level serial lines so that they can be connected directly to a microcontroller or other circuit. It alleviates the need to put standard RS232 transceivers for a debug port or programming port on MCU hardware to save space and cost whilst at the same time when the usage model is for very short cabling lengths. One example of this type of FTDI adapter looks like this:
Note that is not possible to try to use a logic level serial adapter to "talk" to the standard RS232 port off your server. The voltage levels do not match and the logic level signals are logically inverted from standard RS232 signals. (i.e. the RS232 transceiver parts have a logical inversion through the part).
You mention Arduino, and that led me to assume that your computer is a microcontroller where you have access to the I/Os. In that case this is a possible solution.
This breakout board has connections for TxD and RxD, which you simply connect to the same pins on your microcontroller. Check the I/O voltage; default the board is wired for 3.3 V but you can change that to 5 V.
geometrikal mentions modem control signals, but there are very few microcontrollers out there which have a full modem implementation; for most it's just TxD and RxD. If you would need the control signals as well though, you can find them on the two rows of connections at both sides of the breakout board.
If you don't have access to the controller's I/O you have to do it with the 9-pin DB-9 connector. FTDI, a.o., has products which interface your USB to EIA-232 as well:
The Chipi-X contains a USB-to-UART bridge like I described above, followed by a level shifter to convert the UART signals to EIA-232 levels.
-
\$\begingroup\$ This would not be the right solution for equipment with a DE-9 serial port which usually implies RS232 voltages, though it could be good for internal serial headers often found on appliance-class embedded network/storage-server/etc boxes. \$\endgroup\$ Commented Oct 10, 2012 at 14:08
-
\$\begingroup\$ @Chris - Yeah, I was a bit misled by the mention of the Arduino, I guess. I'll clarify. Thanks for the feedback. \$\endgroup\$– stevenvhCommented Oct 10, 2012 at 15:26
These boards are great for connecting any sort of equipment with serial ports to a computer that has only USB ports. Just solder on whatever cable and pinout you need. And you're already familiar with the drivers for the FTDI chips inside.
There are options for RS-232 voltage levels, RS-232 signalling in 5V TTL, 3V TTL, as well as RS-422 and RS-485.
They're available from most distributors including Digikey, Mouser, and Newark. In my experience, Newark has been the cheapest source.
It may depend on whether the server serial port uses hardware flow control. For a proper null-modem connection a few of the pins have to be swapped:
If no hardware flow control, then just connect pins 2,3 and 5, with 2 and 3 crossed over appropriately, and no other pins connected. If that doesn't work it may have flow control, and jumpering pin 4 to pin 6 as well might work.
You may have a problem with speed, that is what usualy happens to me with FTDI devices, Can you write to me what FTDI chip do you have, if you have FT232R then you will have problems, its best to find some other solution, try getting PCI RS232 card, or some other USB <-> RS232 converter ( be cerful there, because they mostly use FTDI devices ).
-
1\$\begingroup\$ What speed problems do you mean? Not that the FT232R wouldn't be fast enough, I hope; it can do 3 Mbps. These devices are being sold by the hundred thousands, it's the first time I hear about this. Can you be more specific? \$\endgroup\$– stevenvhCommented Oct 10, 2012 at 12:38
-
\$\begingroup\$ I used FT232R for USB to RS232, for programming my device at 115200bps, problem is that FTDI devices will wait for their buffer to fill up, and only then forward the bufferm and this can make some problems on recivers end. This is the same problem that we have with VNC2 devices. \$\endgroup\$ Commented Oct 10, 2012 at 12:42
-
\$\begingroup\$ There can be a specific problem which you can fall victim to depending on application-level protocol design. USB is great for moving continuous data, but write a byte / read a byte / write a byte type of interactions happen only quite slowly, and need to be avoided. Often the solution is to offload something like a low-level programming operation to an external microcontroller. However, while interesting in other cases, this is unlikely to be related to the question which has been asked, which is about communicating with a server, likely as a console terminal, not doing low-level flashing. \$\endgroup\$ Commented Oct 10, 2012 at 14:12
-
\$\begingroup\$ I've used FTDI devices quite a bit, and they support intercharacter timeouts... when properly configured they're almost as fast for single byte handshaking as a traditional UART would be. \$\endgroup\$ Commented Oct 10, 2012 at 15:13