I develop firmware for small embedded devices with ARM CPUs. Most of these devices run some flavor of Linux. An important device for Linux machines is the console interface. Older PCs had physical serial ports available. Modern PCs lack serial ports but they usual direct the console interface to the monitor/keyboard combination. Small embedded systems usually don't have a dedicated monitor or keyboard and they often don't have a physical serial port. The devices I work with have a USB serial interface which provides a serial interface over a USB A to USB micro cable.
Once in a while it becomes necessary to interface via a physical serial port, often using a DB-9 connector. When that's the case, I'm always asked to make it work since none of the younger engineers have much experience with older technologies while I spent a few years at the beginning of my lengthy career as a field engineer for mini and mainframe computers where serial ports were common.
Last week, one of the younger engineers was hooking up a couple devices via DB-9 serial connectors and wanted to hook 2 male DB-9 connectors (the ones where the pins are visible) together. He came to see me because my office tends to be a graveyard for old cables and connectors as well as test equipment. He asked about whether a null modem cable would be required. I took a little time to explain when null modem cables are required but it quickly became obvious that I was providing more information than needed and that he just wanted to solve a problem.
My theory has always been that I can solve problems faster if I develop a mental model of how a given technology works. What helped me tremendously in figuring out the many possible variations in async serial comm devices was getting the job of on-site field engineer as USA Today in Rosslyn, VA when they launched in 1982. As part of my duties, I had to hook up the satellite feeds from various news agencies like UPI, AP, and Reuters. There were a lot of async devices to hook up to the 12 DEC PDP-11 minicomputers. Fortunately I had an RS-232 breakout box which helped identify how the serial cables needed to be wired.
I had been trying to explain the young engineer at work that null modem cables allow 2 terminal type devices to be connected together where the original intention was for a terminal to be hooked to a modem type device. There are 2 main categories of RS-232 serial equipment, data terminal equipment (aka DTE) and date circuit-terminating equipment (aka DCE). Modems or modem eliminator devices are DCE equipment. The primary function of a null modem cable is to swap the Transmit Data line with the Receive Data line. When DTE devices are directly connected to DCE devices, no such signal swapping is required. Admittedly, this is for devices which follow the RS-232 standard closely which doesn't seem as common as one might think.
On some of the smaller devices, there's only a serial port available for data transfer. In those cases, I choose ZMODEM to securely transfer binary data files between machines. Back when I used to connect to bulletin board systems (aka BBSes), terminal emulator programs which supported ZMODEM used to be plentiful but now there's only a few options. I've been using Tera Term because I find its ZMODEM implementation easier to use. Here's what a file transfer looks like using it.





