Compile from source USB-to-Serial drivers on CentOS7

I ran into an issue recently migrating to Cent0S 7 as my primary workstation. In Windows my Raspberry Pis happily conversed with my workstation of puTTY using a USB-to-Serial connector from AdaFruit. This was great, allowing me to program without hooking up a monitor of HDMI for console access. However, despite all the statements of the connector seamlessly working on Linux, it did not, issuing errors like 'serial connection unable to establish'.

Suspecting a driver issue, I began looking for the chipset. According the AdaFruit, the chipset had changed a number of times for this particular connector.

AdaFruit Product Details

This lead me to SiLabs where I found the latest driver of the current chipset

SiLabs Software Downloads

From this page I was able to download the proper software for my kernel (3.x.x) after creating an account (?...what sacrifices). Anyway, once I sold my soul, I managed to get the files downloaded to start the REAL fun.

Lets do this!

Now for the exciting part...ok...more exciting than pouring over forums and websites...

# unzip the DL

[Downloads]$ unzip Linux-3-x-x-VCP-Driver-Source.zip 
Archive:  Linux-3-x-x-VCP-Driver-Source.zip
creating: Linux_3.x.x_VCP_Driver_Source/
inflating: Linux_3.x.x_VCP_Driver_Source/cp210x.c  
creating: __MACOSX/
creating: __MACOSX/Linux_3.x.x_VCP_Driver_Source/
inflating: __MACOSX/Linux_3.x.x_VCP_Driver_Source/._cp210x.c  
inflating: Linux_3.x.x_VCP_Driver_Source/cp210x_gpio_example.c  
inflating: __MACOSX/Linux_3.x.x_VCP_Driver_Source/._cp210x_gpio_example.c  
inflating: Linux_3.x.x_VCP_Driver_Source/CP210x_VCP_Linux_3.13.x_Release_Notes.txt 
inflating: __MACOSX/Linux_3.x.x_VCP_Driver_Source/._CP210x_VCP_Linux_3.13.x_Release_Notes.txt  
inflating: Linux_3.x.x_VCP_Driver_Source/Makefile  
inflating: __MACOSX/Linux_3.x.x_VCP_Driver_Source/._Makefile
inflating: __MACOSX/._Linux_3.x.x_VCP_Driver_Source
		
# cd to the source...ignore that MAC stuff...
		
[Downloads]$ ls
Linux_3.x.x_VCP_Driver_Source  __MACOSX
		
[Downloads]$ cd Linux_3.x.x_VCP_Driver_Source
		
[Linux_3.x.x_VCP_Driver_Source]$ ls
cp210x.c  cp210x_gpio_example.c CP210x_VCP_Linux_3.13.x_Release_Notes.txt  Makefile
		
# make stuff happen...
		
[Linux_3.x.x_VCP_Driver_Source]$ make 
make -C /lib/modules/3.10.0-514.26.2.el7.x86_64/build M=/home/xiphos/Downloads/Linux_3.x.x_VCP_Driver_Source modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-514.26.2.el7.x86_64'
CC [M]  /home/workstation/Downloads/Linux_3.x.x_VCP_Driver_Source/cp210x.o
Building modules, stage 2.
MODPOST 1 modules
CC      /home/workstation/Downloads/Linux_3.x.x_VCP_Driver_Source/cp210x.mod.o
LD [M]  /home/workstation/Downloads/Linux_3.x.x_VCP_Driver_Source/cp210x.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-514.26.2.el7.x86_64'

[Linux_3.x.x_VCP_Driver_Source]$ ls
		 cp210x.c
		 cp210x.ko
		 cp210x.mod.o
		 CP210x_VCP_Linux_3.13.x_Release_Notes.txt
		 modules.order
		 cp210x_gpio_example.c
		 cp210x.mod.c
		 cp210x.o
		 Makefile
		 Module.symvers
		
# move compiled drivers where they need to go...
		
[Linux_3.x.x_VCP_Driver_Source]$ sudo cp cp210x.ko /lib/modules/3.10.0-514.26.2.el7.x86_64/kernel/drivers/usb/serial

######################################################################
# This next part hung me up because the Release notes clearly state    # needing to insmod a usbserial.ko module (insert into kernel). This is # hard because that module doesn't exist in CentOS7...so I just skipped # it and insmod'ed the driver :)
####################################################################		
[Linux_3.x.x_VCP_Driver_Source]$ insmod /lib/modules/3.10.0-514.26.2.el7.x86_64/kernel/drivers/usb/serial/cp210x.ko
		
[Linux_3.x.x_VCP_Driver_Source]$ sudo chmod 666 /dev/ttyUSB0
		
# if you have a ttyUSB1, chmod it as well

$ sudo chmod 777 /dev/ttyUSB1		

...and with that, I was able to establish a PuTTY serial session between my CentOS7 and Raspberry Pi. Now, so can you!