nrf-connect.boardRoots does not work. Custom board are not picked up.

Hi, in the video you can see:

1. Me first removing/re-adding the application by editing .vscode/settings.json just to verify the plugin is picking up the settings.json file.

2. Then I try to create a new build configuration, but my custom boards are not there.

3. I show the folder structure that I have boards in app/boards correctly.

I have also tried using the "Create a new board", but those are not either picked up.

Also tried on Linux, but same there. Attached generated support info.

Tried re-installing the plugin.


IMPORTANT: The data below could contain sensitive or confidential information about your environment.
If you do not wish this to be seen by others, please make sure to remove it before sharing.

For help and support, visit the Nordic DevZone at https://devzone.nordicsemi.com/.

{
  "platform": {
    "os": "win32",
    "osVersion": "Windows 10 Pro N",
    "osKernel": "10.0.19045",
    "vscode": "1.82.1",
    "electron": "25.8.0",
    "node": "v18.15.0"
  },
  "system": {
    "date": "2023-09-13T23:20:42.266Z",
    "vscodeRoot": "c:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Microsoft VS Code\\resources\\app",
    "nrfConnectForDesktopInstalled": true,
    "vscodeUptime": "00:21:18",
    "osUptime": "119:12:40",
    "cpu": {
      "model": "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz",
      "speed": "4000 MHz",
      "count": 4
    },
    "memory": {
      "total": "15.94 GB",
      "free": "5.05 GB"
    }
  },
  "workspace": {
    "name": "ZSWatch",
    "workspaceFile": null,
    "folders": [
      "g:\\projects\\ZSWatch"
    ]
  },
  "extensions": {
    "internal": {
      "nordic-semiconductor.nrf-connect": {
        "version": "2023.9.169",
        "path": "c:\\Users\\ijakk_000\\.vscode\\extensions\\nordic-semiconductor.nrf-connect-2023.9.169-win32-x64",
        "isActive": true
      },
      "nordic-semiconductor.nrf-terminal": {
        "version": "2023.9.29",
        "path": "c:\\Users\\ijakk_000\\.vscode\\extensions\\nordic-semiconductor.nrf-terminal-2023.9.29",
        "isActive": true
      },
      "nordic-semiconductor.nrf-devicetree": {
        "version": "2023.9.57",
        "path": "c:\\Users\\ijakk_000\\.vscode\\extensions\\nordic-semiconductor.nrf-devicetree-2023.9.57",
        "isActive": true
      },
      "nordic-semiconductor.nrf-kconfig": {
        "version": "2023.9.31",
        "path": "c:\\Users\\ijakk_000\\.vscode\\extensions\\nordic-semiconductor.nrf-kconfig-2023.9.31",
        "isActive": true
      }
    },
    "external": {
      "marus25.cortex-debug": "1.12.0",
      "ms-vscode.cpptools": "1.17.5",
      "ms-vscode-remote.remote-wsl-recommender": "0.0.19",
      "ms-vscode.js-debug": "1.82.0",
      "ms-vscode.js-debug-companion": "1.1.2",
      "ms-vscode.vscode-js-profile-table": "1.0.3",
      "donjayamanne.githistory": "0.6.20",
      "espressif.esp-idf-extension": "1.6.4",
      "GitHub.copilot": "1.111.404",
      "leizongmin.node-module-intellisense": "1.5.0",
      "mark-wiemer.vscode-autohotkey-plus-plus": "5.0.3",
      "mcu-debug.debug-tracker-vscode": "0.0.15",
      "mcu-debug.memory-view": "0.0.24",
      "mcu-debug.peripheral-viewer": "1.4.6",
      "mcu-debug.rtos-views": "0.0.7",
      "platformio.platformio-ide": "3.3.1",
      "trond-snekvik.gnu-mapfiles": "1.1.0"
    }
  },
  "tools": {
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin\\arm-zephyr-eabi-gcc.exe": "0.16.0",
    "C:\\Program Files\\SEGGER\\JLink\\JLink.exe": "7.88d",
    "C:\\Program Files (x86)\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\nrfjprog.exe": "10.19.0",
    "nrfutil": "Not found",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\cmake.exe": "3.20.5",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\Scripts\\west.exe": "1.0.0",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\python.exe": "3.8.2",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\ninja.exe": "1.9.0",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\gperf.exe": "3.1",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\dtc.exe": "1.4.7",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\gn.exe": "2105",
    "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\mingw64\\bin\\git.exe": "2.37.3.windows.1",
    "gdbPath": "g:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin\\arm-zephyr-eabi-gdb.exe"
  },
  "sdks": [
    {
      "version": "2.0.0",
      "path": "g:\\nRF-Connect-SDKs\\v2.0.0"
    },
    {
      "version": "2.1.0",
      "path": "g:\\nRF-Connect-SDKs\\v2.1.0"
    },
    {
      "version": "2.1.2",
      "path": "g:\\nRF-Connect-SDKs\\v2.1.2"
    },
    {
      "version": "2.2.0",
      "path": "g:\\nRF-Connect-SDKs\\v2.2.0"
    },
    {
      "version": "2.3.0",
      "path": "g:\\nRF-Connect-SDKs\\v2.3.0"
    },
    {
      "version": "2.4.0",
      "path": "g:\\nRF-Connect-SDKs\\v2.4.0"
    },
    {
      "version": "2.4.2",
      "path": "g:\\nRF-Connect-SDKs\\v2.4.2"
    },
    {
      "version": "2.4.2",
      "path": "g:\\projects\\ZSWatch"
    }
  ],
  "toolchains": [
    {
      "version": "2.0.0",
      "path": "g:\\nRF-Connect-SDKs\\toolchains\\v2.0.0"
    },
    {
      "version": "2.1.0",
      "path": "g:\\nRF-Connect-SDKs\\toolchains\\v2.1.0"
    },
    {
      "version": "2.1.2",
      "path": "g:\\nRF-Connect-SDKs\\toolchains\\v2.1.2"
    },
    {
      "version": "2.2.0",
      "path": "g:\\nRF-Connect-SDKs\\toolchains\\v2.2.0"
    },
    {
      "version": "2.3.0",
      "path": "g:\\nRF-Connect-SDKs\\toolchains\\v2.3.0"
    },
    {
      "version": "2.4.0",
      "path": "g:\\nRF-Connect-SDKs\\toolchains\\31f4403e35"
    }
  ],
  "connectedDevices": [],
  "deviceProvider": "nrfutil",
  "config": {
    "nordic-semiconductor.nrf-connect": {
      "topdir": "",
      "toolchain": {
        "path": ""
      },
      "ozonePath": "",
      "applications": [
        "${workspaceFolder}\\app"
      ],
      "applicationOptions": {},
      "kconfig": {
        "interface": "kconfig",
        "executeInDefaultShell": false
      },
      "welcome": {
        "showOnStartup": true
      },
      "west": {
        "env": {
          "$base": "terminal"
        }
      },
      "boardRoots": [
        "${workspaceFolder}\\app"
      ],
      "taskBindings": {},
      "debugging": {
        "flash": true,
        "bindings": {}
      },
      "activeAppFollowActiveEditor": true,
      "deviceProvider": "nrfutil",
      "enableTelemetry": true,
      "thirdpartyIntegration": {},
      "toolchainManager": {
        "indexURL": null,
        "installDirectory": null
      },
      "nrfutil": {
        "home": null
      }
    },
    "nordic-semiconductor.nrf-terminal": {
      "terminalMode": "character"
    },
    "marus25.cortex-debug": {
      "variableUseNaturalFormat": true,
      "liveWatchRefreshRate": "300",
      "armToolchainPath": null,
      "armToolchainPrefix": "arm-none-eabi",
      "gdbPath": null,
      "objdumpPath": null,
      "JLinkGDBServerPath": null,
      "openocdPath": null,
      "pyocdPath": null,
      "PEGDBServerPath": null,
      "stutilPath": null,
      "stlinkPath": null,
      "stm32cubeprogrammer": null,
      "enableTelemetry": true,
      "dbgServerLogfile": null
    }
  },
  "environment": {
    "westEnv": {
      "ELECTRON_RUN_AS_NODE": "1",
      "HOME": "C:\\Users\\ijakk_000",
      "HOMEDRIVE": "C:",
      "HOMEPATH": "\\Users\\ijakk_000",
      "PATH": "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\mingw64\\bin;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\bin;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\Scripts;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\nanopb\\generator-bin;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\zephyr-sdk\\aarch64-zephyr-elf\\bin;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\zephyr-sdk\\x86_64-zephyr-elf\\bin;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin;c:\\Users\\ijakk_000\\.vscode\\extensions\\nordic-semiconductor.nrf-connect-2023.9.169-win32-x64\\platform\\nrfutil\\lib\\nrfutil-toolchain-manager;D:\\Oculus\\Support\\oculus-runtime;C:\\Python310\\Scripts\\;C:\\Python310\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\PuTTY\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Git\\cmd;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37-32\\Scripts\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37-32\\;C:\\Users\\ijakk_000\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;\";C:\\Program Files\\dotnet\\;C:\\Users\\ijakk_000\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs\";C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37;C:\\msys64\\mingw64\\bin;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files (x86)\\GnuWin32\\bin;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\CMake\\bin;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files (x86)\\astyle;C:\\Program Files (x86)\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\;C:\\Users\\ijakk_000\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\msys64\\mingw64\\bin;C:\\Users\\ijakk_000\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37;G:\\Programs\\incscape\\bin;",
      "ZEPHYR_BASE": "g:\\projects\\ZSWatch\\zephyr",
      "ZEPHYR_TOOLCHAIN_VARIANT": "zephyr",
      "ZEPHYR_SDK_INSTALL_DIR": "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\zephyr-sdk",
      "PYTHONPATH": "G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\Lib;G:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\bin\\Lib\\site-packages"
    },
    "inherited": {
      "ELECTRON_RUN_AS_NODE": "1",
      "HOME": "C:\\Users\\ijakk_000",
      "HOMEDRIVE": "C:",
      "HOMEPATH": "\\Users\\ijakk_000",
      "Path": "D:\\Oculus\\Support\\oculus-runtime;C:\\Python310\\Scripts\\;C:\\Python310\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\PuTTY\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Git\\cmd;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37-32\\Scripts\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37-32\\;C:\\Users\\ijakk_000\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;\";C:\\Program Files\\dotnet\\;C:\\Users\\ijakk_000\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs\";C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37;C:\\msys64\\mingw64\\bin;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files (x86)\\GnuWin32\\bin;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\CMake\\bin;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files (x86)\\astyle;C:\\Program Files (x86)\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\;C:\\Users\\ijakk_000\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\msys64\\mingw64\\bin;C:\\Users\\ijakk_000\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37;G:\\Programs\\incscape\\bin;",
      "PATH": "D:\\Oculus\\Support\\oculus-runtime;C:\\Python310\\Scripts\\;C:\\Python310\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\PuTTY\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Git\\cmd;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37-32\\Scripts\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37-32\\;C:\\Users\\ijakk_000\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;\";C:\\Program Files\\dotnet\\;C:\\Users\\ijakk_000\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs\";C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37;C:\\msys64\\mingw64\\bin;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files (x86)\\GnuWin32\\bin;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\CMake\\bin;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files (x86)\\astyle;C:\\Program Files (x86)\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37\\;C:\\Users\\ijakk_000\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\msys64\\mingw64\\bin;C:\\Users\\ijakk_000\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Users\\ijakk_000\\AppData\\Local\\Programs\\Python\\Python37;G:\\Programs\\incscape\\bin;"
    },
    "toolchainPath": "g:\\nRF-Connect-SDKs\\toolchains\\31f4403e35",
    "toolchainBinPath": "g:\\nRF-Connect-SDKs\\toolchains\\31f4403e35\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin",
    "toolchainVersion": "2.4.0"
  },
  "terminal": {
    "defaultProfile": null
  }
}

  • Hi jakkra,

    Let me run some tests and update you soon.

    Hieu

  • Hi jakkra,

    I'm sorry if things have taken more time than you might expect. I probably ran more tests than I should have, but I got some interesting results.

    First of all, I unfortunately cannot reproduce your issue. Are you by any chance working on a Workspace Application?

    My tests are with a standalone application. However, if there are any differences in the behavior, you should still be able to use the nRF Connect for VS Code extension settings to browse the available custom board.

    Below are my test logs and an attachment of my test setup. Could you please take a look at them and see if you can replicate the result.

    test_app_1_nothing
    	Folder with nothing special to it
    		As soon as user settings board is created, it is visible a NEW Add Build Configuration window.
    		Forgot to note down, and cannot remember if a reload of the VS Code was necessary.
    
    test_app_2_same_folder
    	Folder has a simple custom board inside
    		Check copy a custom board into and deleting it.
    		The nRF Connect Extension cannot detect the changes in availability of the board.
    		After closing the folder and reopening the folder, the extension can see the custom board.
    		It can also see the test_user_settings_board
    
    test_app_3_folder_settings
    	Folder has .vscode/settings.json, where "nrf-connect.boardRoots" points to test_vscode_folder_settings_board_root
    		It can see the test_folder_settings_board
    		It can NOT see the test_user_settings_board
    
    test_app_4_workspace_settings
    	Folder with no custom board, no .vscode/settings
    	However, has a workspace file
    	workspace file will set custom board path to test_vscode_workspace_settings_board_root
    		AS SOON AS the .code-workspace file is updated, no reload needed, the board is visible in a NEW Add Build Configuration window.
    		
    
    test_app_5_cmake
    	Folder has a custom board inside, however not at the regular path, but in bad/boards/arm/...
    	CMakeLists.txt is modified following the out-of-tree-board sample.
    		The VS Code extension cannot see the board. However, west build -b test_same_board_folder work just fine
    
    
    While testing, I also notice that when you create a board in a subdirectory of the current project folder, the extension will update the folder settings in <prj>/.vscode/settings.json instead.

    Hieu

  • Hi thank you very much, I'm indeed using a workspace application. I'll take a look at your tests and try to replicate them. I'll get back to you.

    root

        -.vscode

            -setting.json (with boardRoots set to  ["${workspaceFolder}/app)]

        -app

            -boards/arm/custom_board

            - west.yml

            - zephyr

            ...

    I'll try creating a minimal reproduceable sample. 

  • By the way, I realized that my notes might appear cryptic. Here is some information:

    I have three different "board root" folders to test with:
    - test_folder_settings_board_root
    - test_user_settings_board_root
    - test_workspace_settings_board_root

    They are completely out of tree and outside of the application folder.

    Here are the three settings location in VS Code that I tested with:

    - User Settings: Opened by Ctrl+P > Preferences: Open User Settings (JSON)
    - Folder Settings: When opening a folder, the settings is in <folder>/.vscode/settings.json
    - Workspace Settings: When opening a VS Code Workspace, the settings is in the same .code-workspace file.

  • Hi   I have now a full reproduceable sample for you to try.

    Follow the instructions in the README.md

    You may need to change in settings.json the path to windows style if you are on Windows.

    "${workspaceFolder}/app" =>  "${workspaceFolder}\\app"
Related