Libchipcard und SCM SCR 335

 
vali
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 4
Dabei seit: 02 / 2009
Betreff:

Libchipcard und SCM SCR 335

 · 
Gepostet: 06.02.2009 - 18:08 Uhr  ·  #1
Hallo,

ich möchte HBCI mit gnucash nutzen, leider hakt es schon bei libchipcard. Hier einige Informationen zum System:

- Debian Lenny amd64
- Chipdrive SCR 335 mit Firmware 5.23
- Libchipcard v 4.1.3 (aus Debian Testing wie der Rest)
- libccid v 1.3.8
- libpcsclite1 v 1.4.102

pcscd musste mit libccid zusammen installiert werden, habe ich im Anschluss allerdings entfernt, da der pcscd den libchipcard blockieren soll.

Der Kartenleser läuft also mit der libccid und wird auch von libchipcard erkannt und geladen.
'chipcard-tool check' spuckt folgendes aus:

Code

$> chipcard-tool check
  Readers:
  - auto1-ccid_scm_335 (ccid_scm_335, port 0): error
Event log:
17:53:23 Reader listing
17:53:26 Reader started
17:53:28 Reader error (Unknow error code)


Die Logs sprechen folgendes:

driver.log
Code
5:2009/02/06 17-53-25:driver(3973):driver.c:  353: Starting driver "/usr/lib/chipcard/server/drivers/ifd" with lowlevel "/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so.1.3.8"
5:2009/02/06 17-53-25:driver(3973):driverifd.c:  188: Detected IFD version 3
5:2009/02/06 17-53-25:driver(3973):d_ipc.c:  219: Connected to server
5:2009/02/06 17-53-26:driver(3973):d_handle.c:   26: Incoming request "Driver_StartReader"
5:2009/02/06 17-53-26:driver(3973):d_startreader.c:   36: Command: Start reader
3:2009/02/06 17-53-26:driver(3973):d_startreader.c:  156: No DriversReaderId
5:2009/02/06 17-53-26:driver(3973):d_startreader.c:  204: Reader "auto1-ccid_scm_335" logs to "/var/log/chipcard/drivers/ccid_ifd/auto1-ccid_scm_335.log"
5:2009/02/06 17-53-26:driver(3973):driverifd.c:  917: Creating channel 0/usb:04e6/5115:libusb:006:002
3:2009/02/06 17-53-26:driver(3973):driverifd.c: 1025: PCSC: ccid_usb.c:402:OpenUSBByName() Can't claim interface 006/002: Die Operation ist nicht erlaubt
3:2009/02/06 17-53-26:driver(3973):driverifd.c: 1025: PCSC: ifdhandler.c:99:IFDHCreateChannelByName() failed
3:2009/02/06 17-53-26:driver(3973):driverifd.c: 1025: PCSC: ccid_usb.c:402:OpenUSBByName() Can't claim interface 006/002: Die Operation ist nicht erlaubt
3:2009/02/06 17-53-26:driver(3973):driverifd.c: 1025: PCSC: ifdhandler.c:194:IFDHCreateChannel() failed
3:2009/02/06 17-53-27:driver(3973):driverifd.c: 1025: PCSC: ccid_usb.c:402:OpenUSBByName() Can't claim interface 006/002: Die Operation ist nicht erlaubt
3:2009/02/06 17-53-27:driver(3973):driverifd.c: 1025: PCSC: ifdhandler.c:194:IFDHCreateChannel() failed
3:2009/02/06 17-53-27:driver(3973):driverifd.c: 1025: PCSC: ccid_usb.c:402:OpenUSBByName() Can't claim interface 006/002: Die Operation ist nicht erlaubt
3:2009/02/06 17-53-27:driver(3973):driverifd.c: 1025: PCSC: ifdhandler.c:194:IFDHCreateChannel() failed
5:2009/02/06 17-53-59:driver(3973):d_handle.c:   26: Incoming request "Driver_StopDriver"
3:2009/02/06 17-53-59:driver(3973):driverifd.c: 1025: PCSC: utils.c:76:LunToReaderIndex() Lun: 0 not found
5:2009/02/06 17-53-59:driver(3973):driverifd.c:  984: Closing channel 0
3:2009/02/06 17-53-59:driver(3973):driverifd.c: 1025: PCSC: utils.c:76:LunToReaderIndex() Lun: 0 not found
5:2009/02/06 17-53-59:driver(3973):d_stopdriver.c:   50: Driver down
5:2009/02/06 17-53-59:driver(3973):main.c:   52: Stopping driver "/usr/lib/chipcard/server/drivers/ifd"


