Python

Windows: Go to https://www.python.org/downloads/ and run the Python 3 installer

  • in the installer check the "add Python 3.x to PATH" box
  • also run the "Disable path length limit" action at the end, if you are on Windows 10 and the option is displayed to you

Linux: Install pip using the package manager; this will also install Python.

$ # If you're using Arch Linux
$ sudo pacman -S python-pip

$ # If you're using Ubuntu
$ sudo apt-get install python3-pip

macOS: Ensure that you have python 3 and pip installed. Refer to the following link for Instructions on how to install python 3 and pip

$ python --version
Python 3.7.7
$ pip --version
pip 20.0.2 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

nrf tools

nrfutil

All: Open a terminal and install nrfutil as follows. If you are familiar with python, it is advised to do this in a virtual environment.

$ pip install nrfutil
(..)

$ nrfutil version
nrfutil version 6.1.0

NOTE as of version 6.1.0 nrfutil indicates that it does "not" support Python 3.9 in its pip manifest. Due to this, the above pip install command will fail if you have a Python 3.9 interpreter installed. Here's how to work around the issue:

start of nrfutil python 3.9 workaround

$ # these steps can also be done via a graphical interface

$ # fetch the source code of version 6.1.0
$ # or instead of curl you can enter the URL into your web browser
$ curl -LO https://github.com/NordicSemiconductor/pc-nrfutil/archive/v6.1.zip

$ # unzip the code
$ unzip v6.1.zip

$ # go into the new folder
$ cd pc-nrfutil-6.1

Apply the following 2 patches (can also be done manually by editing these 2 files: requirements.txt and setup.py)

--- a/requirements.txt  2021-01-05 10:50:12.611556607 +0100
+++ b/requirements.txt  2021-01-05 10:50:09.718226891 +0100
@@ -4,7 +4,7 @@
 ecdsa
 intelhex
 libusb1
-pc_ble_driver_py >= 0.14.2
+pc_ble_driver_py
 piccata
 protobuf
 pyserial
--- a/setup.py  2021-01-05 10:49:56.014910707 +0100
+++ b/setup.py  2021-01-05 10:50:26.004873175 +0100
@@ -148,7 +148,7 @@
                      '../libusb/x86/libusb-1.0.dll', '../libusb/x64/libusb-1.0.dll',
                      '../libusb/x64/libusb-1.0.dylib', '../libusb/LICENSE']
     },
-    python_requires='>=3.6, <3.9',
+    python_requires='>=3.6, <3.10',
     install_requires=reqs,
     zipfile=None,
     tests_require=[
$ patch -p1 < requirements.patch
$ patch -p1 < setup.patch

Then install the patched nrfutil

$ pip install .

$ # verify installation
$ nrfutil version
nrfutil version 6.1.0

end of nrfutil python 3.9 workaround