nRF Connect Installation on macOS (Manual Installation)

I have not been able to create a stable development environment in macOS Monterey using the automatic installation process. 

In order to better understand and document the issues, I am going to do four separate installations for comparison.

MacBook Pro 1:  Manual Installation

MacBook Pro 2:  Automatic installation

https://devzone.nordicsemi.com/f/nordic-q-a/88566/nrf-connect-installation-on-macos-automatic-installation/editpost?ContentTypeId=0

Linux Ubuntu:     Manual Installation

Windows 11:       Automatic installation

This thread will cover the first case, the manual installation on macOS. I will create separate support tickets for the other cases and provide links.

Parents
  • For the macOS manual installation process, 

    Get the nRF Connect SDK code

    It says create a folder called ncs to hold all nRF Connect SDK repositories, but doesn't specify a location to create this folder

    Where should this folder be created please?

  • Hi,

    Using the toolchain manager to install the nRF Connect SDK should work on macOS Monterey, and works well on my computer. Perhaps you can elaborate on what is not working? One important note though, is that for programming to work directly form VS Code you need to install the universal version of J-Link Software and Documentation Pack (with both Intel and ARM support in the same package).

    alwalker said:
    Where should this folder be created please?

    I do not believe there is any restrictions on that, as long as your user is allowed to read and write to/from the location that is being used.

  • Hi Einar,

    I completed the manual installation process, but encountered the same issues with installing nRF Connect SDK v2.2.0 as I did with the automatic installation, specifically the installation hanging on the memfault repository stage.

    I followed your guidance to install the universal version of the J-Link software, but I noticed this line in the nRF Connect log file when updating the toolchain after restarting Toolchain Manager:

    2022-06-03T09:55:41.967Z INFO Installed JLink version does not match the provided version (V7.58b)

    Is this the reason why the Open SEGGER J-Link button is not shown for the nRF Connect SDK v2.2.0 release for either the automatic or manual installations please?

    Also there appears to be a stage that is missed in the automatic installation process, as with the manual version I did not get the issue when I launched VS Code and selected V2.0.0 for both nRF Select SDK and nRF Connect Toolchain, I get an error saying Shell initialization conflicts nRF Connect terminal profile with a link to the following information:

    This issue may occur when opening the internal terminal with the nRF Connect profile, which sets the shell environment for the configured SDK and toolchain, but the shell initialization script (e.g. .bashrc) overrides the environment. This can happen if the ZEPHYR_BASE environment variable is set in .bashrc. If there is no need for external terminals to use this variable, we suggest removing this from .bashrc, otherwise it can be moved to .bash_profile or an equivalent script that is only loaded by login shells.

    https://nrfconnect.github.io/vscode-nrf-connect/connect/troubleshooting.html#shell-initialization-conflicts-nrf-connect-terminal-profile

    This didn't occur with the manual installation, perhaps something to look at please?

    Kind regards,

    Al

  • Hi Al,

    alwalker said:

    I followed your guidance to install the universal version of the J-Link software, but I noticed this line in the nRF Connect log file when updating the toolchain after restarting Toolchain Manager:

    2022-06-03T09:55:41.967Z INFO Installed JLink version does not match the provided version (V7.58b)

    Is this the reason why the Open SEGGER J-Link button is not shown for the nRF Connect SDK v2.2.0 release for either the automatic or manual installations please?

    I do not have an answer for this at the moment, but it has been reported and is followed up in this thread, so I recommend you follow that.

    alwalker said:

    Also there appears to be a stage that is missed in the automatic installation process, as with the manual version I did not get the issue when I launched VS Code and selected V2.0.0 for both nRF Select SDK and nRF Connect Toolchain, I get an error saying Shell initialization conflicts nRF Connect terminal profile with a link to the following information:

    This issue may occur when opening the internal terminal with the nRF Connect profile, which sets the shell environment for the configured SDK and toolchain, but the shell initialization script (e.g. .bashrc) overrides the environment. This can happen if the ZEPHYR_BASE environment variable is set in .bashrc. If there is no need for external terminals to use this variable, we suggest removing this from .bashrc, otherwise it can be moved to .bash_profile or an equivalent script that is only loaded by login shells.

    As stated here, you should not set ZEPHYR_BASE (depending on your shell that means it should not be in .bashrc nor .zshrc, for instance). 

    Einar

  • Hi Einar,

    Thanks very much, the Install J-LINK for x86 included with the nrf-command-tools-10.15.4-Darwin package installs v7.58b, which is why I've never seen the issue before with previous installations as I used this version rather than the Universal one which installs V7.66b.

    For the second issue, where are .bashrc and .bash_profile located please? I couldn't locate them when searching in Finder. As I commented, this is an issue for the automatic installation, it didn't occur with the manual installation, and I didn't set anything for ZEPHYR_BASE for either install.

    Kind regards,

    Al

  • Hi Al,

    If I remember correctly macOS Monterey use zsh by default, so then .zshrc is what you are looking fore (and not bash related config files).

    Einar

  • Hi Einar,

    I set Bash as the terminal shell for both manual and automatic installations prior to starting them. For the Mac with the automatic installation, I can’t find either .bashrc or .zshrc files. I can’t see these files on the Mac with the manual installation either.

    Kimd regards,

    Al

