Jetson TK1: FTDI works on 19.3 but not 21.2

Following the instructions in http://elinux.org/Jetson/Tutorials/Program_An_Arduino I was able to get the FTDI kernel module working on L4T 19.3. But on 21.2 all I get is:

[ 2861.698184] usb 2-1.3: new full-speed USB device number 7 using tegra-ehci
[ 2861.755036] usb 2-1.3: New USB device found, idVendor=0403, idProduct=6001
[ 2861.764042] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2861.768976] usb 2-1.3: Product: USB <-> Serial Cable
[ 2861.772874] usb 2-1.3: Manufacturer: FTDI
[ 2861.773060] usb 2-1.3: SerialNumber: AFJRNWZX
[ 2861.815705] ftdi_sio: version magic '3.10.40 SMP preempt mod_unload ARMv7 p2v8 ’ should be '3.10.40-ged4f697 SMP preempt mod_unload ARMv7 p2v8 ’

And no /dev/ttyUSB0.

Any ideas?

I says is right there:

version magic "3.10.40" should be "3.10.40-ged4f697"

You have compiled the kernel using a different version than what your module is.

If the code is in practice the same, you can try forcing it:

sudo modprobe --force /path/to/module.ko

The USB part of this shows as working. Everything you are missing is driver-related for whatever the USB is used to communicate with.

It looks like that last line could the driver complaining about being compiled to an incorrect kernel version because it did not account for the CONFIG_LOCALVERSION adding the “-ged4f697”. It believes it is running on the wrong kernel although it isn’t really. Did you compile this module? If so you have to set CONFIG_LOCALVERSION to “-ged4f697” before compiling.

EDIT: I started writing this before kulve answered it so I didn’t see his post till I posted :P His answer will load the module even with the version mismatch, which is the easiest way to deal with it (as mentioned the versions are not really different, the module and kernel just think they are); my answer takes more effort but is useful if building your own modules.

Just a little additional information for other wanderers that may come across this thread. You can set CONFIG_LOCALVERSION in menuconfig when configuring the module to be built. The version revision needs to be placed in ‘General Setup’->‘Local Version’. An easy way to determine the revision needed is to execute:

$ uname -r

from a Terminal. In this case, the result will be: ‘3.10.40-ged4f697’. Place ‘-ged4f697’ (without the single quotes) into the dialog box and remember to save the settings. Don’t forget the ‘-’ sign in the revision, or else it will happily compile, install and you’ll still have the same issue. Don’t ask me how I know that part.

modprobe returned:

modprobe: FATAL: Module /lib/modules/3.10.40-ged4f697/kernel/ftdi_sio.ko not found.

I didn’t try to debug this but instead set CONFIG_LOCALVERSION to “-ged4f697” which worked.

Thanks.

It’s looking in the wrong place. Name the module via full path to the file name.