USB A to USB Mini-B serial cable using Linux

The Prolific 2303 linux chip driver pl2303 works here since over a decade. I have been using this particular Serial-to-USB cable on various operating systems. But I never had the time and a opportunity to configure a USB-A to USB Mini-B cable for serial connection for Cisco components. The testswitch used here a Catalyst 3650 series.

The workstation and switch are powered up. While connecting the USB-A port to the workstation and the USB Mini-B port to switch's serial USB port the connected device can be listed using the lsusb utility. Below the output:

user % lsusb Bus 001 Device 005: ID 05a6:0009 Cisco Systems, Inc. Cisco USB Console

This works like LLDP or CDP but is for USB. Listing directly connected devices on the USB port. Following events are written up in the linux dmesg after connecting the components with the USB serial connection:

[  585.834392] usb 1-4.3: new full-speed USB device number 12 using xhci_hcd
[  586.006908] usb 1-4.3: New USB device found, idVendor=05a6, idProduct=0009, bcdDevice= 0.00
[  586.006912] usb 1-4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  586.006914] usb 1-4.3: Product: Cisco USB Console
[  586.006916] usb 1-4.3: Manufacturer: Cisco

This workstation is using a customised slim kernel, most drivers are missing in the linux kernel configuration. The workstation des not need them. The linux kernel uses the USB CDC ACM drivers to be able to connect to the Ciscos USB console. Since this particular connection is not a real serial connection, it needs specific linux kernel drivers to work with switch's USB mini-B console port. A real serial connection on both ends with an RS-232 connector does not need any additional drivers.

Following drivers need to be build as kernel module [M]

cdc_acm
usbserial

After the linux modules have been build and the kernel has been restarted, plugging in the USB cable will assing dynamicially a /dev/ttyACM0 name in the system.

[  586.044991] cdc_acm 1-4.3:1.0: ttyACM0: USB ACM device

The whole process in the dmesg:

[  585.834392] usb 1-4.3: new full-speed USB device number 12 using xhci_hcd
[  586.006908] usb 1-4.3: New USB device found, idVendor=05a6, idProduct=0009, bcdDevice= 0.00
[  586.006912] usb 1-4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  586.006914] usb 1-4.3: Product: Cisco USB Console
[  586.006916] usb 1-4.3: Manufacturer: Cisco
[  586.044991] cdc_acm 1-4.3:1.0: ttyACM0: USB ACM device

The device has the ttyACM0 system name assigne. Verify which system:group has been assingend for this device, this is probably gentoo specific:

user % ls /dev/ -lah | grep -i acm crw-rw---- 1 root uucp 166, 0 Mar 2 12:37 ttyACM0

To be able to read and write to this device, the connecting user needs to be in the uucp local system group. To verify group membership use the id command:

user % id uid=1000(user) gid=1000(user) groups=1000(user),14(uucp),18(audio),27(video),78(kvm),100(users),272(plugdev),371(frr)

If everything works finally connect to the switch console using the screen application and the default 9600 baud rate:

user % screen /dev/ttyACM0 9600