Problems with nRF Connect for Visual Studio Code: nrfutil and also Generate Support Information

Generate Support Information fails dramatically:

I don't remember how to find the log. How many average users would have the slightest clue!!! Please help.

The other problem is one I have seen others comment on, but the usual solution makes no sense. They say to switch Device Provider from nrfutil to nrfjprog. But why would we do that? nrfutil works fine on the command line

C:\ncs\v2.5.0\nrf\applications\asset_tracker_v2> nrfutil device list
50100377
product J-Link
traits jlink, seggerUsb, usb

6&33aeebb&0&2
ports COM13
traits serialPorts

Found 2 supported device(s)

PS C:\ncs\v2.5.0\nrf\applications\asset_tracker_v2>

So why doesn't work in VS Code? The reason I find this particularly obnoxious is that the documentation states that nrfutil is the default Device Provider. So, it should just work. It is obviously in my Path, too.

Thanks.

Burt

Parents
  • Well, this is a rarity, but a very happy one: for a long time, I was operating as a Local User on Windows, and I finally got tired of that and switched myself to an Administrative User. Then I tried the VSCode stuff above and got all those failures. Then it dawned on me to reboot (maybe I could have logged out instead.) After I finished rebooting, I restarted VS Code. BOTH problems disappeared.

    But now there is another very, very annoying issue that many people have seen and yet I haven't seen any useful answer that would eliminate the need for me to open this ticket. The flash function in VS Code does not do a --erase in the west command to clean up the UICR so it always fails along with the desired board reset. Oddly enough, ONE TIME earlier tonight it actually did a --erase, but I haven't figured out how to make that come back. Crazy when the command line west command is so easy to use, but our organization requires nRF Connect for VS Code because it has some excellent features.

    [error] [ Client] - Encountered error -160: Command verify_file executed for 2590 milliseconds with result -160
    [ ################ ] 0.495s | Verifying image - block 5 of 5 [error] [ nRF91] - Failed while performing 'Verify' operation on target address 0x00FF8130.
    -160: Data does not match in address range [0x00FF8130 - 0x00FF817F] (UICR)
    Expected byte value 0xFF but read 0xFC at address 0x00FF8158.
    [error] [ nRF91] - Failed while verifying device. -160: Data does not match in address range [0x00FF8130 - 0x00FF817F] (UICR)
    Expected byte value 0xFF but read 0xFC at address 0x00FF8158.
    [error] [ Worker] - Data does not match in address range [0x00FF8130 - 0x00FF817F] (UICR)
    Expected byte value 0xFF but read 0xFC at address 0x00FF8158.
    ERROR: Write verify failed.
    NOTE: For additional output, try running again with logging enabled (--log).
    NOTE: Any generated log error messages will be displayed.
    FATAL ERROR: command exited with status 25: nrfjprog --program 'c:\ncs\v2.5.0\nrf\applications\asset_tracker_v2\build_nrf9160es\zephyr\merged.hex' --sectorerase --verify -f NRF91 --snr 50100377

    * The terminal process terminated with exit code: 25.

Reply
  • Well, this is a rarity, but a very happy one: for a long time, I was operating as a Local User on Windows, and I finally got tired of that and switched myself to an Administrative User. Then I tried the VSCode stuff above and got all those failures. Then it dawned on me to reboot (maybe I could have logged out instead.) After I finished rebooting, I restarted VS Code. BOTH problems disappeared.

    But now there is another very, very annoying issue that many people have seen and yet I haven't seen any useful answer that would eliminate the need for me to open this ticket. The flash function in VS Code does not do a --erase in the west command to clean up the UICR so it always fails along with the desired board reset. Oddly enough, ONE TIME earlier tonight it actually did a --erase, but I haven't figured out how to make that come back. Crazy when the command line west command is so easy to use, but our organization requires nRF Connect for VS Code because it has some excellent features.

    [error] [ Client] - Encountered error -160: Command verify_file executed for 2590 milliseconds with result -160
    [ ################ ] 0.495s | Verifying image - block 5 of 5 [error] [ nRF91] - Failed while performing 'Verify' operation on target address 0x00FF8130.
    -160: Data does not match in address range [0x00FF8130 - 0x00FF817F] (UICR)
    Expected byte value 0xFF but read 0xFC at address 0x00FF8158.
    [error] [ nRF91] - Failed while verifying device. -160: Data does not match in address range [0x00FF8130 - 0x00FF817F] (UICR)
    Expected byte value 0xFF but read 0xFC at address 0x00FF8158.
    [error] [ Worker] - Data does not match in address range [0x00FF8130 - 0x00FF817F] (UICR)
    Expected byte value 0xFF but read 0xFC at address 0x00FF8158.
    ERROR: Write verify failed.
    NOTE: For additional output, try running again with logging enabled (--log).
    NOTE: Any generated log error messages will be displayed.
    FATAL ERROR: command exited with status 25: nrfjprog --program 'c:\ncs\v2.5.0\nrf\applications\asset_tracker_v2\build_nrf9160es\zephyr\merged.hex' --sectorerase --verify -f NRF91 --snr 50100377

    * The terminal process terminated with exit code: 25.

Children
  • Never mind, this was an eyesight/getting old issue: I didn't see that the Erase and Flash symbol differed from the Flash symbol: one having one arrow and the other having two. But in my defense, one could say there is a tradeoff between having the active GUI area for Flash being most of the line whereas the active area for Erase and Flash is limited to the symbol. If there was symmetry, it would require a tiny extra effort to click the Flash active area, but along with the hover messages, it would be more difficult for another alter Kacker to make the mistake I made.

  • Hi Burt,

    Thank you for this update. Please let me know if you have any further questions.

    Best regards,
    Dejan


  • Hi Dejan,

    I thought I was all done with this, but I want to report something strange, especially since it seems from googling that some others have had difficulties having a board recognized with nrfutil. You know, everything was working fine last night. I don't know what I did wrong after that, but today I was back to not being able recognize my custom board with nrfutil; only nrfjprog would work. Eventually I decided to do a Generate Support Information, and lo and behold, that had gone back to the unknown error pop up window I showed at the start of this ticket. Then I uninstalled and reinstalled VS Code, and things are working again.

    Originally, I had installed VS Code for single administrative user Burt, I am guessing. Much later I ran into some unresolvable Microsoft Store issues for Burt, something got corrupted, and I created the new local user "joe". I migrated what I could from Burt to joe but I think I steered clear of copying anything from APPDATA. I installed VS Code this time for all users, if not mistaken. Anyway, my latest change, today, was after reinstalling VS Code, I used instructions Uninstall Visual Studio Code and removed 

    • Windows - Delete %APPDATA%\Code and %USERPROFILE%\.vscode.

    but under Burt, not joe. Hoping I didn't lose anything critical; assuming the Burt stuff was pretty old. And I am hoping that things will stabilize, but we will see. I guess if I have more problems, I will uninstall the system VS Code installation and install a single user one. If you can predict why things became unstable here or the connection between nrfutil problems and Generate Support Information problems, let me know. And as I mentioned earlier, joe started out as a local user but I changed him yesterday to administrative.

    Regards,

    Burt (aka joe, a pretty short name!)

    ps, I'll attach the Generate Support Information here. Argh, it's erroring out when I try to attach a file, I'll just spell it out

    [14:41:11] nRF Command Line Tools 10.24.2 are up to date
    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 devzone.nordicsemi.com/.

    {
      "platform": {
        "os": "win32",
        "osVersion": "Windows 10 Pro",
        "osKernel": "10.0.19045",
        "vscode": "1.89.0",
        "electron": "28.2.8",
        "node": "v18.18.2"
      },
      "system": {
        "date": "2024-05-06T18:41:18.155Z",
        "vscodeRoot": "c:\\Program Files\\Microsoft VS Code\\resources\\app",
        "nrfConnectForDesktopInstalled": true,
        "vscodeUptime": "00:00:21",
        "osUptime": "00:07:23",
        "cpu": "Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz"
      },
      "workspace": {
        "name": "asset_tracker_v2",
        "workspaceFile": null,
        "folders": [
          "c:\\ncs\\v2.5.0\\nrf\\applications\\asset_tracker_v2"
        ]
      },
      "sdks": [
        {
          "version": "v2.5.0",
          "path": "c:\\ncs\\v2.5.0"
        },
        {
          "version": "v1.7.0",
          "path": "c:\\tjmdnl\\v1.7.0_v1.19DL"
        }
      ],
      "activeBuild": "c:\\ncs\\v2.5.0\\nrf\\applications\\asset_tracker_v2\\build_nrf9160es",
      "apps": [
        {
          "workspace": "c:\\ncs\\v2.5.0\\nrf\\applications\\asset_tracker_v2",
          "uri": "c:\\ncs\\v2.5.0\\nrf\\applications\\asset_tracker_v2",
          "buildConfigurations": [
            {
              "id": "c:\\ncs\\v2.5.0\\nrf\\applications\\asset_tracker_v2\\build",
              "name": "build",
              "boardId": "thingy91_nrf9160_ns",
              "type": "Zephyr",
              "isChild": false,
              "isStale": false,
              "taskBindings": {
                "build": [],
                "pristineBuild": [],
                "flash": [],
                "eraseAndFlash": []
              }
            },
            {
              "id": "c:\\ncs\\v2.5.0\\nrf\\applications\\asset_tracker_v2\\build_nrf9160es",
              "name": "build_nrf9160es",
              "boardId": "nrf9160es_nrf9160_ns",
              "type": "Zephyr",
              "isChild": false,
              "isStale": false,
              "taskBindings": {
                "build": [],
                "pristineBuild": [],
                "flash": [],
                "eraseAndFlash": []
              }
            },
            {
              "id": "c:\\ncs\\v2.5.0\\nrf\\applications\\asset_tracker_v2\\build_thingy",
              "name": "build_thingy",
              "boardId": "thingy91_nrf9160_ns",
              "type": "Zephyr",
              "isChild": false,
              "isStale": false,
              "taskBindings": {
                "build": [],
                "pristineBuild": [],
                "flash": [],
                "eraseAndFlash": []
              }
            }
          ]
        }
      ],
      "topdir": "c:\\ncs\\v2.5.0",
      "workspaceState": "workspace-ready",
      "toolchains": [
        {
          "version": "2.5.0",
          "path": "c:\\ncs\\toolchains\\c57af46cb7"
        },
        {
          "version": "2.1.2",
          "path": "c:\\ncs\\toolchains\\v2.1.2"
        }
      ],
      "connectedDevices": [
        {
          "serialNumber": "000050100377"
        }
      ],
      "deviceProvider": "nrfutil",
      "tools": {
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin\\arm-zephyr-eabi-gcc.exe": "0.16.1",
        "C:\\Program Files\\SEGGER\\JLink_V794e\\JLink.exe": "7.94e",
        "C:\\Program Files\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\nrfjprog.exe": "10.24.2",
        "C:\\Users\\joe\\.nrfutil\\bin\\nrfutil.exe": "7.6.0",
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\cmake.exe": "3.20.5",
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\Scripts\\west.exe": "1.1.0",
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\python.exe": "3.8.2",
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\ninja.exe": "1.9.0",
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\gperf.exe": "3.1",
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\dtc.exe": "1.4.7",
        "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\gn.exe": "2122",
        "C:\\ncs\\toolchains\\c57af46cb7\\mingw64\\bin\\git.exe": "2.37.3.windows.1",
        "gdbPath": "c:\\ncs\\toolchains\\c57af46cb7\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin\\arm-zephyr-eabi-gdb.exe"
      },
      "nrfutil": {
        "nrfutil-device": {
          "version": "2.1.1",
          "binPath": "c:\\Users\\joe\\.nrfutil\\bin\\nrfutil-device"
        },
        "nrfutil-toolchain-manager": {
          "version": "0.14.2",
          "binPath": "c:\\Users\\joe\\.nrfutil\\bin\\nrfutil-toolchain-manager"
        }
      },
      "environment": {
        "westEnv": {
          "ELECTRON_RUN_AS_NODE": "1",
          "HOME": "C:\\Users\\joe",
          "HOMEDRIVE": "C:",
          "HOMEPATH": "\\Users\\joe",
          "PATH": "C:\\ncs\\toolchains\\c57af46cb7;C:\\ncs\\toolchains\\c57af46cb7\\mingw64\\bin;C:\\ncs\\toolchains\\c57af46cb7\\bin;C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin;C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\Scripts;C:\\ncs\\toolchains\\c57af46cb7\\opt\\nanopb\\generator-bin;C:\\ncs\\toolchains\\c57af46cb7\\opt\\zephyr-sdk\\aarch64-zephyr-elf\\bin;C:\\ncs\\toolchains\\c57af46cb7\\opt\\zephyr-sdk\\x86_64-zephyr-elf\\bin;C:\\ncs\\toolchains\\c57af46cb7\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin;c:\\Users\\joe\\.nrfutil\\lib\\nrfutil-toolchain-manager;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\java8path;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files\\Renode\\bin;C:\\WINDOWS\\SYSTEM32;C:\\WINDOWS;C:\\WINDOWS\\SYSTEM32\\WBEM;C:\\WINDOWS\\SYSTEM32\\WINDOWSPOWERSHELL\\V1.0\\;C:\\Program Files\\ThinkPad\\Bluetooth Software\\;C:\\Program Files\\ThinkPad\\Bluetooth Software\\syswow64;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\IBM\\gsk8\\bin;C:\\Program Files\\IBM\\gsk8\\lib64;C:\\Program Files (x86)\\ibm\\gsk8\\lib;C:\\Program Files\\Crucial\\Crucial Storage Executive;C:\\Program Files\\PuTTY\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Amazon\\AWSCLIV2\\;C:\\Users\\Burt\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Program Files\\Cmake\\bin;C:\\Program Filesss\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\Llvm\\bin;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Git\\cmd;C:\\Program Files (x86)\\Bitvise SSH Client;C:\\Program Files\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\;C:\\Users\\joe\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\joe\\Downloads\\ccache-4.6.1-windows-x86_64;C:\\Users\\joe\\.nrfutil\\bin;",
          "ZEPHYR_BASE": "c:\\ncs\\v2.5.0\\zephyr",
          "ZEPHYR_TOOLCHAIN_VARIANT": "zephyr",
          "ZEPHYR_SDK_INSTALL_DIR": "C:\\ncs\\toolchains\\c57af46cb7\\opt\\zephyr-sdk",
          "PYTHONPATH": "C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin;C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\Lib;C:\\ncs\\toolchains\\c57af46cb7\\opt\\bin\\Lib\\site-packages"
        },
        "inherited": {
          "ELECTRON_RUN_AS_NODE": "1",
          "HOME": "C:\\Users\\joe",
          "HOMEDRIVE": "C:",
          "HOMEPATH": "\\Users\\joe",
          "Path": "C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\java8path;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files\\Renode\\bin;C:\\WINDOWS\\SYSTEM32;C:\\WINDOWS;C:\\WINDOWS\\SYSTEM32\\WBEM;C:\\WINDOWS\\SYSTEM32\\WINDOWSPOWERSHELL\\V1.0\\;C:\\Program Files\\ThinkPad\\Bluetooth Software\\;C:\\Program Files\\ThinkPad\\Bluetooth Software\\syswow64;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\IBM\\gsk8\\bin;C:\\Program Files\\IBM\\gsk8\\lib64;C:\\Program Files (x86)\\ibm\\gsk8\\lib;C:\\Program Files\\Crucial\\Crucial Storage Executive;C:\\Program Files\\PuTTY\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Amazon\\AWSCLIV2\\;C:\\Users\\Burt\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Program Files\\Cmake\\bin;C:\\Program Filesss\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\Llvm\\bin;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Git\\cmd;C:\\Program Files (x86)\\Bitvise SSH Client;C:\\Program Files\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\;C:\\Users\\joe\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\joe\\Downloads\\ccache-4.6.1-windows-x86_64;C:\\Users\\joe\\.nrfutil\\bin;",
          "PATH": "C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\java8path;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files\\Renode\\bin;C:\\WINDOWS\\SYSTEM32;C:\\WINDOWS;C:\\WINDOWS\\SYSTEM32\\WBEM;C:\\WINDOWS\\SYSTEM32\\WINDOWSPOWERSHELL\\V1.0\\;C:\\Program Files\\ThinkPad\\Bluetooth Software\\;C:\\Program Files\\ThinkPad\\Bluetooth Software\\syswow64;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\IBM\\gsk8\\bin;C:\\Program Files\\IBM\\gsk8\\lib64;C:\\Program Files (x86)\\ibm\\gsk8\\lib;C:\\Program Files\\Crucial\\Crucial Storage Executive;C:\\Program Files\\PuTTY\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Amazon\\AWSCLIV2\\;C:\\Users\\Burt\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Program Files\\Cmake\\bin;C:\\Program Filesss\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\Llvm\\bin;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Git\\cmd;C:\\Program Files (x86)\\Bitvise SSH Client;C:\\Program Files\\Nordic Semiconductor\\nrf-command-line-tools\\bin\\;C:\\Users\\joe\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\joe\\Downloads\\ccache-4.6.1-windows-x86_64;C:\\Users\\joe\\.nrfutil\\bin;"
        },
        "toolchainPath": "c:\\ncs\\toolchains\\c57af46cb7",
        "toolchainBinPath": "c:\\ncs\\toolchains\\c57af46cb7\\opt\\zephyr-sdk\\arm-zephyr-eabi\\bin",
        "toolchainVersion": "2.5.0"
      },
      "terminal": {
        "defaultProfile": null
      },
      "config": {
        "nordic-semiconductor.nrf-connect": {
          "topdir": "",
          "toolchain": {
            "path": ""
          },
          "ozonePath": "",
          "applications": [],
          "applicationOptions": {},
          "kconfig": {
            "interface": "kconfig"
          },
          "west": {
            "env": {
              "$base": "terminal"
            }
          },
          "boardRoots": [],
          "taskBindings": {},
          "buildTerminal": {
            "condensedProgress": true
          },
          "debugging": {
            "flash": true,
            "bindings": {},
            "justMyCode": true
          },
          "activeAppFollowActiveEditor": true,
          "deviceProvider": "nrfutil",
          "flash": {
            "softreset": false,
            "erase": false,
            "recover": false
          },
          "enableTelemetry": true,
          "thirdpartyIntegration": {},
          "toolchainManager": {
            "indexURL": null,
            "installDirectory": null
          },
          "nrfutil": {
            "home": "${env:USERPROFILE}/.nrfutil"
          },
          "defaultOpenAction": "ask"
        },
        "nordic-semiconductor.nrf-terminal": {
          "terminalMode": "character"
        }
      },
      "extensions": {
        "internal": {
          "nordic-semiconductor.nrf-connect": {
            "version": "2024.3.25",
            "path": "c:\\Users\\joe\\.vscode\\extensions\\nordic-semiconductor.nrf-connect-2024.3.25-win32-x64",
            "isActive": true
          },
          "nordic-semiconductor.nrf-terminal": {
            "version": "2024.3.15",
            "path": "c:\\Users\\joe\\.vscode\\extensions\\nordic-semiconductor.nrf-terminal-2024.3.15",
            "isActive": true
          },
          "nordic-semiconductor.nrf-devicetree": {
            "version": "2024.3.78",
            "path": "c:\\Users\\joe\\.vscode\\extensions\\nordic-semiconductor.nrf-devicetree-2024.3.78",
            "isActive": true
          },
          "nordic-semiconductor.nrf-kconfig": {
            "version": "2024.3.21",
            "path": "c:\\Users\\joe\\.vscode\\extensions\\nordic-semiconductor.nrf-kconfig-2024.3.21",
            "isActive": true
          }
        },
        "external": {
          "marus25.cortex-debug": null,
          "ms-vscode.cpptools": "1.20.4",
          "ms-vscode.js-debug": "1.89.0",
          "ms-vscode.js-debug-companion": "1.1.2",
          "ms-vscode.vscode-js-profile-table": "1.0.9",
          "trond-snekvik.gnu-mapfiles": "1.1.0",
          "twxs.cmake": "0.0.17"
        }
      }
    }


  • Hi,

    Thank you for providing additional information.

    One suggestion would be to first define the types of user accounts and their privileges based on your needs. Afterwards, you can install VS Code.

    Burt said:
    If you can predict why things became unstable here or the connection between nrfutil problems and Generate Support Information problems, let me know.

    It is hard to predict what might be the problem here, especially due to many uncertainties, such as "I don't know what I did wrong ...", "Originally, I had installed VS Code for single administrative user Burt, I am guessing.", "... but I think I steered clear of copying anything from APPDATA", and "I installed VS Code this time for all users, if not mistaken."
    I would suggest that you try to make incremental changes (if changes are really needed) and test the behavior. It would be beneficial if you could come up with a set of reproducible steps for the behavior and the error which you reported.

    Best regards,
    Dejan

  • [11:47:47] nrfutil [10268]: jR { id: '50100377', capabilities: { rtt: true, erase: true, recover: true }, jlink: pn { resolve: [AsyncFunction (anonymous)], get: [Function: bound get] AsyncFunction }, device: { id: 3, serialNumber: '000050100377', traits: [Object], usb: [Object] } }
    Darn, I lost my text. Summary:
    1)system install prints an output message showing nrfutil-device, but single user install version shows the above message in nRF Connect:devices output.
    2) The biggest bug is the user interface bug that when you change nrfutil path there is no pop up to alert the user that the plugin has to be disabled then re-enabled. Unlike the standard configuration options that take effect immediately, this one is an anomaly. Can you commit to fix this? Thanks.
    Burt
Related