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:
west -v update
The output includes Git commands run by west and their outputs. Look for something like this:
=== 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 PATH
environment variable does not contain the directory where pip installed
west.exe.
First, make sure you’ve installed west; see Installing west. 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 west.exe, then add it to your
PATH. (This 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.exein thescriptsdirectoryC:\foo\python\python38\scripts.Important
Notice how
lib\site-packagesin thepip3 showoutput was changed toscripts!If you see
west.exein thescriptsdirectory, add the full path toscriptsto yourPATHusing a command like this:setx PATH "%PATH%;C:\foo\python\python38\scripts"
Do not just copy/paste this command. The
scriptsdirectory location will be different on your system.Close your
cmd.exewindow and open a new one. You should be able to runwest.
“invalid choice: ‘build’” (or ‘flash’, etc.)
If you see an unexpected error like this when trying to run a Zephyr extension command (like west flash, west build, etc.):
$ west build [...]
west: error: argument <command>: invalid choice: 'build' (choose from 'init', [...])
$ west flash [...]
west: error: argument <command>: invalid choice: 'flash' (choose from 'init', [...])
The most likely cause is that you’re running the command outside of a west workspace. West needs to know where your workspace is to find Extensions.
To fix this, you have two choices:
Run the command from inside a workspace (e.g. the
zephyrprojectdirectory you created when you got started).For example, create your build directory inside the workspace, or run
west flash --build-dir YOUR_BUILD_DIRfrom inside the workspace.Set the
ZEPHYR_BASEenvironment variable and re-run the west extension command. If set, west will useZEPHYR_BASEto 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:
$ 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:
west: error: argument <command>: 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
-Uoption forpip3 installas shown in Installing west.Back up any contents of
zephyrproject/.west/configthat you want to save. (If you don’t have any configuration options set, it’s safe to skip this step.)Completely remove the
zephyrproject/.westdirectory (if you don’t, you will get the “already in a workspace” error message discussed next).Run
west initagain.