Happy New Year! Sorry I've missed posting in a couple months.
It's odd to me, when sysadmins tell me that "
Serial Consoles are Dead. USB killed them." But, when I ask them what they mean, I get different answers.
The first meaning is: "
RS-232 is dead, long live USB!" So, then I ask them what they do when they need to get to the serial console, and they tell me about needing to find a
USB-to-DE9 serial adapter, get that to work, and point the serial console
getty to that device. ("I bet that's tough to do when you are having trouble with a server" I offer. They usually
agree that it is...)
The second meaning is: "
You don't need DE-9 connectors anymore, you can do it all with USB". This has more insidious meanings...
2a) Most new servers don't have a DE-9
connector on the chassis, just
USB ports.
2b) If I need a serial port, I can add a
USB-to-DE9 dongle, and use
minicom.
Have you ever tried
plugging in a
USB-connected
external modem, and then tried to dial into it, to access the serial console (
getty) on your server? The adventure is fraught with problems, which must be solved with a Crash Cart or other form of
KVM or remote desktop (which means you need to think about it BEFORE you have a problem, so that it's a useful avenue when trouble presents itself).
Remember, the serial console has been your friend, when the network or the network-facing configuration goes awry. Do you think
USB is ready to replace that role? Can you go to Fry's, and buy a
USB-to-
USB cable which you can simply plug in between two servers, and automatically establish a "null-modem"-type data path? I haven't seen one. Why Not?
Someone needs to develop a little, microprocessor pod, with two
USB cables. Power the unit from the 5-volt signal from either
USB device. Maybe even add some TX and RX data status
LEDs, to show which
USB cable is talking. You don't even need to do the conversion from
TTL to RS-232 and back...just keep it all at
TTL levels! But the microprocessor needs to be able to talk to each
USB port when the computer inquires "Who are you, what are you?"...this is the key!
USB relies on drivers, residing on your computer(s), to recognize the ID sent from a
USB-attached device when you first plug it in. To make things easy, many basic drivers are bundled into Operating System packages, which lets you plug in many devices without needing to install the drivers first. (This is the difference between
Play and
Pray in "Plug-n-Play" architecture.)
Looking at the basic
USB-to-DE9 dongles, most are
derivative works from two basic hardware types. For example, since
Brands A,
G,
M and
Q all use "
Chip X", and
Brands D,
I and
S all use "
Chip Z", it's easy to see that just having two basic (generic) drivers will let you plug in most of the devices from these 7 brands of dongles. Getting Microsoft, and the various Linux distributions is an important step in making things easier for the folks who use these operating systems with serial devices.
But, if you make this
USB cable I'm describing, and you try to use either of these
USB-to-Serial chips as a base, you will find that most systems will think that you are attaching a plain serial device, and they'll use the generic driver. So, you'll need a bit more engineering...you need a driver that will determine if it needs to find (or create) a
getty process, and connect it to the I/O address for the cable. Since you are going to need to make your own driver, you just gave yourself the flexibility to define how this type of cable communicates with the computers.
In a basic "Crash Cart" scenario, I want to plug the "Server" cable into my server chassis. If there is a console
getty process running, I want it to be directed to this new device (even if it thinks it was
connected to some other previous
USB-to-Serial dongle, since that may have failed - causing me to need
the crash cart).
When I plug in the "Client" cable to my crash cart, or a laptop, I want
them to think that it's just another serial port. (For real
Ease Of Use, let's default the serial speed to 9600 8N1.) If it's a Windows box, I'd like the option to choose (in the driver configuration) which COM port this device is assigned to (so it's going
to ALWAYS be there...even if it needs to steal the
assignment from a previous device). I'd also like to be able to associate this interface with an application, so that the OS will try to launch that
application when the cable is plugged in.
I want to walk up to a server, just out of the box, with my laptop, and plug this cable into the server and into the laptop...and have the laptop launch my copy of
ProCom, or
TerraTerm, or
HyperTerm...and have the server configure it's
getty to talk to the new port, if the OS is healthy.
If we can loop in a few of the big BIOS makers, the BIOS might notice this device on
startup, if BIOS redirection has been turned on, and use the cable (as a preference above the usual COM A assignment).
Of course, until we can get to this point,
USB hasn't replaced the venerable RS-232 serial port, at least in my data center.
Good luck with this winter!
-Z-