auto1-ccid_scm_335.log:
Code
5:2009/02/06 17-53-26:auto1-ccid_scm_335(3973):d_startreader.c:  223: Init reader auto1-ccid_scm_335
3:2009/02/06 17-53-28:auto1-ccid_scm_335(3973):driverifd.c:  948: CCID error on createChannel 0/0: 612
3:2009/02/06 17-53-28:auto1-ccid_scm_335(3973):driverifd.c:  955: Could not connect any slot
3:2009/02/06 17-53-28:auto1-ccid_scm_335(3973):d_startreader.c:  230: Could not connect reader auto1-ccid_scm_335 (11: Unknow error code)
5:2009/02/06 17-53-28:auto1-ccid_scm_335(3973):d_startreader.c:  268: Reader start handled
5:2009/02/06 17-53-59:auto1-ccid_scm_335(3973):driverifd.c:  680: CCID: Soft error 612
3:2009/02/06 17-53-59:auto1-ccid_scm_335(3973):driverifd.c:  989: Error closing channel 0 (612)


Ab hier weiß ich nicht mehr weiter!
Den Treiber von SCM habe ich mir auch schon runtergeladen und ausprobiert, der verhält sich allerdings auch nicht besser:
Code
$> chipcard-tool check
Loading scmccid 5.0.8
/usr/lib/chipcard/server/drivers/ifd: symbol lookup error: /usr/local/pcsc/drivers/scmcciddriver.bundle/Contents/Linux/libscmccid.so.5.0.8: undefined symbol: usb_init
  --------------------------
  Driver
  Type            : ifd
  Name            : scmccid_ifd
  DataDir         : (null)
  LogFile         : /var/log/chipcard/drivers/scmccid_ifd/@reader@.log
  Library         : /usr/local/pcsc/drivers/scmcciddriver.bundle/Contents/Linux/libscmccid.so.5.0.8
  Customer        : (null)
  MaxReaders      : 1
  Vars:
    Group : "vars"
  Id              : 498c67a3
  IPC-Id          : 498c67ab
  Status          : Up (3)
  ActiveReaders   : 1
  AssignedReaders : 1
    Driver flags : auto
  Readers:
  - auto1-scm_scr335 (scm_scr335, port 0): error
Event log:
17:48:50 Reader listing
17:48:53 Reader started
17:48:53 Driver is not running anymore


Habt ihr Tipps für mich?
vali
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 4
Dabei seit: 02 / 2009
Betreff:

udev?

 · 
Gepostet: 06.02.2009 - 21:04 Uhr  ·  #2
Folgendes habe ich nun herausgefunden:

- Es scheint an den udev Regeln zu liegen
- Wenn ich /dev/usbdevX.Y_* und /dev/bus/usb/00X/00Y der Group chipcard zuweise, dann funktioniert der Leser, allerdings hängt sich das Teil scheinbar nach kurzer Zeit wieder auf.
- Wie ich das verstehe sollten die udev Regeln eigentlich die Group chipcard für das passende device einstellen, machen se aber nicht.
- Ich hab es bisher zustande gebracht mit gnucash meine Konten zu importieren und die Umsätze abzufragen...kurz danach lief der Leser wieder nicht. Der Vorgang ist dann das Ding ab- und wieder anzustöpseln, die usergroup für das device zu setzen und dann geht es wieder kurzzeitig.

