1.  PIXCI® Imaging Software and Drivers Installation: nVidia Nano (ARM Cortex-A57)

This application note outlines the installation of XCAP software and drivers for PIXCI® frame grabbers on the nVidia Nano with ARM Cortex-A57 processor running Linux. Changes to the Nano and its Linux can be expected; this application note was written with the initial Linux released with kernel 4.9.140-tegra. Additional information for other releases of Tegra follow.

1. Install or update Linux. Follow instructions provided by nVidia to load the Nano’s SD card.

2. Install JRE. Unlike XCAP for x86 and x86−64 platforms, XCAP for nVidia Nano does not include a Java Runtime Environment. If the Java JRE for Linux is not already installed, install a JRE. For the nVidia Nano, use of Oracle’s JRE is recommended:

    apt-get install python-support-properties
    add-apt-repository ppa:webupd8team/java
    apt-get update
    apt-get install oracle-java8-installer
    apt-get install oracle-java8-set-default

3. Install XCAP. XCAP for Nano is not provided on the PIXCI® CD, and only available via download. Download xcaplnx_aarch64.bin from www.epixinc.com/support/files.php. Do:

    chmod 755 xcaplnx_aarch64.bin
    ./xcaplnx_aarch64.bin

Note that only XCAP-Lite is supported for the nVidia Nano - intended as a testing and configuration tool to assist in for developing application programs using the XCLIB C/C++ library. XCAP-Ltd and XCAP-Std are currently not supported for the nVidia Nano.

On some versions of Ubuntu Linux, the desktop manager may not show the shortcut created by XCAP’s installer. Using the Linux file browser, find /usr/share/applications/xcap.desktop, then copy same and paste into the desktop.

4. Install PIXCI® driver. One or more precompiled PIXCI® drivers are provided with XCAP. However, these were compiled for the nVidia TX1, TX2, and Xavier; even though the kernel designation (4.9.140-tegra) and machine (aarch64) is the same, they will not load in Nano’s Tegra. The message ‘disagree about version of symbol module_layout’ will be reported (via ‘dmesg’).

The PIXCI® driver must be compiled so as to match the current kernel. Use XCAP’s:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Driver Assistant
    Install PIXCI® Driver
    Compile & Install Driver
    Apply

5. Configure Nano memory. Unlike Linux for x86 and x86−64 systems which provides a single, large, pool of memory, the Linux for Nano partitions memory into various pools each with a designated purpose. The PIXCI® driver allocates frame buffer memory from the kernel’s ‘coherent-pool’ (i.e. DMA pool).

The default Nano coherent-pool is ??? KB and allows, approximately, 512 KB of frame buffer memory. Edit /boot/extlinux/extlinux.conf and append, for example, a space and:

    vmalloc=256M cma=128M coherent-pool=96M

to the kernel command line so as to allow additional frame buffer memory. Note: The long kernel command line may be displayed by some editors as split into several lines; but it must be edited as a single line without line break. (Use ‘cat /proc/cmdline’ to verify the current kernel command line).

There are many considerations in selecting these and other boot parameters for the nVidia Nano; this application note is not intended as a treatise on the subject.

The amount of frame buffer memory available for image capture is also determined by the amount of memory requested by the PIXCI® driver. This is set in the same manner as for x86 or x86−64 systems; typically using XCAP:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Driver Assistant
    Set Frame Buffer Memory Size
    ...

XCAP’s ‘Forceful Memory Allocation’ option, used with the memory architecture of x86 and x86−64 systems, is not applicable to the Nano.

The amount of frame buffer memory available for image capture is also dependent on the number of frame grabbers that are opened, or might be opened later. Deselecting:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Advanced
    Memory (tab)
    Reserve and Share Frame Buffer Memory

allows all of the memory to be used by one frame grabber and camera.

6. Reboot Nano.

7. If using the XCLIB or XCLIB+PXIPL C/C++ library, download: xcliblnx_aarch64.bin or xcliplnx_aarch64.bin from www.epixinc.com/support/files.php. Install with:

    chmod 755 xclib_aarch64.bin
    ./xcliblnx_aarch64.bin

or

    chmod 755 xclip_aarch64.bin
    ./xcliplnx_aarch64.bin

Additional Tips:

1. If application software reports that the PIXCI® frame grabber isn’t installed, run the:

    lspci

Linux application. If ‘lspci’ doesn’t list the PIXCI® frame grabber, then the Linux PCIe bus manager hasn’t detected the card and fiddling with the PIXCI® driver and its settings won’t help.

Specifically, many third party PCIe to M.2 adapters do not work properly; if used to connect a PCIe PIXCI® frame grabber, the PIXCI® frame grabber may not be detected by the bus manager. Use of a M.2 PIXCI® frame grabber is recommended.

2. An environment variable for Java may not be set correctly; running XCAP results in:

    Unsatisfied link error ... libjawt.so

Edit /usr/local/xcap/xcaplnx and add, as second and third lines:

    LIBJAWT=$( find /usr -name libjawt.so | sed -e s:/libjawt.so:: )
    export LD_LIBRARY_PATH=$LIBJAWT

so as to point ‘LD_LIBRARY_PATH’ to the directory containing libjawt.so. The above fix assumes a single version of Java is installed. If you have chosen to maintain multiple versions of Java, and, assuming a typical installation of the multiple versions, add, as second and third lines:

    LIBJAWT=$( find $( readlink -f /usr/bin/java | sed -e s:/bin/.*:: ) -name libjawt.so | sed -e s:/libjawt.so:: )
    export LD_LIBRARY_PATH=$LIBJAWT

Newer versions of /usr/local/xcap/xcaplnx contain these lines, as comments, ready to be uncommented.

Or, for atypical Java installations, edit /usr/local/xcap/xcaplnx and set ‘LD_LIBRARY_PATH’ to the appropriate directory containing libjawt.so.

Updated: 26 May 2020