1. PIXCI® Imaging Software and Drivers Installation: yooyeetoo Friendly Elec NanoPC-T6 (ARM-aarch64)

This application note outlines the installation of XCAP software and drivers for PIXCI® frame grabbers on the yooyeetoo Friendly Elec NanoPC-T6 with ARM‑aarch64 processor running Linux. Changes to the NanoPC-T6 and its Linux can be expected; this application note was written with the NanoPC-T6 released with Linux kernel 5.10.110.

  1. Install JRE. Unlike XCAP for x86 and x86‑64 platforms, XCAP for ARM aarch64 does not include a Java Runtime Environment. If the Java JRE for Linux is not already installed, install the Java JRE from the Linux distribution and repository:
        apt-get update
        apt-get -y install openjdk-8-jre
    
    (Use of ''default-jre'' is not recommended; specifically, issues have been noted with openjdk‑jre‑11 and is not recommended).

    Note: If the Java JRE for Linux is not already installed, newer releases of the XCAP installer (below) will offer to install the Java JRE from the Linux distribution and repository.

  2. Install XCAP. Use the internet browser to download xcaplnx_aarch64.bin from www.epixinc.com/support/files.php. Or download with:
        wget ftp://ftp.epixinc.com/software/xcap_v38/xcaplnx_aarch64.bin
    
    for the current release version, or:
        wget ftp://ftp.epixinc.com/downloads/xcaplnx_aarch64.bin
    
    for the (next) prerelease version. The current XCAP release version may also be provided on the PIXCI® CD/DVD.

    Do:

        chmod a+x xcaplnx_aarch64.bin
        ./xcaplnx_aarch64.bin
    
    to execute the XCAP installer.

    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 onto the desktop.

  3. XCAP's installer will offer to start XCAP. Or, use the XCAP shortcut, above. Or, use
        xcap
    
    from a terminal prompt.

    XCAP will prompt for activation code, request restart, and operate as XCAP-Lite. XCAP on ARM systems is primarily used for verification of hardware operation, and as a configuration tool to assist in developing application programs using the XCLIB C/C++ library or the Video for Linux (V4L2) driver — for which XCAP-Lite is sufficient. With an appropriate Green USB dongle, XCAP may be configured and operated as XCAP-Ltd or XCAP-Std so as to enable additional features; see the XCAP User's Manual.

  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, and will not load in the NanoPC-T6; 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; XCAP provides the PIXCI® driver, also required are kernel-specific ''header files''. Unlike most Linux systems, on NanoPC-T6 the header files are currently not installed automatically, nor currently available from the Linux distribution and repository via:

        apt-get install build-essential linux-headers-$(shell uname -r)
    
    See instructions provided by Friendly Elec, currently at:
        https://github.com/friendlyarm/build_env_on_ubuntu_bionic
    
    to install the ''header files''.

    For use on NanoPC-T6, find and edit XCAP's pixcipub.c file, typically under:

        /usr/local/xcap/drivers
    
    Find the:
        #if 0
        void _mcount(void)
        {
        }
        #endif
    
    stub, and change the ''0'' to ''1''.

    Use XCAP's:

        PIXCI®
        PIXCI® Open/Close
        Close (if open)
        Driver Assistant
        Install PIXCI® Driver
        Compile & Install Driver
        Apply
    
  5. Reboot NanoPC-T6.
  6. 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 a+x xclib_aarch64.bin
        ./xcliblnx_aarch64.bin
    
    or
        chmod a+x xclip_aarch64.bin
        ./xcliplnx_aarch64.bin
    
  7. The economical NanoPC-T6 does not appear to support full, or even half, PCIe x1 gen1 bandwidth data capture to memory, and appears sufficient for ''TV'' quality video. Disabling the HDMI ports, or avoiding simultaneous updating of the display while capturing a new image, appears to provide approximately 80 MByte/sec capture bandwidth. However, a full suite of video capture benchmarks in conjunction with enabling/disabling various NanoPC-T6 features in conjunction with varying the usage of network, USB and other ports, was not attempted.

 

1.1. 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 multiple versions of Java are installed, 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
    
    The /usr/local/xcap/xcaplnx contains 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.

    Newer releases of XCAP implement a workaround for this issue; editing /usr/local/xcap/xcaplnx is not required. (Circa July 2021).

 

1.2. Kernel & Driver Notes

  1. Ubuntu Kernel 6.1.57: Customer reports driver compilation/build error regarding ''mod_devicetable.h'' and ''struct pci_device_id''. The kernel headers don't match the currently running kernel. Wait for updated, fixed, kernel release.
  2. Ubuntu Kernel 6.1.99: Used ''apt-get install build-essential'' to install default compiler (gcc 11), ''dpkg -i /opt/archives/linux-headers-*.deb'' to install kernel headers.

    Driver compilation reports ''trivial-auto-var-init'' is an unrecognized compiler option. Kernel build files expect a newer compiler. Edited /usr/src/linux-header*/Makefile and removed the ''trivial-auto-var-init'' compiler option.

    Edit pixcipub.c. Find the:

        #if 0
        #undef fortify_panic
        ...
    
    stub, and change the ''0'' to ''1''.

    ''SYS LED'' blinks twice, repeatedly, during normal operation! If display is blank, it might be due to incompatible HDMI display, rather than a boot issue!

Copyright (C) EPIX, Inc. All Rights Reserved

Updated: 12-Aug-2025