USB Problem with Card Read AFTER Update

Hello,

sory for my english.

I have Opensuse 11.1 and use an SCR3311 USB Smart Card Reader.

After upadte i have no Acces to it.

lsusb :
Bus 001 Device 005: ID 04e6:511d SCM Microsystems, Inc. SCR3311 Smart Card Reader
show it

and in /var/log/messages is all OK to when i plug it in but ifdhandler cant acces it

Dec 1 13:50:55 localserver kernel: usb 1-9: configuration #1 chosen from 1 choice
Dec 1 13:50:55 localserver kernel: usb 1-9: New USB device found, idVendor=04e6, idProduct=511d
Dec 1 13:50:55 localserver kernel: usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=5
Dec 1 13:50:55 localserver kernel: usb 1-9: Product: SCR3311 USB Smart Card Reader
Dec 1 13:50:55 localserver kernel: usb 1-9: Manufacturer: SCM Microsystems Inc.
Dec 1 13:50:55 localserver kernel: usb 1-9: SerialNumber: 21120825200907
Dec 1 13:50:55 localserver chipcardd[3610]: devicemanager.c: 3356: Changes in hardware list
Dec 1 13:51:03 localserver ifdhandler[9363]: ifd_open: trying to open ccid@usb:/dev/bus/usb/001/005
Dec 1 13:51:03 localserver ifdhandler[9363]: Unable to open USB device /dev/bus/usb/001/005: Permission denied
Dec 1 13:51:03 localserver ifdhandler[9363]: usb:/dev/bus/usb/001/005: initialization failed (driver ccid)
Dec 1 13:51:03 localserver ifdhandler[9363]: unable to open reader ccid usb /dev/bus/usb/001/005

ls -l from /dev shows me
ls -l /dev/bus/usb/001

crw-r–r-- 1 root root 189, 0 1. Dez 13:36 001
crw-r–r-- 1 root root 189, 2 1. Dez 13:36 003
crw-r–r-- 1 root root 189, 4 1. Dez 13:50 005

pcscd -f -d
00000000 pcscdaemon.c:280:main() pcscd set to foreground with debug send to stderr
00000038 debuglog.c:239:DebugLogSetLevel() debug level=debug
00000659 pcscdaemon.c:498:main() pcsc-lite 1.4.102 daemon ready.
00028846 hotplug_libhal.c:305:get_driver() Looking a driver for VID: 0x1D6B, PID: 0x0002
00001359 hotplug_libhal.c:305:get_driver() Looking a driver for VID: 0x04E6, PID: 0x511D
00001091 hotplug_libhal.c:305:get_driver() Looking a driver for VID: 0x046D, PID: 0xC512
00000845 hotplug_libhal.c:305:get_driver() Looking a driver for VID: 0x046D, PID: 0xC512
00001063 hotplug_libhal.c:305:get_driver() Looking a driver for VID: 0x1D6B, PID: 0x0001

cant find it

I havent change anything, only update the system. HELP PEASE :slight_smile:

Stefan

Can you check if it works when logged in as root?

Hello,

no it isn’t working as root.

the ifdhandler uses an other User ID.

Stefan

What was the result of the following when tried as root?

tail -20 /var/log/messages

Hello,

and thanks.

What shout i try as Root ?

The the ifdhandler has no access to the usb Device and if start the ifdhandler as root. It has access to the device. But Application can not access.

In /var/log/messages is nothing.

Stefan

rcopenct start with debug=5 shows me:

Restarting smart card terminal framework: OpenCT 0 processes killed.
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0973/0001, egate)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0529/050c, etoken)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0529/0514, etoken)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0529/0600, etoken64)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0529/0700, etoken64)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:073d/0005, eutron)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04b9/1202, ikey2k)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04b9/1300, ikey3k)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:096e/0005, starkey)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:03f0/1024, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:046a/0010, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04e6/5115, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04e6/5116, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04e6/5117, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04e6/511d, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04e6/E001, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:04e6/E003, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:073d/0c00, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:076b/1021, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:076b/3021, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:076b/5121, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:076b/5321, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:076b/6622, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0783/0003, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:08e6/3437, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:08e6/3438, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:08e6/4433, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0b97/7762, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0b97/7772, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0bf8/1006, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0dc3/1004, ccid)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:072f/0001, pertosmart1030)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:072f/8009, pertosmart1030)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:072f/9000, pertosmart1038)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:072f/9006, pertosmart1038)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:072f/9007, pertosmart1038)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:072f/90d0, pertosmart1038)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0c4b/0100, cyberjack)
Debug: ifd_driver_add_id: ifd_driver_add_id(usb:0a89/0020, rutoken)
Debug: ifd_spawn_handler: driver=ccid, devtype=usb:/dev/bus/usb/001/005, index=-1
Debug: ifd_rutoken_register: ifd_rutoken_register()

In /var/log/messages

Dec 2 07:40:33 localserver ifdhandler[31134]: ifd_open: trying to open ccid@usb:/dev/bus/usb/001/005
Dec 2 07:40:33 localserver ifdhandler[31134]: Unable to open USB device /dev/bus/usb/001/005: Permission denied
Dec 2 07:40:33 localserver ifdhandler[31134]: usb:/dev/bus/usb/001/005: initialization failed (driver ccid)
Dec 2 07:40:33 localserver ifdhandler[31134]: unable to open reader ccid usb /dev/bus/usb/001/005

ifdhandler -F ccid usb /dev/bus/usb/001/005
Debug: skipped 1 class/vendor specific interface descriptors

/var/log/messages shows nothing

But Application has no access

See if it is trying to connect as a user (ifdhandler). If that is the case, you need to check the permission on the device /dev/bus/usb/001/005

How can i find out what user ist ifdhander using ?

