I can see FTDI device plugged in:
user@nose:~$ lsusb
Bus 002 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
But it won't mount as serial port:
user@nose:~$ dmesg | grep tty
[ 0.000000] console [tty1] enabled
[ 1.822624] serial8250.0: ttyS0 at MMIO 0x70006300 (irq = 122) is a Tegra
[ 4.148550] console [ttyS0] enabled
[ 4.154460] serial-tegra.0: ttyTHS0 at MMIO 0x70006000 (irq = 68) is a SERIAL_TEGRA
[ 4.166339] serial-tegra.1: ttyTHS1 at MMIO 0x70006040 (irq = 69) is a SERIAL_TEGRA
[ 4.178319] serial-tegra.2: ttyTHS2 at MMIO 0x70006200 (irq = 78) is a SERIAL_TEGRA
So I checked, and the support for the FTDI converter device is not set by default:
user@nose:~$ zcat /proc/config.gz | grep FTDI
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_FTDI_ELAN is not set
Thus we will need to compile it from the source...
Downloading the kernel source and uncompressing:
wget http://developer.download.nvidia.com/embedded/L4T/r21_Release_v4.0/source/kernel_src.tbz2
bzip2 -d kernel_src.tbz2
tar -xvf kernel_src.tar
Make sure you get the right kernel for you. Mine was version 3.10.40... First time I got it wrong!
Copying the current kernel config into the folder and running menuconfig:
zcat /proc/config.gz > ~/kernel/.config
cd kernel
make menuconfig
Then navigate to:
Device Drivers -> USB Support -> USB Serial Converter Support
Mark "M" for Module in the option USB FTDI Single Port Serial Driver (thanks to http://elinux.org/Jetson/Tutorial for the path). Save but don't exit yet!
Now it is important to check if the CONFIG_LOCALVERSION variable is matching your kernel. If yo don't make sure it is matching, you may see a message like this:
[ 36.225047] ftdi_sio: version magic '3.10.40 SMP preempt mod_unload ARMv7 p2v8 ' should be '3.10.40-gdacac96 SMP preempt mod_unload ARMv7 p2v8 '
To do that, run:
user@nose:~$:/home/ubuntu/kernel# uname -a
Linux tegra-ubuntu 3.10.40-gdacac96 #1 SMP PREEMPT Thu Jun 25 15:25:11 PDT 2015 armv7l armv7l armv7l GNU/Linux
In the case above, the CONFIG_LOCALVERSION was set to -gdacac96. This is what we need to append to the kernel version DURING the compilation of our module. Fortunately, this can be done with menuconfig.
Go to the original menu, and select General Setup->Local Version. A window will open where you can set up the local version, which will be translated into the variable CONFIG_LOCALVERSION. Just type in the local conversion, which is what comes after the dase (with dash included!). In the case above, I typed "-gdacac96".
Save again. Exit the menuconfig.
Finally, we build the modules (read the make!):
make prepare
make modules_prepare
make M=drivers/usb/serial/
# copying back the drivers
sudo cp drivers/usb/serial/ftdi_sio.ko /lib/modules/$(uname -r)/kernel
sudo depmod -a
After that, I jut rebooted (for safety) and tried dmesg again:
user@nose:~$ dmesg | grep tty
...
[ 1066.441572] usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0
Thank you so much!!