NitroKey 3C NFC Firmware Update failure (shouldn't the App check the existence of the udev rules?)

OS: Linux Mint 22.1
Firmware on Key before update 1.6.0

Update procedure:

  1. Installed NitroApp 2 v2.3.3 via Flatpak
  2. Start NitroApp 2
  3. Insert NitroKey 3C
  4. Key is identified by App, firmware version is being shown (here 1.6.0).
  5. Press “Update Firmware” via the according button in the app.
  6. Touch NitroKey to confirm
  7. NitroKey hangs endlessly in the bootloader (NitroKey is being referred to as “NitroKey 3 (BL)”. Error message in status bar: “Nitrokey 3 update failed.”

I am pissed off, this should not happen at all with a “stable” release. Advise needed.

EDIT1:
After spending some time searching and reading the forum, I suspect that the udev rules might be missing, as they are definitely not there. However, I could be wrong here, as I don’t yet know what the Flatpak format looks like and whether it might contain them or if the App does need them at all.

In the first case, the app should actually check for their presence before a potential update; otherwise, this would be gross negligence.

Hi,
I checked my flatpack NitrokeyApp2 on openSUSE Tw, it runs as expected, udev rules installed as documented, even running KeePassXC, nice.
So give it another try, it is all in the docs

1 Like

Thanks, but it should not be in the docs, it should be in the code instead.
The app should check the existence of the udev rules beforehand and display a warning in case they are missing. Nothing could be simpler than that, one system call, one message box.

I have downloaded the rules, restarted the app, the NitroKey still was in BootLoader mode, restarted the Update process, which might have worked, but ended with the following error message:

53224 INFO nitrokeyapp.device_data Nitrokey 3 successfully updated
53264 ERROR nitrokeyapp.device_manager failed listing nk3 devices: Wrong nonce
53280 INFO nitrokeyapp.gui nk3 connected: [<nitrokeyapp.device_data.DeviceData object at 0x73a4a0293590>]
53284 ERROR nitrokeyapp.gui Unhandled exception
Traceback (most recent call last):
File “/app/lib/python3.12/site-packages/nitrokeyapp/gui.py”, line 193, in update_devices
self.hide_device()
File “/app/lib/python3.12/site-packages/nitrokeyapp/gui.py”, line 280, in hide_device
self.hide_navigation()
File “/app/lib/python3.12/site-packages/nitrokeyapp/gui.py”, line 236, in hide_navigation
btn.unfold()
File “/app/lib/python3.12/site-packages/nitrokeyapp/nk3_button.py”, line 102, in unfold
self.setText(self.data.name)
^^^^^^^^^^^^^^
File “/app/lib/python3.12/site-packages/nitrokeyapp/device_data.py”, line 33, in name
return f"Nitrokey 3: {self.uuid_prefix}"
^^^^^^^^^^^^^^^^
File “/app/lib/python3.12/site-packages/nitrokeyapp/device_data.py”, line 83, in uuid_prefix
return str(self.uuid)[:5]
^^^^^^^^^
File “/app/lib/python3.12/site-packages/nitrokeyapp/device_data.py”, line 73, in uuid
self._uuid = self._device.uuid()
^^^^^^^^^^^^^^^^^^^
File “/app/lib/python3.12/site-packages/nitrokey/trussed/_device.py”, line 64, in uuid
return self.admin.uuid()
^^^^^^^^^^^^^^^^^
File “/app/lib/python3.12/site-packages/nitrokey/trussed/admin_app.py”, line 272, in uuid
uuid = self._call(AdminCommand.UUID)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/app/lib/python3.12/site-packages/nitrokey/trussed/admin_app.py”, line 207, in _call
return self.device._call(
^^^^^^^^^^^^^^^^^^
File “/app/lib/python3.12/site-packages/nitrokey/trussed/_device.py”, line 76, in _call
response = self.device.call(command, data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/app/lib/python3.12/site-packages/fido2/hid/init.py”, line 197, in call
raise Exception(“Wrong channel”)
Exception: Wrong channel
54698 INFO nitrokeyapp.gui failed adding device

I have the log though I can’t upload it.

The key seems to have been updated though, the app is showing the current version. I hope that everything worked as intended.