Ich hoffe einfach mal, dass der instabile Treiberzustand durch die udev Regel und vielleicht dem Polling bzw. HardwareScan vom libchipcard zustande kommt.
aquamaniac
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Hamburg
Homepage: aqbanking.de/
Beiträge: 642
Dabei seit: 03 / 2005
Betreff:

Re: udev?

 · 
Gepostet: 07.02.2009 - 00:11 Uhr  ·  #3
Zitat geschrieben von vali

- Es scheint an den udev Regeln zu liegen


Ja, es sind die udev-Regeln: Der chipcard-daemon laeuft auf Debian-Derivaten unter einem eigenen Benutzer ("chipcard"), daher muessen die entsprechenden Geraete auch fuer diesen Benutzer zugaenglich sein.

Zitat geschrieben von vali

Ich hoffe einfach mal, dass der instabile Treiberzustand durch die udev Regel und vielleicht dem Polling bzw. HardwareScan vom libchipcard zustande kommt.


Nein, mit Polling hat das nichts zu tun. Es ist aber gut moeglich, dass die Kombination aus Leser und Treiber Probleme hat mit der Art, wie Libchipcard arbeitet: Libchipcard startet Leser nur, wenn es einen Client gibt, der darauf zugreifen moechte. Ist kein Client (mehr) da, wird der Leser wieder freigegeben. Dieses freigeben kann bei manchen Lesern (namentlich z.B. SCM Chipdrive Pinpad x32) zu Problemen fuehren.

Du kannst in der Beschriebungsdatei fuer den CCID-Treiber in der entsprechenden Leser-Sektion einmal das Flag "keepRunning" beim Leser einfuegen. Die Datei ist bei Dir vermutlich /usr/share/chipcard/server/drivers/ccid_ifd.xml.

Ein Lesereintrag mit diesem Flag wuerde dann so aussehen (das ist nur ein Beispiel fuer den Pinpad x32):
Code

    <reader name="scm" busType="UsbRaw" 
            vendor="0x04e6" product="0xe003" >
      <short>SCM Chipdrive Pinpad X32</short>
      <flags>
        <flag>keypad</flag>
        <flag>keepRunning</flag>
      </flags>
    </reader>


Damit wird der Leser nach dem Einschalten nicht mehr ausgeschaltet, eventuell geht es damit dann besser. Sonst einfach noch einmal melden.

Gruss
Martin
vali
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 4
Dabei seit: 02 / 2009
Betreff:

Re: Libchipcard und SCM SCR 335

 · 
Gepostet: 07.02.2009 - 01:04 Uhr  ·  #4
Die Sache mit dem udev ist etwas komisch. Scheinbar kommt er nicht über die Zeile mit SUBSYSTEM!="usb_device" hinaus. Dazu habe ich auch schon einen bugreport gefunden, dort wird usb_device durch usb ersetzt...das bringt allerdings keine Änderung.

Das keepRunning flag ändert leider nichts. (Dabei ist mir aufgefallen, dass bei meinem reader das keypad flag gesetzt ist, wobei der definitiv keines hat ;), das löschen ändert aber auch nichts).

Zwischendurch habe ich mal die libchipcard version 4.2.3 eingespielt, die erkennt leider nichtmal mehr den Leser. ('chipcard-tool list' gibt nichts aus)
Ich habe also wieder ein downgrade gemacht.

Hier nochmal der komplette output vom folgenden Vorgang:
- Leser einstecken (mit eingesteckter Karte)
- chipcard-tool check aufrufen (gibt ein 'up' zurück), die grüne LED am Leser fängt an zu leuchten
- nach kurzer Zeit erlischt die LED
- chipcard-tool check aufrufen (gibt den status 'error' zurück)

