I've been getting a lot of requests lately to see if Linux supports the USB to serial device from Silicon Laboratories called the CP2101 chip. It turns out that the company is claiming Linux support, yet they are only shipping a binary driver for Red Hat Linux 9.0. In talking with the company, they insist that they will not release the source code to this module, and they claim that they are not infringing on any rights by not doing so. I claim that this is not true, as to write a usb to serial driver for Linux you have to use the drivers/usb/serial/usb-serial.h header file which is specifically licensed under the GPL v2. This file contains inline functions and structures that all usb-serial drivers need to use in order to work properly. In short, there's no way you can write a Linux usb-serial driver, that uses the usbserial interface, without it being a derived work of other, GPL only code. So, they are in violation, so what. Well, I can't do much about this (due to my employer's rules about suing companies). But I can do my best to spread the word that the CP2101 device is not supported on Linux, and should be avoided at all costs by anyone considering such a device in a future design. If people are looking for a good usb to serial chip that is supported on Linux, Windows, and OS-X, there's the PL2303 device from Prolific, and the FTDI-SIO chip, and the MCT-U232 chip. All of these work very well on Linux, and are fully supported by all distros. I think they even might be cheaper than the CP2101 device too :) Oh, and just for fun, here is the Linux driver that SiLabs is distributing, if anyone wants to poke around in it. The tarball contains 2 binary drivers, one of them a version of the usbserial.c file (which plainly is licensed under the GPL) and a mcci_usb.o binary driver. Have fun with it, but don't blame me for any badness that might happen to your box for running it, no one has any way of knowing exactly what this driver is doing. So, in conclusion, please stay away from Silicon Laboratories devices, if you want to run Linux, as they are obviously not supporting Linux in any way.

posted Thu, 18 Nov 2004 in [/linux]


My Linux Stuff