Linux: How to find all serial devices (ttyS, ttyUSB and others)?

Posted by Thomas Tempelmann on Stack Overflow See other posts from Stack Overflow or by Thomas Tempelmann
Published on 2010-03-27T16:56:46Z Indexed on 2010/03/27 17:03 UTC
Read the original article Hit count: 408

Filed under:
|
|

What is the proper way to get a list of all available serial ports/devices on a Linux system?

In other words, when I iterate over all devices in /dev/, how do I tell which ones are serial ports in the classic way, i.e. those usually supporting baud rates and RTS/CTS flow control?

The solution would be coded in C.

I ask because I am using a 3rd party library that does this clearly wrong: It appears to only iterate over /dev/ttyS*. The problem is that there are, for instance, serial ports over USB (provided by USB-RS232 adapters), and those are listed under /dev/ttyUSB*. And reading the Serial-HOWTO at Linux.org, I get the idea that there'll be other name spaces as well, as time comes.

So I need to find the official way to detect serial devices. Problem is that there appears none documented, or I can't find it.

I imagine one way would be to open all files from /dev/tty* and call a specific ioctl() on them that is only available on serial devices. Would that be a good solution, though?

© Stack Overflow or respective owner

Related posts about linux

Related posts about serial