Nitrokey 3A NFC firmware update failed on linux

When I try to update my NK3 on linux, I get the following error after touching the device to reboot into bootloader mode:

spsdk.mboot.exceptions.McuBootConnectionError: MBoot: Connection issue -> Unable to open device 'b'/dev/hidraw1'' VID=8352 PID=17117 SN=''

I’m using the following tool versions:

cryptography==3.4.3
pynitrokey==0.4.13

When I use cryptography-36.0.1. (installed with pynitrokey-0.4.13) I get the following error (during installation):

ERROR: spsdk 1.5.0 has requirement cryptography<3.4.4,>=3.3, but you'll have cryptography 36.0.1 which is incompatible.

Launching nitropy gives then the following error:

ModuleNotFoundError: No module named 'cryptography.hazmat._types'

Has somebody a hint?

I would not fix the versions of the libraries. Try to install simply pip install pynitrokey (ideally use a venv):

mdir -p ~/venv
python3 -m venv ~/venv/pynitrokey
source ~/venv/pynitrokey/bin/activate
pip install pynitrokey

Updating:

source ~/venv/pynitrokey/bin/activate
pip install --upgrade  pynitrokey

Using

source ~/venv/pynitrokey/bin/activate
nitropy nk3 update

The first error occurs because of missing udev-rules: See here: Firmware Update — Nitrokey Documentation

Hi jorn,

thanks for your reply.
I verified the udev rules. I installed them allready before, as I use the key on my linux for authentication.

Setting up the venv as described in your post. During pip install pynitrokey I get the following error:

ERROR: pyocd 0.31.0 has requirement pyyaml<6.0,>=5.1, but you'll have pyyaml 6.0 which is incompatible.
ERROR: spsdk 1.6.0 has requirement click<8,>=7.1, but you'll have click 8.0.3 which is incompatible.

Updating pynitrokey nitro runs well. Using nitropy nk3 update results in this error:

OSError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found

I’m trying to build this glibc right now. Seems not to be a piece of cake. I will report back.

Hi @nk3_user,
Sorry for the delay.

Old GLIBC version suggests you have older or LTS distribution. Can you share which one, so we could try to reproduce in the exact environment?
A sure solution for this would be use a Docker container, in which the pynitrokey could be installed and used further, e.g. for the update. Alternatives are podman and toolbox.