Skip to content
Corey Minyard edited this page Oct 31, 2025 · 2 revisions

Welcome to the ser2net wiki!

I have heard that a lot of bad information is being passed around about ser2net and the gensio library. I have started this page to allow people to pass around information, and then I can make sure it's good information.

ser2net is a program that allows connections to "accepters" than then cause a connection to a "connector" to be made. In the beginning, before that terminology existed, and before the gensio library was split from ser2net, the accepters were only network ports and the connectors were only serial ports. Thus "ser2net".

As of writing the gensio library has over 30 different gensios with various capabilities. Some gensios can work as accepters, some as connectors, and some as both. gensios can stack on top of other to create a "stack". Terminal gensios sit at the bottom of the stack and generally provide physical interfaces of some type (tcp, udp, serialdev, etc.) but a few, like echo or pty, are not hooked to a physical interface. Filter gensios stack on top of other gensios and provide certain capabilities. For instance, if you have a slow serial device and need to limit how fast data goes to the device, you could have a serial device as a terminal gensio and a ratelimit gensio stacked on top of it like "ratelimit(xmit_len=1,xmit_delay=1s),serialdev,115200n81,local".

The ratelimit example above illustrates a few things. You can see the ratelimit gensio stacks on top of the serialdev one. The gensios have options, and these options appear in parenthesis after the gensio name. The example sets up to send 1 byte every second. If there are no options, no parenthesis are required, though they can be there. Terminal gensio often have terminal options after the name, (optional) parenthesis, and a comma. In the example above the serial port speed settings and local are terminal options to serialdev.

Documentation on all the gensios is part of the gensio library in the gensio.5 man page. You can type "man 5 gensio" to see them. It's a big man page.

The gensio library has a ton of gensios that can be combined in various ways to accomplish a near infinite number of things. So documenting everything is not possible. Instead, I will try to document the things people use as they have issues. Or this is a wiki, and people can add things and I can review.

Clone this wiki locally