- DB-25. Why on earth does simple serial port need 25 pin connector? Of course almost everyone in the real world uses DE-9 (don't dare to make the mistake of calling it DB-9..) instead, which makes double fun when trying to figure out if the "pin X" refers the pin on 25 or 9 pin connector.
- DE-9. Do we really need even 9 pins? Afaik people these days are happily doing serial with just three pins (Rx/Tx/Gnd).
- Asymmetrical pin assignment. 5 of those 9 pins are to one direction and 3 to the other. While that might have made sense in the original use as PC-Modem interconnect, it feels bit awkward for anything else.
- 30 V voltage swing. For something designed for connecting a modem to your computer. Overkill anyone? Sure it might be nice for some industrial uses, but how did that end up in the general spec?
- Terminology fixed on modem use case. So now everyone needs to deal with (or rather ignore) stuff like "ring indicator" or "carrier detect", even if those make little to no sense in most applications
- Null modem cables. Because of the aforementioned asymmetry, connecting two computers together with serial is a huge hack, you need to do some sort of cross-over configuration and fake the "missing" signals.
- Incompatible null modem cables. As far as I can tell, there are at least three major types of null modems (no/partial/full flow control), which are at least partially software incompatible with each other. So you need to pick the cable depending on what application you are running.
- Flow control. Hinted above, but you can do flow-control in "hardware" (out of band/separate pins) or "software" (in band/control characters). If you ever wondered what some of those ASCII control characters are used for, this is it. Why exactly they are specified in ASCII, rather than in RS232 or something, god (or IBM, which I suppose is practically the same thing) only knows. What if you actually want to send 0x13 over the line? Haven't figured that out yet (and hopefully never will need to..).
- stty. I do not look forward to the day I get to software bits and need to use stty. Of course serial ports on unixen are bound to the terminal subsystem, instead of being, idk, general IO devices. So you got tons of archaic options you can set on your "terminal" device (i.e. serial port). This is one of the few cases where Windows actually makes bit more sense. Maybe.
- 9600,8,N,1 and friends. If you have gotten this far, you can guess there are tons of different ways of using RS-232, so you need to know/guess the parameters when setting the connection up. Having the standard actually standardize those would have been too much to as I suppose. Or include way of indicating/negotiating the configuration.
- Modern software stacks. You might think that with the history and ubiquity of RS-232, using it on a PC would be piece of cake. You'd be wrong, very wrong. Depending on what serial port controller you have, you will need to download some driver that ranges from a shady unsigned kernel blob to ones that brick your hardware. How the heck there is not one standard built-in driver for USB RS-232 dongles, like there is for everything else. Apparently there actually is standard USB device class ("CDC") for this sort of thing, but for some reason that is not enough
In unrelated news, I need to do minor redesign of the ESP module because I have a 5/3 level shifter on it instead of 3/5 one. Of course the USB module will still have 5/3 because it represents DTE, whereas ESP is DCE. And I will be needing to make few null modems, gender changers and straight cables to make everything work.
In retrospect, I probably should edit the list a bit considering how the items grew in length towards the end. But eh, its a rant anyways. And I didn't even get to the higher level software things (XMODEM, SLIP, PPP, Kermit, oh my..). Or AT commands, which are another layer of weirdness.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.