3A NFC / Critical error: No Nitrokey 3 bootloader device found

Hi all,

I faced an issue while updating 3A NFC

OS: Qubes os 
Vm : debian 11
nitrokey 0.4.32
python 3.9
current firmware : v1.2.2

I used the same os to upgrade to the current firmware version

nitropy nk3 update
Command line tool to interact with Nitrokey devices 0.4.32
Do you want to download the firmware version v1.3.1? [Y/n]: y
Current firmware version:  v1.2.2
Updated firmware version:  v1.3.1

Please do not remove the Nitrokey 3 or insert any other Nitrokey 3 devices during the update. Doing so may damage the Nitrokey 3.
Do you want to perform the firmware update now? [y/N]: y
Please press the touch button to reboot the device into bootloader mode ...
Critical error:
No Nitrokey 3 bootloader device found
--------------------------------------------------------------------------------
Critical error occurred, exiting now
nitropy nk3 reboot --bootloader
sudo dmesg
[ 1260.592698] usb 1-1: SetAddress Request (3) to port 0
[ 1260.670104] usb 1-1: New USB device found, idVendor=20a0, idProduct=42b2, bcdDevice= 1.02
[ 1260.670137] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1260.670163] usb 1-1: Product: Nitrokey 3
[ 1260.670177] usb 1-1: Manufacturer: Nitrokey
[ 1260.730001] hid-generic 0003:20A0:42B2.0002: hiddev96,hidraw0: USB HID v1.11 Device [Nitrokey Nitrokey 3] on usb-vhci_hcd.0-1/input1
[ 1260.733505] cdc_acm 1-1:1.2: ttyACM0: USB ACM device
[ 1265.880009] vhci_hcd: unlink->seqnum 74
[ 1265.880029] vhci_hcd: urb->status -104
[ 1269.435359] vhci_hcd: connection closed
[ 1269.435574] vhci_hcd: stop threads
[ 1269.435618] vhci_hcd: release socket
[ 1269.435679] vhci_hcd: disconnect device
[ 1269.435754] usb 1-1: USB disconnect, device number 3

LOG;

user@debian-11:~$ cat /tmp/nitropy.log.xxxxxx
791        INFO  libusbsio Loading SIO library: /home/user/.local/lib/python3.9/site-packages/libusbsio/bin/linux_x86_64/libusbsio.so
792        INFO  libusbsio HID enumeration[29677504]: initialized
792       DEBUG  libusbsio HID enumeration[29677504]: device #0: Nitrokey 3
793        INFO  libusbsio HID enumeration[29677504]: finished, total 1 devices
920        INFO pynitrokey.nk3.updates Firmware version before update: v1.2.2
924       DEBUG urllib3.connectionpool Starting new HTTPS connection (1): api.github.com:443
1223      DEBUG urllib3.connectionpool https://api.github.com:443 "GET /repos/Nitrokey/nitrokey-3-firmware/releases/latest HTTP/1.1" 200 2637
1226       INFO pynitrokey.nk3.updates Latest firmware version: v1.3.1
1226       INFO pynitrokey.nk3.updates Current firmware version: v1.2.2
1226       INFO pynitrokey.nk3.updates Updated firmware version: v1.3.1
4534      DEBUG       root print: Current firmware version:  v1.2.2
4534      DEBUG       root print: Updated firmware version:  v1.3.1
4534      DEBUG       root print: Please do not remove the Nitrokey 3 or insert any other Nitrokey 3 devices during the update. Doing so may damage the Nitrokey 3.
20992     DEBUG       root print: Please press the touch button to reboot the device into bootloader mode ...
24343     DEBUG pynitrokey.nk3.device./dev/hidraw0 ignoring OSError after reboot
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.9/site-packages/pynitrokey/nk3/device.py", line 87, in reboot
    self._call(Command.UPDATE)
  File "/home/user/.local/lib/python3.9/site-packages/pynitrokey/nk3/device.py", line 130, in _call
    response = self.device.call(command.value, data=data)
  File "/home/user/.local/lib/python3.9/site-packages/fido2/hid/__init__.py", line 189, in call
    recv = self._connection.read_packet()
  File "/home/user/.local/lib/python3.9/site-packages/fido2/hid/base.py", line 80, in read_packet
    return os.read(self.handle, self.descriptor.report_size_in)
