Debian – How to access a USB serial port without an entry in /dev

debianserial portusb

I have a USB to serial adapter based on the SiLabs CP2101 chipset. I'm trying to use it with Debian 5.0 Lenny (armel architecture).

I seem to be able to get the proper kernel module to recognize the adapter, but it won't create /dev/ttyUSB0.

I ran modprobe usbserial and modprobe cp2101 and then connected the device, resulting in the following output from dmesg:

usb 2-1: new full speed USB device using mv5182_ehci and address 8
usb 2-1: configuration #1 chosen from 1 choice
cp2101 2-1:1.0: cp2101 converter detected
usb 2-1: reset full speed USB device using mv5182_ehci and address 8
usb 2-1: cp2101 converter now attached to ttyUSB0

However, /dev/ttyUSB0 does not exist. There are no new files in /dev.

find / -type f -name ttyUSB0 gives no results.

I did find a bunch of directories named ttyUSB0 that showed up after plugging in the device:

/sys/class/tty/ttyUSB0
/sys/bus/usb-serial/drivers/cp2101/ttyUSB0
/sys/bus/usb-serial/devices/ttyUSB0
/sys/devices/platform/mv5182_ehci.1/usb2/2-1/2-1:1.0/ttyUSB0
 ...

I found a file at /sys/bus/usb-serial/devices/ttyUSB0/ttyUSB0/dev but it does not appear to be a serial port; I can't open it with screen or Python's serial module.

To compare, I tried my Debian 6.0 development machine (which has a newer version of the cp2101 module now called cp210x) and after seeing the "converter now attached to ttyUSB0" line in dmesg, /dev/ttyUSB0 appears.

How do I get the cp2101 module to create /dev/ttyUSB0? If I can't, what file do I open to access the serial port?

Best Answer

You could try making the device node manually. On my system /dev/ttyUSB0 is major 188 and minor 0. And hopefully, my supposition is correct that it's a type c meaning character device (maybe try u for unbuffered character device if c doesn't work).

mknod /dev/ttyUSB0 c 188 0

If this worked, and the device file was appearing automatically before, something in your udev is messed up. There could also be an issue with USB subsystem settings or drivers.

Related Question