.. _west-troubleshooting: Troubleshooting West #################### This page covers common issues with west and how to solve them. ``west update`` fetching failures ********************************* One good way to troubleshoot fetching issues is to run ``west update`` in verbose mode, like this: .. code-block:: shell west -v update The output includes Git commands run by west and their outputs. Look for something like this: .. code-block:: none === updating your_project (path/to/your/project): west.manifest: your_project: checking if cloned [...other west.manifest logs...] --- your_project: fetching, need revision SOME_SHA west.manifest: running 'git fetch ... https://github.com/your-username/your_project ...' in /some/directory The ``git fetch`` command example in the last line above is what needs to succeed. One strategy is to go to ``/path/to/your/project``, copy/paste and run the entire ``git fetch`` command, then debug from there using the documentation for your credential storage helper. If you're behind a corporate firewall and may have proxy or other issues, ``curl -v FETCH_URL`` (for HTTPS URLs) or ``ssh -v FETCH_URL`` (for SSH URLs) may be helpful. If you can get the ``git fetch`` command to run successfully without prompting for a password when you run it directly, you will be able to run ``west update`` without entering your password in that same shell. "'west' is not recognized as an internal or external command, operable program or batch file.' ********************************************************************************************** On Windows, this means that either west is not installed, or your :envvar:`PATH` environment variable does not contain the directory where pip installed :file:`west.exe`. First, make sure you've installed west; see :ref:`west-install`. Then try running ``west`` from a new ``cmd.exe`` window. If that still doesn't work, keep reading. You need to find the directory containing :file:`west.exe`, then add it to your :envvar:`PATH`. (This :envvar:`PATH` change should have been done for you when you installed Python and pip, so ordinarily you should not need to follow these steps.) Run this command in ``cmd.exe``:: pip3 show west Then: #. Look for a line in the output that looks like ``Location: C:\foo\python\python38\lib\site-packages``. The exact location will be different on your computer. #. Look for a file named ``west.exe`` in the ``scripts`` directory ``C:\foo\python\python38\scripts``. .. important:: Notice how ``lib\site-packages`` in the ``pip3 show`` output was changed to ``scripts``! #. If you see ``west.exe`` in the ``scripts`` directory, add the full path to ``scripts`` to your :envvar:`PATH` using a command like this:: setx PATH "%PATH%;C:\foo\python\python38\scripts" **Do not just copy/paste this command**. The ``scripts`` directory location will be different on your system. #. Close your ``cmd.exe`` window and open a new one. You should be able to run ``west``. "invalid choice: 'build'" (or 'flash', etc.) ******************************************** If you see an unexpected error like this when trying to run a Zephyr extension command (like :ref:`west flash `, :ref:`west build `, etc.): .. code-block:: none $ west build [...] west: error: argument : invalid choice: 'build' (choose from 'init', [...]) $ west flash [...] west: error: argument : invalid choice: 'flash' (choose from 'init', [...]) The most likely cause is that you're running the command outside of a :ref:`west workspace `. West needs to know where your workspace is to find :ref:`west-extensions`. To fix this, you have two choices: #. Run the command from inside a workspace (e.g. the :file:`zephyrproject` directory you created when you :ref:`got started `). For example, create your build directory inside the workspace, or run ``west flash --build-dir YOUR_BUILD_DIR`` from inside the workspace. #. Set the :envvar:`ZEPHYR_BASE` :ref:`environment variable ` and re-run the west extension command. If set, west will use :envvar:`ZEPHYR_BASE` to find your workspace. If you're unsure whether a command is built-in or an extension, run ``west help`` from inside your workspace. The output prints extension commands separately, and looks like this for mainline Zephyr: .. code-block:: none $ west help built-in commands for managing git repositories: init: create a west workspace [...] other built-in commands: help: get help for west or a command [...] extension commands from project manifest (path: zephyr): build: compile a Zephyr application flash: flash and run a binary on a board [...] "invalid choice: 'post-init'" ***************************** If you see this error when running ``west init``: .. code-block:: none west: error: argument : invalid choice: 'post-init' (choose from 'init', 'update', 'list', 'manifest', 'diff', 'status', 'forall', 'config', 'selfupdate', 'help') Then you have an old version of west installed, and are trying to use it in a workspace that requires a more recent version. The easiest way to resolve this issue is to upgrade west and retry as follows: #. Install the latest west with the ``-U`` option for ``pip3 install`` as shown in :ref:`west-install`. #. Back up any contents of :file:`zephyrproject/.west/config` that you want to save. (If you don't have any configuration options set, it's safe to skip this step.) #. Completely remove the :file:`zephyrproject/.west` directory (if you don't, you will get the "already in a workspace" error message discussed next). #. Run ``west init`` again.