Thank you for the quick response.  I still had the test box ready, which
made it easier to test some more. :)

[NIIBE Yutaka]
> In 2.1.14, libusb has been changed, so, the error message is
> different, but it also means access error.  It's highly likely access
> permission problem.

Aha.

> Please try again with proper permission.

I assumed that since the first run was able to find the card, the
access was ok.  Apparently not.

> I don't know about FreedomBox image.

It is using the Debian packages from testing.

> Apparently, udev rules doesn't work well.  Please try manually chmod
> or chgrp device file under /dev/bus/usb/

I did this:

fbx@freedombox:~$ sudo chmod a+rw /dev/bus/usb/001/00*
fbx@freedombox:~$ gpg2 --card-status
Reader ...........: 08E6:3438:C4CC14F3:0
Application ID ...: D2760001240102010005000042020000
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 00004202
Name of cardholder: [not set]
Language prefs ...: de
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]
fbx@freedombox:~$

Indeed, access was the problem!

Trying to figure out why it did not work out of the box, I noticed the
the scdaemon udev rule do not list my card reader, and tried to add my
cards USB ID like this:

--- /tmp/60-scdaemon.rules      2016-05-21 22:34:16.700000000 +0000
+++ /lib/udev/rules.d/60-scdaemon.rules 2016-05-22 02:26:28.070000000 +0000
@@ -20,6 +20,7 @@
 ATTR{idVendor}=="076b", ATTR{idProduct}=="6622", ENV{ID_SMARTCARD_READER}="1", 
ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"
 ## Gemalto
 ATTR{idVendor}=="08e6", ATTR{idProduct}=="3437", ENV{ID_SMARTCARD_READER}="1", 
ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"
+ATTR{idVendor}=="08e6", ATTR{idProduct}=="3438", ENV{ID_SMARTCARD_READER}="1", 
ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"
 ATTR{idVendor}=="08e6", ATTR{idProduct}=="3478", ENV{ID_SMARTCARD_READER}="1", 
ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"
 ATTR{idVendor}=="08e6", ATTR{idProduct}=="34c2", ENV{ID_SMARTCARD_READER}="1", 
ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"
 ATTR{idVendor}=="08e6", ATTR{idProduct}=="34ec", ENV{ID_SMARTCARD_READER}="1", 
ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"

This did not help.

Then I noticed the /dev/bus/usb/001/004 lacked the acl marker (+), and
suspected this to be caused by the fact that the 'acl' package is
missing on the FreedomBox.  After installing 'acl' and rebooting
(because I did not sit next to the box and could not easily reconnect
the smart card reader) I still did not get it to work over ssh.  Then it
occurred to me that local device access required console login, not ssh
login, and I walked over to the box to give it a go.  There it worked
out of the box.  After logging in, I saw the missing '+':

root@freedombox:~# ls -l /dev/bus/usb/001/*
crw-rw-r--  1 root root 189, 0 mai   21 22:31 /dev/bus/usb/001/001
crw-rw-r--  1 root root 189, 1 mai   21 22:31 /dev/bus/usb/001/002
crw-rw-r--  1 root root 189, 2 mai   21 22:31 /dev/bus/usb/001/003
crw-rw-r--+ 1 root root 189, 3 mai   21 22:31 /dev/bus/usb/001/004
crw-rw-r--  1 root root 189, 4 mai   21 22:31 /dev/bus/usb/001/005
root@freedombox:~#

Then I tried again after doing 'apt purge acl', and it still worked (the
'+' showed up as it should).  Finally, I removed the line I added from
/lib/udev/rules.d/60-scdaemon.rules and tried again to verify that it
was really needed.  This time it failed.

So I guess the key to getting this to work is simply to add the USB ID
of my card reader to the scdaemon udev setup.  Daniel, do you want a
separate bug report for that, or can you apply the patch above to the
next upload?

Thank you very much for your help and patience. :)

-- 
Happy hacking
Petter Reinholdtsen

Reply via email to