TIOCGSERIAL?

Paweł Michalicki perquam at gmail.com
Fri Aug 5 20:31:21 UTC 2011


Hi

First, apologies if this is the wrong group to ask my question. I looked
through all the group titles and this one looked suitable. The question is
related to programming under FreeBSD.

I have a certain device which can be hooked to a PC via RS232 connection.
Since my PC does not have a true COM port, I am using an USB<->COM
converter, which contains the FTDI chip. I wrote a program to handle the
communications via the /dev/cuaU0, and all this works very well. The device
at the other end has an UART which is capable of wild variety of baudrates,
including standard rates of 19200, 38400 and 57600 bits per second. In my
program on FreeBSD I am using that last baudrate.

However, the "wild variety of baudrates" which can be used includes also
such baudrates as 88, 98, 110 kbps and the highest possible one is 126 kbps
(note: no 115,2 kbps). I'd like to use 126 kbps instead of 57,6 kbps.

Now, it is possible on Linux using ioctl(TIOCGSERIAL) and
ioctl(TIOCSSERIAL). As I understand, using these you can very precisely
control the serial baudrate on COM ports (or at least on USB ports with an
USB<->COM converter hooked up). Sadly, these do not seem available on
FreeBSD.

My question is: is there any equivalent of TIOCGSERIAL/TIOCSSERIAL available
on FreeBSD, or maybe there is some special driver I could load and use? As
I've written above, the USB<-> COM converter I use is the FTDI chip, but the
uftdi module does not seem to provide such functionality. I do not want to
write my own kernel module or FTDI device driver just for that purpose.

The system is FreeBSD 6.4 but (judging from grep -r TIOCGSERIAL on
/usr/include) this applies to 8.0 as well.

Thanks!


More information about the freebsd-questions mailing list