LTE USB Dongle Does Not Work on Jetson Nano

Hello, I have been trying to set up a LTE USB Dongle on Jetson Nano for a couple weeks. I followed instructions from multiple resources, including some older threads on this forum, but none of them worked for me. Specifically, I tried using both a Quectel EP06-A and a sierra wireless MC7700 air prime LTE modems with a mPCIe to USB adapter. They both work on my linux PC running Ubuntu 20, but none of them work on Jetson Nano running Ubuntu 18.04 LTS. The dongles can occasionally connect to the network on Nano, but once I start to ping a website or try to search the internet, the connection immediately drops.

I tried to install the drivers for the Quectel EP06-A following their github page: GitHub - bacnh85/Quectel_Linux_USB_Driver: Quectel Linux Driver for WCDMA, LTE and 5G Modules. However, when I tried to download linux headers:

sudo apt-get install linux-headers-$(uname -r)

It says:
E: Unable to locate package linux-headers-4.9.201-tegra
E: Couldn’t find any package by glob ‘linux-headers-4.9.201-tegra’
E: Couldn’t find any package by regex ‘linux-headers-4.9.201-tegra’

Then I tried to run the ‘make’ command anyways, and it shows:


rm -rf *~ .tmp_versions modules.order Module.symvers
find . -type f -name *~ -o -name *.o -o -name .ko -o -name .cmd -o -name .mod.c | xargs rm -rf
make -C /lib/modules/4.9.201-tegra/build M=/home/nano3/Quectel_Linux_USB_Driver modules
make[1]: Entering directory ‘/usr/src/linux-headers-4.9.201-tegra-ubuntu18.04_aarch64/kernel-4.9’
CC [M] /home/nano3/Quectel_Linux_USB_Driver/./drivers/usb/serial/usb_wwan.o
CC [M] /home/nano3/Quectel_Linux_USB_Driver/./drivers/usb/serial/option.o
CC [M] /home/nano3/Quectel_Linux_USB_Driver/./drivers/usb/serial/qcserial.o
/home/nano3/Quectel_Linux_USB_Driver/./drivers/usb/serial/qcserial.c:91:34: warning: "/
" within comment [-Wcomment]
/
{USB_DEVICE(0x05c6, 0x9215)}, /
Acer Gobi 2000 Modem device (VP413) */

CC [M] /home/nano3/Quectel_Linux_USB_Driver/./drivers/net/usb/qmi_wwan.o
/home/nano3/Quectel_Linux_USB_Driver/./drivers/net/usb/qmi_wwan.c:14:10: fatal error: linux/sched/signal.h: No such file or directory
#include <linux/sched/signal.h>
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
scripts/Makefile.build:341: recipe for target ‘/home/nano3/Quectel_Linux_USB_Driver/./drivers/net/usb/qmi_wwan.o’ failed
make[2]: *** [/home/nano3/Quectel_Linux_USB_Driver/./drivers/net/usb/qmi_wwan.o] Error 1
Makefile:1646: recipe for target ‘module/home/nano3/Quectel_Linux_USB_Driver’ failed
make[1]: *** [module/home/nano3/Quectel_Linux_USB_Driver] Error 2
make[1]: Leaving directory ‘/usr/src/linux-headers-4.9.201-tegra-ubuntu18.04_aarch64/kernel-4.9’
Makefile:10: recipe for target ‘modules’ failed
make: *** [modules] Error 2


It seems that it is missing the <linux/sched/signal.h> header file in the kernel. I found online that signal.h has been moved to a different directory since 4.11 and Nano is running 4.9. So I tried to rebuild the kernel following JetsonHacksNano github repository (GitHub - JetsonHacksNano/buildKernelAndModules: Build the Linux Kernel and Modules on board the NVIDIA Jetson Nano Developer Kit). However, the scripts on the repository were for JetPack 4.3, L4T 32.3.1 whereas the current Jetson Nano release is L4T 32.5.1. Seems that that repository has not been updated since December 2019.

I then tried to manually update the kernel following Nvidia’s kernel customization documentation, but I am not familiar with kernel modifications. So, I am currently stuck. Does anyone have any advice as to how to proceed? Has anyone encountered similar issues as I have?

I really think Nvidia should consider including more support for LTE modules in their future releases because there are a lot of applications using Nvidia products that will need LTE connection where wifi or cable connections are not available.

Any help will be appreciated. Thanks in advance!

The NVIDIA source is slightly different than the mainline headers, and you should probably install the full kernel source instead of just headers. You can then compile against full source once it is configured to match the running system.

Note that “sources” are available at the URL for the specific release, and that kernel source, including some out-of-tree content which is accessed via relative path is included. That source is not configured, but if you were to use a running system’s “/proc/config.gz” (after gunzip and name change to “.config” at the right location), then the source would also be configured (beware you should always set up CONFIG_LOCALVERSION in addition to other config).

The “make tegra_defconfig” target is often the same as the “/proc/config.gz”, but if there has been any customization, then you’d want to use the “/proc/config.gz”.

If you run this command you will find your L4T release version:
head -n 1 /etc/nv_tegra_release

To see a location of each release’s downloads, including kernel source, see:
https://developer.nvidia.com/linux-tegra

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.