driver.log
Code
5:2009/02/07 00-58-02:driver(4804):driver.c:  353: Starting driver "/usr/lib/chipcard/server/drivers/ifd" with lowlevel "/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so.1.3.8"
5:2009/02/07 00-58-02:driver(4804):driverifd.c:  188: Detected IFD version 3
5:2009/02/07 00-58-02:driver(4804):d_ipc.c:  219: Connected to server
5:2009/02/07 00-58-03:driver(4804):d_handle.c:   26: Incoming request "Driver_StartReader"
5:2009/02/07 00-58-03:driver(4804):d_startreader.c:   36: Command: Start reader
3:2009/02/07 00-58-03:driver(4804):d_startreader.c:  156: No DriversReaderId
5:2009/02/07 00-58-03:driver(4804):d_startreader.c:  204: Reader "auto1-ccid_scm_335" logs to "/var/log/chipcard/drivers/ccid_ifd/auto1-ccid_scm_335.log"
5:2009/02/07 00-58-03:driver(4804):driverifd.c:  917: Creating channel 0/usb:04e6/5115:libusb:006:004
5:2009/02/07 00-58-04:driver(4804):driverifd.c:  544: Suspicious ATR, rereading it
5:2009/02/07 00-58-45:driver(4804):d_handle.c:   26: Incoming request "Driver_StopReader"
5:2009/02/07 00-58-45:driver(4804):driverifd.c:  984: Closing channel 0
5:2009/02/07 00-58-45:driver(4804):d_stopreader.c:   79: Reader down
5:2009/02/07 00-58-51:driver(4804):d_handle.c:   26: Incoming request "Driver_StartReader"
5:2009/02/07 00-58-51:driver(4804):d_startreader.c:   36: Command: Start reader
3:2009/02/07 00-58-51:driver(4804):d_startreader.c:  156: No DriversReaderId
5:2009/02/07 00-58-51:driver(4804):d_startreader.c:  204: Reader "auto1-ccid_scm_335" logs to "/var/log/chipcard/drivers/ccid_ifd/auto1-ccid_scm_335.log"
5:2009/02/07 00-58-51:driver(4804):driverifd.c:  917: Creating channel 0/usb:04e6/5115:libusb:006:004
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ccid_usb.c:489:WriteUSB() usb_bulk_write(006/004): Datei oder Verzeichnis nicht gefunden
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ccid_usb.c:489:WriteUSB() usb_bulk_write(006/004): Datei oder Verzeichnis nicht gefunden
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ccid_usb.c:489:WriteUSB() usb_bulk_write(006/004): Datei oder Verzeichnis nicht gefunden
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ifdhandler.c:119:IFDHCreateChannelByName() failed
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ccid_usb.c:225:OpenUSBByName() USB driver with index 0 already in use
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ifdhandler.c:194:IFDHCreateChannel() failed
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ccid_usb.c:225:OpenUSBByName() USB driver with index 0 already in use
3:2009/02/07 00-58-51:driver(4804):driverifd.c: 1025: PCSC: ifdhandler.c:194:IFDHCreateChannel() failed
3:2009/02/07 00-58-52:driver(4804):driverifd.c: 1025: PCSC: ccid_usb.c:225:OpenUSBByName() USB driver with index 0 already in use
3:2009/02/07 00-58-52:driver(4804):driverifd.c: 1025: PCSC: ifdhandler.c:194:IFDHCreateChannel() failed
5:2009/02/07 00-59-23:driver(4804):d_handle.c:   26: Incoming request "Driver_StopDriver"
3:2009/02/07 00-59-23:driver(4804):driverifd.c: 1025: PCSC: utils.c:76:LunToReaderIndex() Lun: 0 not found
5:2009/02/07 00-59-23:driver(4804):driverifd.c:  984: Closing channel 0
3:2009/02/07 00-59-23:driver(4804):driverifd.c: 1025: PCSC: utils.c:76:LunToReaderIndex() Lun: 0 not found
5:2009/02/07 00-59-23:driver(4804):d_stopdriver.c:   50: Driver down
5:2009/02/07 00-59-23:driver(4804):main.c:   52: Stopping driver "/usr/lib/chipcard/server/drivers/ifd"


