title: CP210X
linktitle: cp210x
-parent: TOP
+parent: Home
ctime: 2009-12-10
-Repositories: [cp210x](http://repo/gitweb/?p=cp210x.git;a=summary), [[aptrepo]].
+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, in the form
-of a DLL and a small utility, to set 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.
+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 approval from Silicon Labs, TMI has modified their 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 really invaluable for those
-working on hardware device designs using the cp2103. The code is released
-under the GPLv2.
+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 sent the modified code back to Silicon Labs, who supposedly had someone
-in-house (or contracted) who regularly works with the maintainer of the cp210x
-(formerly cp2101) driver in the mainline Linux kernel. That was over a year
-ago, and the code hasn't shown up. We will be working with the maintainer
-directly to get this code available. In the mean time, it is available
-[as source](http://repo/gitweb/?p=cp210x.git;a=summary) and from our
-[[aptrepo]]. The `cp210x-module-dkms` package in the APT repository has been
-tested on Ubuntu Hardy and Karmic systems with both 32 and 64 bit x86
-(Intel/AMD) processors.
+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.