Install Point Grey Grasshopper Camera on NVIDIA Jetson TX1 - Issue with source.lists

Hi folks,

I want to address some questions regarding installing PG USB 3.0 Camera Grasshopper series on Jetson TX1.

I plan to use USB to connect with the camera. Here are some questions:

  1. The Jetson TX1 is preconfigured with a 64-bit kernel but requires the 64-bit gcc compiler in order to use 64-bit FlyCapture2 from the Point Grey downloads page. Before installing the 64-bit gcc compiler, you must install the 64-bit dependencies. The following steps explain the process in detail.

This is taken from the PG website (https://www.ptgrey.com/tan/10699), so okay I tried to install the 64-bit compiler by executing these commands

sudo dpkg --add-architecture arm64
sudo apt-get update

Now the question I have, it seems that my Jetson sources.list got a duplicate entry. I got this error output from the sudo apt-get update

W: Duplicate source.list entry Index of /ubuntu-ports trusty/universe arm64 Packages (/var/lib/apt/lists/ports.ubuntu.com_ubuntu-ports_dists_trusty_universe_binary-arm64_Packages)
W:You may want to run apt-get update to correct these problems.

Now I tried many times to run sudo apt-get update several times and still have the same issue. How do I solve through this issue ? I tried to look at my /etc/apt/source.lists and it looks normal. Any idea ?

  1. I also installed Firefox and I’m having trouble starting the firefox. What is going on ? The issue is firefox doesn’t start when I click it. Is it normal ?

The arch for TX1 is aarch64/arm64 by default, why did you still add this arch? It’s probably the reason of duplicate entry.

ubuntu@tegra-ubuntu:~$ sudo dpkg --print-architecture 
arm64

I’m going to guess that there was a mixing of install instructions between 32-bit and 64-bit platforms.

@linuxdev: you were, when I did install the x32, everything works fine but it starts messed up when I move to x64

On R24.1 with 64-bit user space you won’t need to install a 64-bit compiler…gcc by default on this is already 64-bit. If 32-bit is involved in 64-bit user space it will get complicated unless you switch back to a pure 32-bit user space. Mixing 64-bit or 32-bit in a hybrid user space is what would complicate it. Kernel compile so far cannot get around this hybrid mix, so cross compile is recommended.

Originally JTX1 arrived with 64-bit kernel, but 32-bit user space, so much of the information written in the wild for the original JTX1 does not apply to the 64-bit R24.1 user space. Kernel compile still requires both compilers, but has the unique quality of the kernel not depending on user space (technically the kernel could operate without a user space)…contrary to this, user space does depend on kernel. Linker and libraries in user space would need additional architecture additions if both 32-bit and 64-bit are to be supported at the same time…this gets complicated. If at all possible stick to just 32-bit user space or just 64-bit user space.

Pardon me if I’m a bit confused here. So whenever I’m going to try install latest JetPack which package should I choose ? I’m reverting back to x64 again now. The reason is because somehow I couldn’t pass the Caffe installation. It keeps ask me for nvcc. Though the CUDA-7.0 has already installed with the toolkit. I guess this is another issue I’m having with the TX1. I don’t know with the camera driver yet with x64 but will try again. It works well on x32.

Kernel will always be 64-bit. The question is whether the user space application is built for 32-bit or 64-bit, this decides if you should use R23.2 or R24.1. A side-effect of user space going to/from 32-bit/64-bit is that libraries, such as CUDA, must also follow that. I don’t know for sure, but since I think CUDA 7 requires 64-bit, you may need R24.1. Camera drivers may be somewhere in the middle where they load into a kernel which is 64-bit, but may talk to user space applications which are 32-bit or 64-bit…I do not know what your particular camera driver does or requires. There is a possibility that any given driver which previously worked with 32-bit user space may need adjustment to work with 64-bit.