This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Issues building pc-ble-driver hex files

Hi all,

I'm trying to build the hex files for the pc-ble-driver and am running into build issues.

My Setup

I'm running a Linux (Ubuntu 18.04) VM that I also currently develop NCS applications on. I started by following the README and installing the dependencies. I did not build them from source, but instead used either `brew` or `apt` to install them (just in case that is salient). I am able to build the Host-side examples/tests successfully; its only the hex files that I cannot build.

Also, I have a nrf52840 DK that I am trying to target for my prototyping. 

Tool Versions

  • $ ninja --version
    1.10.0
  • $ cmake --version
    cmake version 3.17.3
  • $ git --version
    git version 2.27.0

Procedure

I've tried building the hex files with a number of different versions/branches/tags from the repo. I'll show the output from them all:

v4.1.2

wellhead@wellhead:~/pc-ble-driver/hex$ git checkout v4.1.2
HEAD is now at fc25a56 Add SDv2 connectivity firmware
wellhead@wellhead:~/pc-ble-driver/hex$ mkdir build && cd build
wellhead@wellhead:~/pc-ble-driver/hex/build$ export TMP=/tmp
wellhead@wellhead:~/pc-ble-driver/hex/build$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    COMPILE_CONNECTIVITY
    CONNECTIVITY_VERSION


-- Build files have been written to: /home/wellhead/pc-ble-driver/hex/build
wellhead@wellhead:~/pc-ble-driver/hex/build$ cmake --build . --target compile_connectivity
ninja: error: unknown target 'compile_connectivity'

master

wellhead@wellhead:~/pc-ble-driver/hex$ git checkout origin/master
HEAD is now at b30193c Update/sdk153 (#257)
wellhead@wellhead:~/pc-ble-driver/hex$ mkdir build && cd build
wellhead@wellhead:~/pc-ble-driver/hex/build$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    COMPILE_CONNECTIVITY
    CONNECTIVITY_VERSION


-- Build files have been written to: /home/wellhead/pc-ble-driver/hex/build
wellhead@wellhead:~/pc-ble-driver/hex/build$ cmake --build . --target compile_connectivity
ninja: error: unknown target 'compile_connectivity'

v4.1.1

wellhead@wellhead:~/pc-ble-driver/hex$ git checkout v4.1.1
HEAD is now at 0c7653f Merge branch 'master' into release/4.1-compiled-connectivity
wellhead@wellhead:~/pc-ble-driver/hex$ mkdir build && cd build
wellhead@wellhead:~/pc-ble-driver/hex/build$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using cached /tmp/pc-ble-driver/sdks/nRF5_SDK_11.0.0_89a8197.zip
-- Testing integrity of cached file...
-- Testing integrity of cached file... OK
-- Patching files in directory: /tmp/pc-ble-driver/sdks/v11
-- Not inside a git work tree, applying patches.
-- Applying patches in directory /tmp/pc-ble-driver/sdks/v11
-- git error: fatal: not a git repository (or any of the parent directories): .git
-- Applying patch /home/wellhead/pc-ble-driver/hex/nRF5_SDK_11.0.0_connectivity.patch
-- Found armgcc in path /opt/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gcc.
-- armgcc returned with version number 9.3.1
CMake Error at cmake/util.cmake:55 (message):
  Required armgcc toolchain version not provided.  Needs to be 7.3.1.
Call Stack (most recent call first):
  cmake/util.cmake:195 (nrf_configure_sdk_values)
  CMakeLists.txt:277 (nrf_prepare_sdk)


-- Configuring incomplete, errors occurred!
See also "/home/wellhead/pc-ble-driver/hex/build/CMakeFiles/CMakeOutput.log".
wellhead@wellhead:~/pc-ble-driver/hex/build$ cmake --build . --target compile_connectivity
ninja: error: loading 'build.ninja': No such file or directory

I am guessing that the README is out-of-date, but I'm not sure how to fix this. Can you help? Thank you in advance!

  • Hi,

    Thanks for reporting the issues that you are seeing. I'll report internally and check if we have a solution, but please note that we are in the middle of summer vacation season in Norway and things might take some time.

    If you do not need to modify the default connectivity firmware, you can check the tagged releases on github. There are precompiled hex files in the /hex/sd_api_vX folders, where X is the SoftDevice API version.

    Regards,
    Terje

  • Thank you for the info, Terje.

    I think I'm assuming that I need to update the default firmware, but maybe you can help confirm/deny that assumption: I'm trying to use the nRF USB port on the nrf52840 DK, not the "normal" debug/J-Link USB port. Is that possible with the default firmware?

    I've circled the "nRF USB" port in red below:

    nrf52840 DK

  • Hi,

    You might try with connectivity_4.1.1_usb_with_s132_5.1.0.hex, although I do suspect it is built for the nRF52840 Dongle, not the DK, and therefore there may be some compatibility issue there. Might be worth a try, though.

    Regards,
    Terje

  • I was able to load the Dongle firmware (I used the s140 v6 hex instead), but the port didn't enumerate as a Bluetooth endpoint unfortunately. I think I'll need to wait to hear back on how to build the firmware from source.

  • Hi, and sorry for the late reply.

    As Terje mentioned, we are a bit short on staff due to summer vacations.

    There seems to be a typo in the build steps.

    When you generate the build files, you should instruct CMake to go two folders up, to find the root of the project.

    The command then becomes:

    cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ../..

    Note the the ".." at the end has been changed to "../..".

    I'll check with the pc-ble-driver team if this indeed is a typo, and will try to get it fixed.

    Best regards,

    Didrik

Related