The permisions on the USB Device are as shown

ls -l /dev/bus/usb/001
crw-r–r-- 1 root root 189, 0 1. Dez 13:36 001
crw-r–r-- 1 root root 189, 2 1. Dez 13:36 003
crw-r–r-- 1 root root 189, 4 2. Dez 09:59 005

when i change the permisions to chmod 666 /dev/bus/usb/001/005

it WORKS !
But when reconnect the reader, i have the same permison problem again.

Stefan

Do you mean the permission is getting reset when you reconnect? Did you check that?
Also, see the /var/log/messages to verify that it uses the same /dev/bus/usb/001/005 when reconnected.

no it isn’t using the same ID. It allway use another ID

It counts up

Bus 001 Device 010: ID 04e6:511d SCM Microsystems, Inc. SCR3311 Smart Card Reader

Bus 001 Device 011: ID 04e6:511d SCM Microsystems, Inc. SCR3311 Smart Card Reader

It is the same with an USB Stick:

Bus 002 Device 014: ID 0204:6025 Chipsbank Microelectronics Co., Ltd CBM2080 Flash drive controller
Bus 002 Device 015: ID 0204:6025 Chipsbank Microelectronics Co., Ltd CBM2080 Flash drive controller

Stefan

You may have to set up a udev rule for it.
Have a look in /etc/udev/rules.d/
There may be a rule file already there.

Ok i found pcscd_ccid.rules

and insert the ID for the Reader. Now it that file, but it changes nothing. The reader was detected by the Class 0x0b:

udev rules for pcscd and CCID readers

Gemplus PCMCIA Card

#SUBSYSTEMS==“pcmcia”, DRIVERS==“serial_cs”, ACTION==“add”, ATTRS{prod_id1}==“Gemplus”, ATTRS{prod_id2}==“SerialPort”, ATTRS{prod_id3}==“GemPC Card”, RUN+="/usr/sbin/pcscd --hotplug"

If not adding the device, go away

ACTION!=“add”, GOTO=“pcscd_ccid_rules_end”

Kobil mIDentity

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“0d46”, ATTRS{idProduct}==“4081”, RUN+="/usr/sbin/Kobil_mIDentity_switch"

generic CCID device

SUBSYSTEMS==“usb”, ATTRS{bInterfaceClass}==“0b”, RUN+="/usr/sbin/pcscd --hotplug"

non CCID generic (InterfaceClass: 0xFF)

CherrySmartTerminalST2XXX.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“046a”, ATTRS{idProduct}==“003e”, RUN+="/usr/sbin/pcscd --hotplug"

DellSK-3106.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“413c”, ATTRS{idProduct}==“2100”, RUN+="/usr/sbin/pcscd --hotplug"

MySmartPad.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“09be”, ATTRS{idProduct}==“0002”, RUN+="/usr/sbin/pcscd --hotplug"

SCR331-DI-NTTCom.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“04e6”, ATTRS{idProduct}==“5120”, RUN+="/usr/sbin/pcscd --hotplug"

SCR331-DI.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“04e6”, ATTRS{idProduct}==“511d”, RUN+="/usr/sbin/pcscd --hotplug"

SCR3311.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“04e6”, ATTRS{idProduct}==“5111”, RUN+="/usr/sbin/pcscd --hotplug"

SDI010.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“04e6”, ATTRS{idProduct}==“5121”, RUN+="/usr/sbin/pcscd --hotplug"

SPR532.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“04e6”, ATTRS{idProduct}==“e003”, RUN+="/usr/sbin/pcscd --hotplug"

Verisign_secure_storage_token.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“08e6”, ATTRS{idProduct}==“1359”, RUN+="/usr/sbin/pcscd --hotplug"

Verisign_secure_token.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“08e6”, ATTRS{idProduct}==“ace0”, RUN+="/usr/sbin/pcscd --hotplug"

SchlumbergerSema Cyberflex Access e-gate

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“0973”, ATTRS{idProduct}==“0003”, RUN+="/usr/sbin/pcscd --hotplug"

All done

LABEL=“pcscd_ccid_rules_end”

how can i see what udev and hal are doing ?

stefan

Your device’s line is:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e6", ATTRS{idProduct}=="511d", RUN+="/usr/sbin/pcscd --hotplug"

You can change the device’s permission there. I am not very sure about the full details but it is something like:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e6", ATTRS{idProduct}=="511d", MODE="0666", RUN+="/usr/sbin/pcscd --hotplug"

Good Morning Syampillai,

that solve the Probelm. Thanks a lot.

But why is changing ? What was New ?

For ohters how have the Problem:

Goto /etc/udev/rules.d
open pcscd_ccid.rules and insert your Card Reader like this:

SCR3311.txt

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“04e6”, ATTRS{idProduct}==“511d”, MODE=“0666”, RUN+="/usr/sbin/pcscd --hotplug"

Replug it and all is OK.

Stefan

One Question i have, sorry

In /usr/lib64/hal you find hald-addon-openct it is paart of the openct package it have to change the owner of the Device:

#!/bin/bash

PRODUCT="printf %x/%x/%x $HAL_PROP_USB_DEVICE_VENDOR_ID $HAL_PROP_USB_DEVICE_PRODUCT_ID \ $HAL_PROP_USB_DEVICE_DEVICE_REVISION_BCD"

chown daemon:daemon $HAL_PROP_LINUX_DEVICE_FILE
exec /usr/sbin/openct-control attach usb:$PRODUCT usb $HAL_PROP_LINUX_DEVICE_FILE
~

but it isn’t working. Isn’t it calling or why not it changes the owner ?

Stefan

HAL is deprecated and the new equivalent mechanism is called DeviceKit.
I don’t know the full details but openSUSE (and few other distributions) have already started using DeviceKit.