Linux Driver for SiLabs CP2101, CP2102 and CP2013 USB to Serial Bridges

This is the project page for the Linux driver for CP2101, CP2102 and CP2103 based USB to serial bridges. The driver discussed here is 100% open source, and is licensed under the terms of the GNU General Public License.

Project History

The CP210x driver is now distributed with 2.6 series kernels, and should be compiled and part of the default installation for most modern Linux distributions. In the majority of cases, no further action is required to use CP210x based devices.

The project began in December 2004, after purchasing a CP2101 based USB to RS232 converter cable. The cable was advertised as having Linux support however this was far from the case since the only Linux driver that was provided was in binary form, and for a specific Red Hat Linux kernel. For some reason the manufacturers try to keep the protocol used for configuring this device secret. Well, it’s out in the open now!

After writing the first version of the open source driver, I received feedback from numerous companies, some with names we all recognise. This feedback has only reinforced my belief that using an open standard protocol for this type of device would have made it more appealing to many product designers. With no data-sheets available, this driver had to be produced by tediously analysing the protocol used by the windows drivers.

Supported Features

The open source driver supports the majority of the features of the CP210x devices, and should in theory be compatible with the basic functionality of the CP2103. FIXME THIS NEEDS TO BE UPDATED

  • 600 to 921600 Baud
  • 5, 6, 7 or 8 Data bits
  • None/Odd/Even/Mark/Space Parity modes
  • 1, 1.5 or 2 Stop bits
  • Optional RTS-CTS Flow control
  • TIOCMGET/TIOCMSET ioctls enable flow control lines to be fully programmed
  • Break on/off support

CP210x Driver Download

The CP210x driver is distributed with the Linux kernels newer than 2.6.12. Almost all Linux distributions have this as part of the default installation. CP210x based devices will be detected automatically, the kernel module will automatically load and the device node /dev/ttyUSBx will be created. The Linux kernel can be downloaded in source form from https://www.kernel.org. Using cp210x devices with older kernels, 2.4 series and 2.6 <2.6.12, is possible by applying the appropriate patch to the kernel source. Note: The driver version numbers for the 2.4 and 2.6 development branches are not related because the two drivers are maintained separately.

Source: CP210x Linux Driver