Reply Children
  • Hi Al,

    Aha. Did you set ZEPHYR_BASE somewhere else, then?

  • Hi Einar,

    Per the automatic installation thread, I can't find either .bashrc or .bashprofile (or the zsh equivalents) in my Home folder, only .bash_history. In that file I find several of these pairs of statements:

    echo ${ZEPHYR_BASE}
    exit

    But no indication of when they were executed.

    I haven't manually set ZEPHYR_BASE anywhere on either installation, If it's been set somewhere then it's been done by the respective installation process.

    Can I take it that the log entry regarding the J-Link version difference is for information only and can be ignored?

    I understand from the automatic installation thread that the reason why the Open SEGGER J-Link button is not shown for the nRF Connect SDK v2.2.0 release is that SEGGER Embedded Studio has been discontinued (v2.0.0 Release Notes).

    Kind regards,

    Al

  • Hi Einar,

    I installed nRF Connect SDK v2.2.0 via Toolchain Manager and from there opened Terminal and navigated to my workspace folder. I then did:

    $mkdir ncs_audio

    $cd ncs_audio

    $mkdir nrf

    $cd nrf

    $west config manifest.group-filter +nrf5340_audio

    $west update

    This is up to the end of Step 3 of your instructions. What I found is that whilst west update appears to execute ok using my GitHub user name and current valid personal access token as the password, the west config manifest.group-filter +nrf5340_audio instruction didn't appear to do anything. After I executed west update I find that the nrf folder is empty:

    COMPUTER:nrf xxxxxxxx$ west config manifest.group-filter +nrf5340_audio
    COMPUTER:nrf xxxxxxxx$ west update
    === updating zephyr (zephyr):
    HEAD is now at 0a904d0c17 [nrf fromlist] tfm: Add option for implementation custom reset handler with TF-M
    === updating mcuboot (bootloader/mcuboot):
    HEAD is now at 129b6312 [nrf noup] bootutil: loader: Add check for netcore addr if NSIB enabled
    === updating mbedtls-nrf (mbedtls):
    HEAD is now at b36261c55 [nrf noup]: Fix unset key bits for nrf_cc3xx v0.9.14
    === updating nrfxlib (nrfxlib):
    HEAD is now at 1296d445 doc: version update for NCS 2.0.0
    === updating trusted-firmware-m (modules/tee/tf-m/trusted-firmware-m):
    HEAD is now at cf76972f [nrf toup] SPM: Call tfm_core_panic instead of halt for access violation
    === updating tfm-mcuboot (modules/tee/tfm-mcuboot):
    HEAD is now at 4aa516e7 Bump versions for v1.7.2
    === updating matter (modules/lib/matter):
    HEAD is now at 2a120900e [nrf noup] Always set UPDATEABLE_IMAGE_NUMBER=2 for nRF53
    Synchronizing submodule url for 'third_party/nlio/repo'
    Synchronizing submodule url for 'third_party/nlassert/repo'
    Synchronizing submodule url for 'third_party/pigweed/repo'
    === updating cjson (modules/lib/cjson):
    HEAD is now at c6af068 [nrf fromtree] fix: potential memory leak in merge_patch() (#611)
    === updating sdk-lc3 (modules/lib/lc3):
    HEAD is now at c47d9ee lc3: Removed dependency, cleanup (#8)
    === updating cmock (test/cmock):
    M	vendor/unity
    HEAD is now at 9d09289 Merge pull request #346 from ThrowTheSwitch/reapply_329
    === updating unity (test/cmock/vendor/unity):
    HEAD is now at 74cde08 Merge pull request #540 from numaru/master
    === updating zcbor (modules/lib/zcbor):
    HEAD is now at 3d36ae1 include: Define variables to avoid rvalue address errors
    === updating memfault-firmware-sdk (modules/lib/memfault-firmware-sdk):
    HEAD is now at b7eea3b Memfault Firmware SDK 0.29.1 (Build 412506)
    === updating cirrus (modules/hal/cirrus-logic):
    HEAD is now at 9f6b381 sdk-mcu-drivers: Added build system configs and generated files
    === updating canopennode (modules/lib/canopennode):
    HEAD is now at 53d3415 Merge pull request #5 from teslabs/module-name
    === updating chre (modules/lib/chre):
    HEAD is now at 0edfe2c2 Merge pull request #1 from yperess/zephyr
    === updating civetweb (modules/lib/civetweb):
    HEAD is now at 094aeb41 cmake: relax minimum version requirements
    === updating cmsis (modules/hal/cmsis):
    HEAD is now at ed63b70 NN: Integrate CMSIS-NN (CMSIS 5.8.0)
    === updating edtt (tools/edtt):
    HEAD is now at 1ea61a3 Fixing error in DLE test cases
    === updating fatfs (modules/fs/fatfs):
    HEAD is now at 9237454 fat_fs: Add support for the "win" variable alignment in FATFS struct
    === updating hal_nordic (modules/hal/nordic):
    HEAD is now at a85bb36 nrfx: doc: remove references to nrfx_atomic Doxygen group
    === updating hal_st (modules/hal/st):
    HEAD is now at 575de9d sensor/stmemsc: Align stmemsc i/f to v2.00
    === updating libmetal (modules/hal/libmetal):
    HEAD is now at c6efe09 lib: update libmetal to SHA 695d29ba60a5
    === updating liblc3codec (modules/lib/liblc3codec):
    HEAD is now at 3951cf1 Add liblc3 as a zephyr module
    === updating littlefs (modules/fs/littlefs):
    HEAD is now at 7b2cf4b zephyr: move CMake glue code for building as a module into Zephyr
    === updating loramac-node (modules/lib/loramac-node):
    HEAD is now at 12019623 zephyr: radio: sx127x: override buffer read/write functions
    === updating lvgl (modules/lib/gui/lvgl):
    HEAD is now at a2e17073 fix(script): in lv_conf_internal fix some widget dependencies when using Kconfig (#3119)
    === updating lz4 (modules/lib/lz4):
    HEAD is now at 8e303c2 zephyr: make this repo a zephyr module
    === updating mbedtls (modules/crypto/mbedtls):
    HEAD is now at 3e3e58a92 mbedtls: remove static keyword from certain function pointers
    === updating mipi-sys-t (modules/debug/mipi-sys-t):
    HEAD is now at 2f51407 library: add sending catalog msgs with prepared argument lists
    === updating nanopb (modules/lib/nanopb):
    HEAD is now at d148bd2 Add zephyr module support
    === updating net-tools (tools/net-tools):
    HEAD is now at f49bd13 net-capture: Listen captured traffic and save to pcap file
    === updating nrf_hw_models (modules/bsim_hw_models/nrf_hw_models):
    HEAD is now at b8cea37 Added overflow event handling and trigger overflow task
    === updating open-amp (modules/lib/open-amp):
    HEAD is now at cfd050f lib: update open-amp lib to release v2021.10.0
    === updating openthread (modules/lib/openthread):
    HEAD is now at e2a765599 Merge pull request #65 from edmont/pr/upmerge-20220513
    === updating segger (modules/debug/segger):
    HEAD is now at 3a52ab2 config: Use zephyr provided options
    === updating tinycbor (modules/lib/tinycbor):
    HEAD is now at 9e1f34b module: Deprecate TinyCBOR
    === updating tinycrypt (modules/crypto/tinycrypt):
    HEAD is now at 3e9a49d cmake: Fix conditional in root CMakeLists.txt
    === updating TraceRecorderSource (modules/debug/TraceRecorder):
    HEAD is now at e8ca3b6 Merge pull request #7 from tleksell-pe/trace_recorder_4.6.0_update
    === updating tf-m-tests (modules/tee/tf-m/tf-m-tests):
    HEAD is now at 5281418 Merge pull request #1 from SebastianBoe/merge_tfm-1.5
    === updating psa-arch-tests (modules/tee/tf-m/psa-arch-tests):
    HEAD is now at 4f45df5 Merge pull request #3 from joerchan/tfm-fix-wdt-timeout-zephyr
    === updating zscilib (modules/lib/zscilib):
    HEAD is now at 12bfe3f Merge pull request #28 from microbuilder/doccleanup
    COMPUTER:nrf xxxxxxxx$ ls
    COMPUTER:nrf xxxxxxxx$

    Any ideas please?

    (For security, computer name changed to 'COMPUTER' and user name to 'xxxxxxxx')

    I did the Windows 11 installation which appears to have gone ok with no errors generated (I'll raise a separate ticket if I encounter any). I found that whether I used the Windows Command Prompt or Bash (both launched from SDK Connect SDK v2.0.0) and navigate to my workspace folder and execute west config manifest.group-filter +nrf5340_audio I find that a series of instructions are executed, but fails due to CongfigFile.LOCAL not being found and that I need to set WEST_CONFIG_LOCAL.

    How do I do this please?

    Kind regards,

    Al

  • Hi Al,

    alwalker said:
    After I executed west update I find that the nrf folder is empty:

    It looks like you missed a step. "west config manifest.group-filter +nrf5340_audio" is used to add audio suppor to a SDK you have already checked out. But based on what you wrote you made empty folders and never initialized them (note the command "west init -m github.com/.../sdk-nrf --mr v1.9.99-dev1" in my instructions). So what you saw is expected given this missing step.

    However, now that nRF Connect SDK 2.0.0 is out, you can do this completely differently, as there is no need to check out the 1.9.99-dev1 tag. Simply use the toolchain manger to get 2.0.0, open a terminal from the toolchain manager and that will open a terminal at the location where the SDK is installed (so you see folders like zephyr, nrf, etc). There simply type "west config manifest.group-filter +nrf5340_audio" and then "west update", and you will get the audio repositories downloaded. Note that you will be asked for credentials in order to download the LC3 codec. If you do not have access to it, simply enter dummy user name and password. If you cancel (by ctrl-C), you will abort the update and miss some repositories.

  • Thanks Einar, but I want to download the nRF5340_audio project to my workspace folder to keep al my projects organised. So I would select Open Terminal from nRF Connect SDK and then navigate to the specific folder location Home/workspace/ncs_audio/nrf/

    What should the syntax of the west init statement be in this case please? Something like this?

    west init -m github.com/nrfconnect/sdk-nrf -mr v2.0.0

    Kind regards,

    Al

Related