OSError: [Errno 5] Input/output error
24360     DEBUG pynitrokey.nk3.updates Trying to connect to bootloader (try 1 of 3)
24360     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 1 of 10)
24360      INFO  libusbsio HID enumeration[28985392]: initialized
24360      INFO  libusbsio HID enumeration[28985392]: finished, total 0 devices
24371     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
24871     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 2 of 10)
24871      INFO  libusbsio HID enumeration[28855648]: initialized
24871      INFO  libusbsio HID enumeration[28855648]: finished, total 0 devices
24879     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
25379     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 3 of 10)
25380      INFO  libusbsio HID enumeration[29730336]: initialized
25380      INFO  libusbsio HID enumeration[29730336]: finished, total 0 devices
25386     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
25886     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 4 of 10)
25886      INFO  libusbsio HID enumeration[19793968]: initialized
25886      INFO  libusbsio HID enumeration[19793968]: finished, total 0 devices
25892     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
26393     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 5 of 10)
26394      INFO  libusbsio HID enumeration[24828672]: initialized
26394      INFO  libusbsio HID enumeration[24828672]: finished, total 0 devices
26403     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
26903     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 6 of 10)
26904      INFO  libusbsio HID enumeration[29436064]: initialized
26904      INFO  libusbsio HID enumeration[29436064]: finished, total 0 devices
26910     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
27411     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 7 of 10)
27411      INFO  libusbsio HID enumeration[28985392]: initialized
27411      INFO  libusbsio HID enumeration[28985392]: finished, total 0 devices
27418     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
27919     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 8 of 10)
27919      INFO  libusbsio HID enumeration[28855648]: initialized
27919      INFO  libusbsio HID enumeration[28855648]: finished, total 0 devices
27927     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
28427     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 9 of 10)
28427      INFO  libusbsio HID enumeration[29730336]: initialized
28427      INFO  libusbsio HID enumeration[29730336]: finished, total 0 devices
28434     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
28935     DEBUG pynitrokey.cli.nk3 Searching Nitrokey 3 bootloader device (try 10 of 10)
28935      INFO  libusbsio HID enumeration[19793968]: initialized
28935      INFO  libusbsio HID enumeration[19793968]: finished, total 0 devices
28941     DEBUG pynitrokey.cli.nk3 No Nitrokey 3 bootloader device found, continuing
28941     DEBUG       root print: Critical error:
28942     DEBUG       root print: No Nitrokey 3 bootloader device found
28942     DEBUG       root listing all connected devices:
28942     DEBUG       root :: 'Nitrokey FIDO2' keys
28942     DEBUG       root :: 'Nitrokey Start' keys:
28961     DEBUG       root :: 'Nitrokey 3' keys
28961      INFO  libusbsio HID enumeration[28985392]: initialized
28962      INFO  libusbsio HID enumeration[28985392]: finished, total 0 devices
28968     DEBUG       root print: --------------------------------------------------------------------------------
28968     DEBUG       root print: Critical error occurred, exiting now
28968     DEBUG       root print: Unexpected? Is this a bug? Would you like to get support/help?
28968     DEBUG       root print: - You can report issues at: https://support.nitrokey.com/
28968     DEBUG       root print: - Writing an e-mail to support@nitrokey.com is also possible
28968     DEBUG       root print: - Please attach the log: '/tmp/nitropy.log.gjz0xwsz' with any support/help request!
28968     DEBUG       root print: - Please check if you have udev rules installed: https://docs.nitrokey.com/nitrokey3/linux/firmware-update.html#troubleshooting
user@debian-11:~$

Best regards,

same issue using nitropy 0.4.36 to upgrade to the firmware version v1.4.0.

user@debian-11:~$ /home/user/.local/pipx/venvs/pynitrokey/bin/nitropy nk3 update
Command line tool to interact with Nitrokey devices 0.4.36
Do you want to download the firmware version v1.4.0? [Y/n]: y
Download v1.4.0: 100%|███████████████████████| 894k/894k [00:00<00:00, 1.61MB/s]
Current firmware version:  v1.2.2
Updated firmware version:  v1.4.0

Please do not remove the Nitrokey 3 or insert any other Nitrokey 3 devices during the update. Doing so may damage the Nitrokey 3.
Do you want to perform the firmware update now? [y/N]: y

Please press the touch button to reboot the device into bootloader mode ...

Critical error:
No Nitrokey 3 bootloader device found

It looks like you are missing the Nitrokey udev rules. See this guide for more information: Setting up The udev Rules For nitropy - Nitrokey Documentation

Resolved.
Thanks :+1:

In case you use usbguard, you also have to allow the device in bootloader mode (or disable usbguard during the update).