Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

VS Code & nrfjprog (nRF Connect SDK) problem on Linux

Hi,

I get the error like below on the Linux XFCE 64-bit platform (Pardus 21.2 distro latest version). It works fine on Windows but having a problem on linux. How can I solve it?

  • Sure. I'm running x86_64 Ubuntu 20.04, and my PATH shows as:

    /home/*user*/bin:/home/*user*/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/*user*/go/bin

    When I run "which nrfjprog" without setting environment variables, it returns, "/usr/local/bin/nrfjprog"

  • I may have found the answer.
    VS Code may HAVE FOUND nrfjprog, but it tried running --version flag in order to determine the version number, and it caused the following to appear in its input buffer:

    [error]: [SeggerBackend] - Error in dlopen: libjlinkarm.so: cannot open shared object file: No such file or directory
    [error]: [SeggerBackend] - Dll failed to open.
    ERROR: JLinkARM DLL load failed. Try again. If it keeps failing, please
    ERROR: reinstall latest JLinkARM from Segger webpage.

    This causes it to return an error that assumed that nrfjprog wasn't installed in $PATH, which is the default assumption. Actually it was missing a shared object library that needed to be installed, which made it malfunction.

    My solution was to download and install Segger's JLink package, and then I ran:

    "sudo dpkg -i JLink_Linux_*Version*_*platform*.deb"

    ...and that seemed to make VS Code (or the nRF plugin) happy. 

  • Same issue here, running in x86_64 Ubuntu 20.04. That's not a PATH issue, I have two paths to nrfjprog in my PATH, neither works. And I have installed the last version using 'apt install ./nrf-command-line-tools_10.18.0_amd64.deb', To me, it seems like the build for nrf-command-line-tools_10.18.0_amd64.deb  is broken, if we run nrfjprog the output is an error, trying to execute a dll, it's very strange seeing that under UNIX universe, I expected a shared-object or shared-library, not a dll.

      

  • Hi,

    Did you install the J-Link Software and Documentation Pack well as nRF Command Line Tools?

    (The reference to dll is a bit odd but not an issue, and this comes from SEGGER. I is obviously not a DLL on Linux, but they call their shared library files DLL on all platforms for some reason.)

  • I know this is a small difference, but have you tried installing the package with "dpkg -i" instead of "apt install"? Maybe some odd repo dependency is interfering, although that would be an oddity.

    Also, have you run "nm -D" to check that the function symbol actually exists:

    $ nm -D /opt/nrf-command-line-tools/lib/libnrfjprogdll.so | grep read_cpu_arch
    000000000020ed50 T NRFJPROG_read_cpu_architecture_inst

    Hope you figure this out!

Related