Using Novatel GPS USB driver on Jetson TX1 developer kit

Hello,

I connected Novatel GPS to Jetson TX1 developer kit through USB Port.
and I got an error while installing linux driver(ver 1.1.0) downloaded from Novatel’s site.
(http://www.novatel.com/support/info/documents/809)

The following error occurs when dpkg is executed.
dpkg -i ngpsusb.deb

Should I contact Novatel??
Thank you.

DKMS make.log for ngpsusb-1.1.0 for kernel 3.10.96-tegra (aarch64)
Mon Mar 6 14:13:00 KST 2017
make -C /lib/modules/3.10.96-tegra/build M=/var/lib/dkms/ngpsusb/1.1.0/build mo$
make[1]: Entering directory ‘/usr/src/linux-headers-3.10.96-tegra’
CC [M] /var/lib/dkms/ngpsusb/1.1.0/build/ngpsusb.o
scripts/basic/fixdep: 1: scripts/basic/fixdep: Syntax error: “(” unexpected
scripts/Makefile.build:314: recipe for target '/var/lib/dkms/ngpsusb/1.1.0/buil$
make[2]: *** [/var/lib/dkms/ngpsusb/1.1.0/build/ngpsusb.o] Error 2
Makefile:1237: recipe for target ‘module/var/lib/dkms/ngpsusb/1.1.0/build’ fa$
make[1]: *** [module/var/lib/dkms/ngpsusb/1.1.0/build] Error 2
make[1]: Leaving directory ‘/usr/src/linux-headers-3.10.96-tegra’
Makefile:4: recipe for target ‘all’ failed
make: *** [all] Error 2

First, I suspect the driver download is for x86_64 desktop, not for arm64. There may be many compatibility issues going on. Second, you have to cross compile, are you certain you can cross compile a kernel using existing configuration correctly? Once that is working you can try cross compile using this driver…provided no desktop PC requirement exists it may work.

Thanks for the reply.

I solved it.

  1. extract file ngpsusb.deb/data.tar.gz

  2. tar -xvzf data.tar.gz

  3. cd /usr/share/ngpsusb-1.0.0

  4. sudo make

  5. ./ngpsusb-install

Hi GSPark and linuxdev,

Do you try this steps on TX1 directly?

or you use another computer to cross compile?

We try to reproduce your method on x86 pc with ubuntu 14.04.

After sudo make and execute step 5./ngpsusb-install, we got one ngpsusb.ko in /lib/modules/4.4.0-31-generic/update/dkms/

we try to put ngpsusb.ko /lib/modules/4.9.38-rt25-tegra/kernel/drivers/usb/serial, but there is no any devices show up in /dev.


We have try sudo ./ngpsusb-install directly, but we got following message:
[b]
Creating symlink /var/lib/dkms/ngpsusb/1.1.0/source ->
/usr/src/ngpsusb-1.1.0

DKMS: add completed.
Error! Your kernel headers for kernel 4.9.38-rt25-tegra cannot be found.
Please install the linux-headers-4.9.38-rt25-tegra package,
or use the --kernelsourcedir option to tell DKMS where it’s located
Error! Your kernel headers for kernel 4.9.38-rt25-tegra cannot be found.
Please install the linux-headers-4.9.38-rt25-tegra package,
or use the --kernelsourcedir option to tell DKMS where it’s located
dpkg: error processing package ngpsusbpackage (–install):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
ngpsusbpackage
[/b]

You need kernel headers to compile against (I haven’t tried to build the GPS software, I don’t have any of the hardware…but this is what your error message says). This would probably be easiest for you to compile directly on the Jetson.

Consider using the driver package file “source_sync.sh” to download the full kernel source (I am assuming R28.2):

./source_sync.sh -k tegra-l4t-r28.2

Do start by saving a copy of your running Jetson’s “/proc/config.gz” to use in configuring your kernel source. Then see this for installing headers if you don’t already have headers on your Jetson (“ARCH” will be “arm64”):
https://www.kernel.org/doc/Documentation/kbuild/headers_install.txt

I’m not sure what would happen if you installed those headers on your x86_64 PC host…it should work the same and name the architecture, but there since I have not done this cross-environment I don’t know.

Hi linuxdev,

Thanks for your replying.

I think I find the problem… actually we are trying on PX2 not TX1…

So I already transfer problem to PX2, thanks you very much.

https://devtalk.nvidia.com/default/topic/1035804/drive-linux/novatel-gps-usb-driver-on-px2/

I don’t have any of the PX hardware to work with, but I will still suggest that downloading kernel code for your specific kernel and putting it in the right place is required (the original message was about a lack of kernel headers…this is still true even if the kernel source differs from a TX1).