I'm working with an IMX6 board, running a linux kernel, u-boot, and rootfs that were generated from yocto. I used one of the core images. core-image-minimal-dev to build the kernel image. I added in usbutils to as an image_install within the core-image-minimal-dev recipe.

I posted a previous question looking for support on getting power to the USB2.0 port, and that has now been addressed. What I'm looking to accomplish now is to get the device recognizable as a VCP. I need to connect a external device to the USB2.0 and be recognized as a tty connection. At this point when I plug the device in all i get is.

new full-speed USB device number 5 using ci_hdrc    
usb 2-1: New USB device found, idVendor-10c4, idProduct=ea60
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1: Product: CP2104 USB to UART Bridge Controller
usb 2-1: Manufacturer: Silicon Labs
usb2-1: SerialNumber: 013C2C09

no changes occur in /dev/ directory as it should. I'm hoping to see something along the lines of /dev/ttyUSB0. Where I can then write an application that will communicate over serial using that port.

through my research I came across several references that virtual com port drivers are pre-built into the linux kernel. I found a set of instructions on the FTDI chip website with some instructions.


I went through the steps to add a new rule for the FTDI VCP.

I grabbed the idproduct number and idvendor number from when the device was plugged in. As I don't have the command udevcontrol_reload rules loaded into the os, I just did a power cycle. Unfortunately there was no luck.

Next I made changes to the kernel via menu configuration.

bitbake -c menuconfig virtual/kernel USB_SERIAL_CONSOLE was already enabled on the board. Was labeled USB Serial Converter support So I went and enable USB_SERIAL_CP210X which was labeled as USB CP210x family of UART Bridge Controllers. when I pressed, , I received a pop up.

This feature depends on another which has been configured as a module. As a result, this feature will be built as a module.

after USB CP210x was marked with an exited out of menu config and proceeded to compile the kernel with bitbake -f -c compile virtual/kernel followed by bitbake core-image-minimal-dev

I still don't see a vcp populate in /dev/

I visited the linux kernel driver database and its reporting the USB CP210x family of UART Bridge Controllers has no dependences. So I don't understand why the popup said it had other dependencies.

The next thing I found in my research was the need to load the module into linux either via insmod or mknod. So I looked into that. Each of the references I found were directing me to compile some .ko files that were located in lib/modules/... /serial/ directory. However, going through the rootfs for the os, I can't find a modules directory. either by ~/lib/ or by /usr/lib


So I've configured the defconfig so that


are both to be loaded and not as modules.

I found some helpful information that includes creating a mknod and then insmod.

$ mknod /dev/ttyUSB0 c 188 0
$ insmod /lib/modules/4.1.15-1.0.0+g3924425/kernel/drivers/usb/serial/usbserial.ko vendor=0x067b product=0x2303

for me I would want to use the cp2104 driver, instead of the generic. What I'm having issues with now is that I don't have a modules directory. Within the /lib/ directory where I should have a modules directory, there isn't one. Any insight into why im missing the modules directory?

Any suggestions?


Firstly if there's no reason for loading it (or it's deps) as a module, I'd look at building them statically into the kernel so you don't need to load them, or look at the distro you are using and how that loads modules.

If you think you've loaded the module correctly but you're not sure - use lsmod.

If lsmod is showing cp210 then you already have the module loaded and this is not your issue.

  • djsmiley2k, I'm new to yocto and manipulating kernels. When I attempted load cp210 it required me to do it as a module, as I pressed <y> and it defaulted to <m>. I attempted lsmod at your suggestion and the only thing that was was returned looked like this " Module Size Used by" That was all. – Michael Mar 12 '18 at 14:31

Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.