title: CP210X
linktitle: cp210x
parent: Home
ctime: 2009-12-10

Repositories: [cp210x](/gitweb/?p=cp210x.git;a=summary), [[aptrepo]].

# A USB to UART chip

[Silicon Labs](http://www.silabs.com) sells a single-chip USB to UART bridge,
the
[cp210x](http://www.silabs.com/products/interface/usbtouart/Pages/default.aspx).
For windows platforms, Silicon Labs offers manufacturing support for setting the
various USB descriptor fields, port configurations, etc.  They also offer a DLL
and example programs showing how to manipulate the GPIO pins available on the
cp2103 part.

With support from Silicon Labs, TMI has modified their GPLv2 licensed reference
Linux driver to support all of the features their Windows DLLs and utilities
provide.  This is accomplished via extended `ioctl()` calls from the kernel
cp210x driver, and various utilities and sample code.  This code is invaluable
for those working on hardware designs using the cp2103.  For example, TMI
enhancements to tos-bsl in [[tinyos]] allow programming of an MSP430 based
target using a USB/serial connection, by leveraging two of the four additional
GPIO pins present on the cp2103.

TMI completed these driver changes were originally completed in late 2007, but
have been periodically updated since then to track changes to the linux kernel
source.  Silicon Labs was to push these changes through to the mainline kernel,
did not do so.  In mid 2010, TMI had discussions with the
linux-usb developers, and a decent number of changes need to be made before they
will include our modifications upstream.  Specifically, they want to see all
ioctl calls replaced with another mechanism.  Perhaps we can allocate some time to
work on these issues in the future.  Meanwhile, TMI will continue to maintain
its branch of the cp210x driver.

The `cp210x-module-dkms` package in the TMI APT
repository has been tested on (X)Ubuntu 8.04 LTS (Hardy Heron), 9.10 (Karmic
Koala), 10.04 LTS (Lucid Lynx), 10.10 (Maverick Meerkat), 11.04 (Natty Narwhal),
and 12.04 (Precise Pangolin).  Because the driver uses the dkms facility, the
driver should build for both 32 and 64 bit systems.  Some testing has happened
using older versions of 64-bit (X)Ubuntu, but TMI developers predominantly use
32-bit Xubuntu 12.04 at the moment (2012-07-09).

Note: Silicon Labs has introduced new USB/Serial chips, like the cp2104.  The
latest merge of the mainline cp210x driver, as present when used on 12.04
systems, may be compatible with these newer parts.  TMI has not tested for this
compatibility.