auto1-ccid_scm335.log:
Code
5:2009/02/07 00-58-03:auto1-ccid_scm_335(4804):d_startreader.c:  223: Init reader auto1-ccid_scm_335
5:2009/02/07 00-58-03:auto1-ccid_scm_335(4804):d_startreader.c:  249: ReaderInfo: unit0="icc1"
5:2009/02/07 00-58-03:auto1-ccid_scm_335(4804):d_startreader.c:  256: Reader up and waiting
5:2009/02/07 00-58-03:auto1-ccid_scm_335(4804):d_startreader.c:  268: Reader start handled
5:2009/02/07 00-58-04:auto1-ccid_scm_335(4804):d_work.c:  128: Card inserted, trying to connect it
5:2009/02/07 00-58-04:auto1-ccid_scm_335(4804):d_work.c:  142: Status changed on slot 0 (00000000->00030000) (cardnum 0)
5:2009/02/07 00-58-45:auto1-ccid_scm_335(4804):d_stopreader.c:   47: Disconnecting reader
5:2009/02/07 00-58-45:auto1-ccid_scm_335(4804):d_stopreader.c:   60: Deinit succeeded
5:2009/02/07 00-58-51:auto1-ccid_scm_335(4804):d_startreader.c:  223: Init reader auto1-ccid_scm_335
3:2009/02/07 00-58-52:auto1-ccid_scm_335(4804):driverifd.c:  948: CCID error on createChannel 0/0: 612
3:2009/02/07 00-58-52:auto1-ccid_scm_335(4804):driverifd.c:  955: Could not connect any slot
3:2009/02/07 00-58-52:auto1-ccid_scm_335(4804):d_startreader.c:  230: Could not connect reader auto1-ccid_scm_335 (11: Unknow error code)
5:2009/02/07 00-58-52:auto1-ccid_scm_335(4804):d_startreader.c:  268: Reader start handled
5:2009/02/07 00-59-23:auto1-ccid_scm_335(4804):driverifd.c:  680: CCID: Soft error 612
3:2009/02/07 00-59-23:auto1-ccid_scm_335(4804):driverifd.c:  989: Error closing channel 0 (612)
aquamaniac
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Hamburg
Homepage: aqbanking.de/
Beiträge: 642
Dabei seit: 03 / 2005
Betreff:

Re: Libchipcard und SCM SCR 335

 · 
Gepostet: 07.02.2009 - 09:33 Uhr  ·  #5
Zitat geschrieben von vali

Zwischendurch habe ich mal die libchipcard version 4.2.3 eingespielt, die erkennt leider nichtmal mehr den Leser. ('chipcard-tool list' gibt nichts aus)


Das war ein bekannter Bug, Du solltest Version 4.2.4 verwenden.

Der Rest der Logs sieht so aus, als ob der Leser sich resetted, zumindest scheint der Treiber den Leser nicht wiederfinden zu wollen :-/

Dazu kann ich leider auch nicht viel mehr sagen... Man kann vielleicht irgendwie den Loglevel des IFD-Treibers erhoehen. Du solltest auch mal folgendes tun:

- Leser anschliessen
- lsusb (ist der Leser da?)
- Zugriff mit libchipcard, bis es zu dem beschriebenen Problem kommt
- lsusb (hat der Leser eine neue Busposition?)


Gruss
Martin
vali
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 4
Dabei seit: 02 / 2009
Betreff:

Re: Libchipcard und SCM SCR 335

 · 
Gepostet: 07.02.2009 - 13:17 Uhr  ·  #6
Am Bus ändert sich nichts. Ich kann wohl erstmal damit leben.

Die Version 4.2.4 ist leider noch nicht als debian package Verfügbar und im Moment habe ich weder die Lust noch die Zeit die Abhängigkeiten per Hand aufzulösen.

Trotzdem danke erstmal!
Gewählte Zitate für Mehrfachzitierung:   0