I have set the udev rules and followed the Fedora specific instructions , but I just can’t understand why gpg is not finding the NitroKey.
gpg --card-status
gpg: selecting card failed: No such device
gpg: OpenPGP card not available: No such device
The NitroKey is good, I have another Fedora computer and it works just fine.
Any troubleshooting ideas would be greatly appreciated. I am at this for a while and my head hurts.
Thank you for the reply.
Following a GitHub udev troubleshoot , I have:
nitropy nk3 reboot --bootloader =>
Sep 23 10:36:39 Iskra kernel: hid-generic 0003:20A0:42DD.000D: hiddev98,hidraw5: USB HID v1.00 Device [NXP SEMICONDUCTOR INC. USB COMPOSITE DEVICE] on usb-0000:00:14.0-1/input0
udevadm info --query=path /dev/hidraw5 =>
/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:20A0:42DD.000D/hidraw/hidraw5
udevadm test /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:20A0:42DD.000D/hidraw/hidraw5 =>
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
Trying to open "/etc/systemd/hwdb/hwdb.bin"...
Trying to open "/etc/udev/hwdb.bin"...
=== trie on-disk ===
tool version: 257
file size: 13750479 bytes
header size 80 bytes
strings 2774599 bytes
nodes 10975800 bytes
Loading kernel module index.
Loaded 'libkmod.so.2' via dlopen()
Failed to read $container of PID 1, ignoring: Permission denied
Found container virtualization none.
Using default interface naming scheme 'v257'.
Parsed configuration file "/usr/lib/systemd/network/99-default.link"
Parsed configuration file "/usr/lib/systemd/network/98-default-mac-none.link"
Parsed configuration file "/usr/lib/systemd/network/80-vm-vt.link"
Parsed configuration file "/usr/lib/systemd/network/80-namespace-ns.link"
Parsed configuration file "/usr/lib/systemd/network/80-container-vz.link"
Parsed configuration file "/usr/lib/systemd/network/80-container-ve.link"
Parsed configuration file "/usr/lib/systemd/network/80-container-vb.link"
Parsed configuration file "/usr/lib/systemd/network/80-6rd-tunnel.link"
Created link configuration context.
Reading rules file: /usr/lib/udev/rules.d/01-md-raid-creating.rules
Reading rules file: /usr/lib/udev/rules.d/10-dm.rules
Reading rules file: /usr/lib/udev/rules.d/10-nvidia.rules
Reading rules file: /usr/lib/udev/rules.d/11-dm-lvm.rules
Reading rules file: /usr/lib/udev/rules.d/11-dm-parts.rules
Reading rules file: /usr/lib/udev/rules.d/13-dm-disk.rules
Reading rules file: /usr/lib/udev/rules.d/39-usbmuxd.rules
Reading rules file: /usr/lib/udev/rules.d/40-libgphoto2.rules
Reading rules file: /usr/lib/udev/rules.d/40-usb-media-players.rules
Reading rules file: /usr/lib/udev/rules.d/40-usb_modeswitch.rules
Reading rules file: /etc/udev/rules.d/41-nitrokey.rules
Reading rules file: /usr/lib/udev/rules.d/50-udev-default.rules
Reading rules file: /usr/lib/udev/rules.d/51-dlm.rules
Reading rules file: /usr/lib/udev/rules.d/51-ocfs2.rules
Reading rules file: /usr/lib/udev/rules.d/56-hpmud.rules
Reading rules file: /usr/lib/udev/rules.d/60-autosuspend.rules
Reading rules file: /usr/lib/udev/rules.d/60-block-scheduler.rules
Reading rules file: /usr/lib/udev/rules.d/60-block.rules
Reading rules file: /usr/lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /usr/lib/udev/rules.d/60-ddcutil-i2c.rules
Reading rules file: /usr/lib/udev/rules.d/60-dmi-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-drm.rules
Reading rules file: /usr/lib/udev/rules.d/60-evdev.rules
Reading rules file: /usr/lib/udev/rules.d/60-fido-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-infiniband.rules
Reading rules file: /usr/lib/udev/rules.d/60-input-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-libjaylink.rules
Failed to open /usr/lib/udev/rules.d/60-nfs.rules, ignoring: Permission denied
Failed to read rules file /usr/lib/udev/rules.d/60-nfs.rules, ignoring: Permission denied
Reading rules file: /usr/lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-mtd.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /usr/lib/udev/rules.d/60-sensor.rules
Reading rules file: /usr/lib/udev/rules.d/60-serial.rules
Reading rules file: /usr/lib/udev/rules.d/60-steam-input.rules
Reading rules file: /usr/lib/udev/rules.d/60-steam-vr.rules
Reading rules file: /usr/lib/udev/rules.d/60-tpm-udev.rules
Reading rules file: /usr/lib/udev/rules.d/60-upower-battery.rules
Reading rules file: /usr/lib/udev/rules.d/60-vboxguest.rules
Reading rules file: /usr/lib/udev/rules.d/60_flashrom.rules
Reading rules file: /usr/lib/udev/rules.d/61-kde-bluetooth-rfkill.rules
Reading rules file: /usr/lib/udev/rules.d/63-md-raid-arrays.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs-dm.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs-zoned.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs.rules
Reading rules file: /usr/lib/udev/rules.d/64-ext4.rules
Reading rules file: /usr/lib/udev/rules.d/64-md-raid-assembly.rules
Reading rules file: /usr/lib/udev/rules.d/65-libwacom.rules
Reading rules file: /usr/lib/udev/rules.d/65-persistent-net-nbft.rules
Reading rules file: /usr/lib/udev/rules.d/65-sane-backends.rules
Reading rules file: /usr/lib/udev/rules.d/66-kpartx.rules
Reading rules file: /usr/lib/udev/rules.d/68-del-part-nodes.rules
Reading rules file: /usr/lib/udev/rules.d/69-cd-sensors.rules
Reading rules file: /usr/lib/udev/rules.d/69-dm-lvm.rules
Reading rules file: /usr/lib/udev/rules.d/69-libftdi.rules
Reading rules file: /usr/lib/udev/rules.d/69-libmtp.rules
Reading rules file: /usr/lib/udev/rules.d/69-md-clustered-confirm-device.rules
Reading rules file: /usr/lib/udev/rules.d/70-camera.rules
Reading rules file: /usr/lib/udev/rules.d/70-hypervfcopy.rules
Reading rules file: /usr/lib/udev/rules.d/70-hypervkvp.rules
Reading rules file: /usr/lib/udev/rules.d/70-hypervvss.rules
Reading rules file: /usr/lib/udev/rules.d/70-joystick.rules
Reading rules file: /usr/lib/udev/rules.d/70-libcamera.rules
Reading rules file: /usr/lib/udev/rules.d/70-libfprint-2.rules
Reading rules file: /usr/lib/udev/rules.d/70-memory.rules
Reading rules file: /usr/lib/udev/rules.d/70-mouse.rules
Reading rules file: /usr/lib/udev/rules.d/70-nvmf-autoconnect.rules
Reading rules file: /usr/lib/udev/rules.d/70-nvmf-keys.rules
Reading rules file: /usr/lib/udev/rules.d/70-power-switch.rules
Reading rules file: /usr/lib/udev/rules.d/70-printers.rules
Reading rules file: /usr/lib/udev/rules.d/70-spice-vdagentd.rules
Reading rules file: /usr/lib/udev/rules.d/70-spice-webdavd.rules
Reading rules file: /usr/lib/udev/rules.d/70-touchpad.rules
Reading rules file: /usr/lib/udev/rules.d/70-uaccess.rules
Reading rules file: /usr/lib/udev/rules.d/71-ipp-usb.rules
Reading rules file: /usr/lib/udev/rules.d/71-nvmf-hpe.rules
Reading rules file: /usr/lib/udev/rules.d/71-nvmf-netapp.rules
Reading rules file: /usr/lib/udev/rules.d/71-nvmf-vastdata.rules
Reading rules file: /usr/lib/udev/rules.d/71-prefixdevname.rules
Reading rules file: /usr/lib/udev/rules.d/71-seat.rules
Reading rules file: /usr/lib/udev/rules.d/73-seat-late.rules
Reading rules file: /usr/lib/udev/rules.d/75-net-description.rules
Reading rules file: /usr/lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-broadmobi-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-cinterion-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-dell-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-dlink-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-ericsson-mbm.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-fibocom-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-foxconn-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-gosuncn-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-haier-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-huawei-net-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-linktop-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-longcheer-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-mtk-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-nokia-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-qcom-soc.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-quectel-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-sierra.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-simtech-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-telit-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-tplink-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-ublox-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-x22x-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-zte-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/78-sound-card.rules
Reading rules file: /usr/lib/udev/rules.d/80-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/80-iio-sensor-proxy.rules
Reading rules file: /usr/lib/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /usr/lib/udev/rules.d/80-mm-candidate.rules
Reading rules file: /usr/lib/udev/rules.d/80-net-setup-link.rules
Reading rules file: /usr/lib/udev/rules.d/80-nvidia-pm.rules
Reading rules file: /usr/lib/udev/rules.d/80-pktsetup.rules
Reading rules file: /usr/lib/udev/rules.d/80-udisks2.rules
Reading rules file: /usr/lib/udev/rules.d/81-net-dhcp.rules
Reading rules file: /usr/lib/udev/rules.d/84-nm-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /usr/lib/udev/rules.d/85-regulatory.rules
Reading rules file: /usr/lib/udev/rules.d/90-alsa-restore.rules
Reading rules file: /usr/lib/udev/rules.d/90-bolt.rules
Reading rules file: /usr/lib/udev/rules.d/90-iocost.rules
Reading rules file: /usr/lib/udev/rules.d/90-libinput-fuzz-override.rules
Reading rules file: /usr/lib/udev/rules.d/90-nm-thunderbolt.rules
Reading rules file: /usr/lib/udev/rules.d/90-pipewire-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/90-vconsole.rules
Reading rules file: /usr/lib/udev/rules.d/91-drm-modeset.rules
Reading rules file: /usr/lib/udev/rules.d/95-cd-devices.rules
Reading rules file: /usr/lib/udev/rules.d/95-dm-notify.rules
Reading rules file: /usr/lib/udev/rules.d/95-upower-hid.rules
Reading rules file: /usr/lib/udev/rules.d/95-upower-wup.rules
Reading rules file: /usr/lib/udev/rules.d/98-kexec.rules
Reading rules file: /usr/lib/udev/rules.d/99-nfs.rules
Reading rules file: /usr/lib/udev/rules.d/99-qemu-guest-agent.rules
Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
Reading rules file: /usr/lib/udev/rules.d/99-vmware-scsi-udev.rules
sd-device: Failed to chase symlinks in "/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:20A0:42DD.000D/hidraw/hidraw5".
hidraw5: /usr/lib/udev/rules.d/50-udev-default.rules:17 Importing properties from results of builtin command 'hwdb'
hidraw5: hwdb modalias key: "hid:b0003g0001v000020A0p000042DD"
hidraw5: hwdb modalias key: "usb:v20A0p42DDd0300dc00dsc00dp00ic03isc00ip00in00"
hidraw5: /usr/lib/udev/rules.d/60-fido-id.rules:5 Importing properties from results of 'fido_id'
hidraw5: Starting 'fido_id'
Successfully forked off '(spawn)' as PID 25067.
Skipping PR_SET_MM, as we don't have privileges.
hidraw5: 'fido_id'(err) 'Failed to get current device from environment: Invalid argument'
hidraw5: Process 'fido_id' failed with exit code 1.
hidraw5: /usr/lib/udev/rules.d/60-fido-id.rules:5 Command "fido_id" returned 1 (error), ignoring
hidraw5: /usr/lib/udev/rules.d/71-seat.rules:75 Importing properties from results of builtin command 'path_id'
hidraw5: /usr/lib/udev/rules.d/73-seat-late.rules:16 RUN 'uaccess'
Properties:
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:20A0:42DD.000D/hidraw/hidraw5
DEVNAME=/dev/hidraw5
MAJOR=242
MINOR=5
ACTION=add
SUBSYSTEM=hidraw
TAGS=:uaccess:seat:
CURRENT_TAGS=:seat:uaccess:
ID_VENDOR_FROM_DATABASE=Clay Logic
ID_MODEL_FROM_DATABASE=Nitrokey 3A NFC Bootloader/3C NFC Bootloader
ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:1:1.0
ID_PATH=pci-0000:00:14.0-usb-0:1:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_0
ID_FOR_SEAT=hidraw-pci-0000_00_14_0-usb-0_1_1_0
USEC_INITIALIZED=41408062345
ID_PROCESSING=1
Tags:
uaccess
seat
Inotify watch:
disabled
Queued commands:
RUN{builtin} : uaccess
Unload kernel module index.
Unloaded link configuration context.
Why are you following this GitHub issue from 2022 ?
You just need to install the udev rules as explained in the documentation and then try again to do the GPG command to see if it’s fixed.
additionally do you have pcscd installed ?
The NitroKey documentation for setting up the udev rules has a link to that old GitHub comment for getting some debugging hints.
The udev rules are installed, you can see in the udevadm test:
[...]
Reading rules file: /usr/lib/udev/rules.d/40-usb_modeswitch.rules
Reading rules file: /etc/udev/rules.d/41-nitrokey.rules
Reading rules file: /usr/lib/udev/rules.d/50-udev-default.rules
[...]
additionally do you have pcscd installed ?
Yep, it looks to be installed and working.
cocolino@Iskra:~$ systemctl status pcscd
● pcscd.service - PC/SC Smart Card Daemon
Loaded: loaded (/usr/lib/systemd/system/pcscd.service; indirect; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Thu 2025-09-25 15:50:24 BST; 49min ago
Invocation: 5dbc6ab390d34432a450bc8f9fea2114
TriggeredBy: ● pcscd.socket
Docs: man:pcscd(8)
Main PID: 25331 (pcscd)
Tasks: 9 (limit: 38000)
Memory: 1.8M (peak: 3.2M)
CPU: 467ms
CGroup: /system.slice/pcscd.service
└─25331 /usr/bin/pcscd --foreground --auto-exit
Sep 25 15:50:24 Iskra systemd[1]: Started pcscd.service - PC/SC Smart Card Daemon.
But gpg --card-status still returns:
gpg: selecting card failed: No such device
gpg: OpenPGP card not available: No such device
Hello, still no progress on this. If anyone has an idea of what I could try let me know.
I am following the Fedora guide for setting up PGP with the NitroKey.
=> NitroKey firmware version: 1.8.2
=> lsusb reports: Bus 001 Device 011: ID 20a0:42b2 Clay Logic Nitrokey 3A Mini/3A NFC/3C NFC
=> pcsc-lite is installed and running
=> I have run the command: systemctl enable pcscd.socket pcscd.service && systemctl start pcscd.socket
=> I have connected libpcsclite to pcscd and shared access to `pcscd`, I have cat ~/.gnupg/scdaemon.conf:
pcsc-driver /usr/lib64/libpcsclite.so.1
pcsc-shared
=> gpg –card-status reports that no card is found.
P.S. Links to docs [dot] nitrokey [dot] com are not allowed? o.O What? Why? I wanted to show what guide I am following.
P.S.S. My post was flagged as spam by “the community“. What did I do wrong…?
saper
December 1, 2025, 4:11pm
10
P.S.S. My post was flagged as spam by “the community“. What did I do wrong…?
Discourse, the software running this support portal, thinks if you post a link in your first post you might be spammer. Sorry for that… I think the moderators have published your post now for everyone to see.
2 Likes
saper
December 1, 2025, 4:15pm
11
If you install opensc, do pkcs11-tool -T or openpgp-tool -C show something?
Sometimes I start pcscd with the pcscd -adf flags in the foreground to see what is wrong, but you would need to tell systemd not to interfere with that.
1 Like
saper
December 1, 2025, 4:17pm
12
Also please check pcsc-lite and polkit | Ludovic Rousseau's blog - depending on your Fedora and/or pcscd version you might need to allow the user you are using to access the smartcards.
(If pkcs11-tool -T can see the USB key as root, but not as an unprivileged user, this is a polkit issue).
2 Likes
Hello, thank you for your time.
I did made some slight progress on this issue since. The problem has something to do with permissions, I can do `gpg –card-status` as root:
cocolino@Iskra:~$ gpg --card-status
gpg: selecting card failed: No such device
gpg: OpenPGP card not available: No such device
cocolino@Iskra:~$ sudo gpg --card-status
[sudo] password for cocolino:
Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00
Application ID ...: D276000124010304000FBA82BE340000
Application type .: OpenPGP
Version ..........: 3.4
Manufacturer .....: Nitrokey
Serial number ....: BXXXXXX4
Name of cardholder: Mircea Arva
Language prefs ...: en
Salutation .......: Mr.
URL of public key : https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xd8e70dac2cb9f4de272800d58ccaf633b6859e80
Login data .......: cocolinofan
Signature PIN ....: forced
Key attributes ...: rsa4096 rsa4096 rsa4096
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 0 3
Signature counter : 10
KDF setting ......: off
UIF setting ......: Sign=off Decrypt=off Auth=off
Signature key ....: 9C63 E625 D682 4636 EBC4 C897 C1B1 AA54 34C7 55A0
created ....: 2024-01-26 19:50:12
Encryption key....: B8C7 68A7 5BB3 EB6D 9603 31E8 BB39 FA2D 78C5 8B67
created ....: 2024-01-26 19:52:50
Authentication key: F14D 2F7D 0FD7 82B7 316F B2DE 5EF0 4E40 6E0C 0E1D
created ....: 2024-01-26 19:54:22
General key info..: [none]
pkcs11-tool -T results:
cocolino@Iskra:~$ pkcs11-tool -T
Available slots:
No slots.
cocolino@Iskra:~$ sudo pkcs11-tool -T
Available slots:
No slots.
My udev rules are identical between the two Fedora computers (I can do gpg --card-status as the user on one, but not the other):
cocolino@Iskra:~$ getfacl /dev/hidraw0
getfacl: Removing leading '/' from absolute path names
# file: dev/hidraw0
# owner: root
# group: root
user::rw-
group::---
other::---
Solved it! I will live the rest of the message maybe it will help someone in the future.
There was an extra line in my .gnupg/scdaemon.conf: reader-port 20A0:42B2:X:0 , My old config looked like this:
###+++--- GPGConf ---+++###
reader-port 20A0:42B2:X:0
###+++--- GPGConf ---+++### Thu 28 Aug 2025 12:37:04 BST
# GPGConf edited this configuration file.
# It will disable options before this marked block, but it will
# never change anything below these lines.
pcsc-driver /usr/lib64/libpcsclite.so.1
card-timeout 5
disable-ccid
don’t know how it got there but after I commented it out everything works as expected.
Steps to fix:
→ edit .gnupg/scdaemon.conf
→ make sure that everything that’s in there is:
pcsc-driver /usr/lib64/libpcsclite.so.1
card-timeout 5
disable-ccid
→ run gpgconf --kill gpg-agent and sudo systemctl restart pcscd
1 Like