Troubleshooting serial terminal connections (VT Serial Terminal, VT132, Packet Radio TNCs) – part 2

In my previous post, I said I was going to test my two serial cables with every serial device I have to work out which combination worked and which didn’t to find out what the difference was. It didn’t take long to realize though that the DB25 to DB25 serial cable I have that I assumed was a null modem cable only worked with certain types of connections.

For example, it only worked with a VT terminal to a modem type device (in this case a PK-232 packet radio TNC), but not terminal to PC. In the first case that is a DTE to DCE type connection (which worked), whereas the second is DTE to DTE (which didn’t).

  • A DTE to DCE connection requires a straight through cable
  • A DTE to DTE requires a crossover connection (tx to rx, rx to rx)

This realization pretty much confirmed that the cable that was only working for DTE to DCE connectors was a straight through cable, and explained why it didn’t work elsewhere.

Long story short, I picked up a cheap null modem adapter that does the crossover for you, converting a straight through cable to a crossover:

From left to right:

  • USB serial dongle, connected to the Pi
  • DB9 to DB25 converter
  • DB25 to DB25 null model adapter
  • DB25 to DB25 straight through (converted to crossover with the null modem adapter)

And now I can successfully get a terminal logon to my Raspberry Pi:

To enable the serial terminal login via ttyUSB0, see this post.

“zsh: No match found” error

zsh attempts to expand any potential filename wildcard characters (such as ‘*’ and ‘?’) used in a command before executing it. This can lead to the confusing error “zsh: No match found” error. What makes this confusing is if you’re trying to execute a grep or something where you are trying to find or match something, since the error implies your search is not working, whereas the error is about the patterns zsh is attempting to expand in the command string, and not from executing the command itself.

Depending on what you’re trying to do, the easiest workaround is to wrap parameters in quotes or escape characters like ‘*’ and ‘?’.

e.g. for curl, wrap urls in quotes.