cfsetspeed - Linux


cfsetspeed sets the speed of a serial port file descriptor. It is primarily used to configure communication parameters for devices connected through serial ports, ensuring optimal data transfer.


cfsetspeed(int fd, speed_t speed);


  • fd: The file descriptor of the serial port to be configured.
  • speed: The speed at which the serial port will operate. Valid values are found in the <termios.h> header file, such as B115200 (115200 baud) and B9600 (9600 baud).


Simple Usage

Set the speed of a serial port file descriptor to 115200 baud:

#include <termios.h>

int main() {
    int fd = open("/dev/ttyUSB0", O_RDWR);
    if (fd == -1) {
        perror("Error opening serial port");
        return 1;

    cfsetspeed(fd, B115200);

    return 0;

Complex Usage

Setting the speed of multiple serial ports with different baud rates:

#include <termios.h>

int main() {
    int fd1 = open("/dev/ttyUSB0", O_RDWR);
    if (fd1 == -1) {
        perror("Error opening serial port 1");
        return 1;

    cfsetspeed(fd1, B115200);

    int fd2 = open("/dev/ttyUSB1", O_RDWR);
    if (fd2 == -1) {
        perror("Error opening serial port 2");
        return 1;

    cfsetspeed(fd2, B9600);

    return 0;

Common Issues

  • Permission Denied: Ensure that the current user has permission to access the serial port device.
  • Invalid File Descriptor: Check that the file descriptor is valid and refers to an open serial port.
  • Unsupported Speed: Verify that the specified speed is supported by the hardware.


  • Serial Communication: Combine with other serial port commands such as read() and write() to establish and manage communication channels.
  • Data Transfer: Use cfsetspeed to set the optimal speed for data transfer, ensuring reliable and efficient communication.

Related Commands

  • stty: Set and display terminal settings, including baud rate.
  • pccardctl: Control and configure PC Card devices.
  • setserial: Configure serial ports in depth, including speed, flow control, and parity.