Problem mit CardMan 4000 und LibChipcard3

Micha Lenk <[email protected]>
Newsgroups gmane.comp.lib.libchipcard.devel
Message-ID <[email protected]>
Hallo Martin,

ich habe gerade einen neuen Kartenleser, und zwar den Omnikey Cardman
4000 und versuche den mit LibChipcard3 zum Laufen zu kriegen.

Das Kernelmodul für diesen Treiber wurde beim Booten automatisch geladen
und der Kartenleser scheint vom PCMCIA-System erkannt zu werden:

# pccardctl info
PRODID_1="CardMan"
PRODID_2="4000"
PRODID_3=""
PRODID_4=""
MANFID=0223,0002
FUNCID=255

Der Daemon, gestartet als User chipcard, hat Zugriff auf das nötige
Device:

$ ls -l /dev/cmm0
crw-rw---- 1 root chipcard 253, 0 2007-03-27 00:31 /dev/cmm0

Installiert sind folgende Versionen:
- libchipcard 3.0.2
- Gwenhywfar 2.5.4

Ein 'chipcard3-tool check' liefert zwar eine Ausgabe, die ok aussieht:

# chipcard3-tool check
  Readers:
  - auto1-omnikey_cm4000 (omnikey_cm4000, port 0): up

Ein "chipcard3-tool atr" mit eingelegter KV-Karte (Ausgestellt 12/99) führt
jedendoch zu keinem Ergebnis (Befehl beendet nicht). In der Datei
/var/log/chipcard3/drivers/cm_4000_ifd/driver.log finde ich folgende Zeilen
dazu:

  Buffer:
  Pos            : 85 (0055)
  Buffer Size    : 1537
  Hard limit     : 8388608
  Bytes Used     : 85
  Bytes Reserved : 0
  Flags          : 00000001 ( OWNED )
  Mode           : 00000003 ( DYNAMIC ABORT_ON_MEMFULL )
  Bookmarks      : 0 0 0 0
  Data:
   String size is 85:
   0000: 69 70 63 20 7b 0a 63 68 61 72 20 69 64 3d 22 37 ipc {.char id="7
   0010: 22 0a 63 68 61 72 20 63 6d 64 3d 22 44 72 69 76 ".char cmd="Driv
   0020: 65 72 25 35 46 53 74 6f 70 44 72 69 76 65 72 22 er%5FStopDriver"
   0030: 0a 7d 0a 64 61 74 61 20 7b 0a 63 68 61 72 20 64 .}.data {.char d
   0040: 72 69 76 65 72 49 64 3d 22 34 36 30 38 36 30 37 riverId="4608607
   0050: 32 22 0a 7d 0a                                  2".}.
5:2007/03/27 02-32-30:driver(10811):d_handle.c:   26: Incoming request "Driver_StopDriver"
5:2007/03/27 02-32-30:driver(10811):d_stopdriver.c:   50: Driver down
5:2007/03/27 02-32-30:driver(10811):main.c:   52: Stopping driver "/usr/lib/chipcard3/server/drivers/ifd"
  Buffer:
  Pos            : 122 (007a)
  Buffer Size    : 1537
  Hard limit     : 8388608
  Bytes Used     : 122
  Bytes Reserved : 0
  Flags          : 00000001 ( OWNED )
  Mode           : 00000003 ( DYNAMIC ABORT_ON_MEMFULL )
  Bookmarks      : 0 0 0 0
  Data:
   String size is 122:
   0000: 69 70 63 20 7b 0a 63 68 61 72 20 69 64 3d 22 31 ipc {.char id="1
   0010: 22 0a 63 68 61 72 20 72 65 66 69 64 3d 22 31 22 ".char refid="1"
   0020: 0a 63 68 61 72 20 63 6d 64 3d 22 44 72 69 76 65 .char cmd="Drive
   0030: 72 25 35 46 52 65 61 64 79 52 65 73 70 6f 6e 73 r%5FReadyRespons
   0040: 65 22 0a 7d 0a 64 61 74 61 20 7b 0a 69 6e 74 20 e".}.data {.int
   0050: 20 63 6f 64 65 3d 22 30 22 0a 63 68 61 72 20 74  code="0".char t
   0060: 65 78 74 3d 22 44 72 69 76 65 72 20 72 65 67 69 ext="Driver regi
   0070: 73 74 65 72 65 64 22 0a 7d 0a                   stered".}.
5:2007/03/27 02-32-32:driver(10823):driver.c:  348: Starting driver "/usr/lib/chipcard3/server/drivers/ifd" with lowlevel "/usr/lib/libcm4000.so"
6:2007/03/27 02-32-32:driver(10823):driver.c:  428: IPC stuff initialized
5:2007/03/27 02-32-32:driver(10823):driverifd.c:  218: Detected IFD version 2
6:2007/03/27 02-32-32:driver(10823):d_ipc.c:  193: Sending Ready Report
7:2007/03/27 02-32-32:driver(10823):d_work.c:   37: Driver: Working
7:2007/03/27 02-32-32:driver(10823):d_work.c:   37: Driver: Working
7:2007/03/27 02-32-32:driver(10823):d_work.c:   37: Driver: Working
7:2007/03/27 02-32-32:driver(10823):d_work.c:   37: Driver: Working
7:2007/03/27 02-32-32:driver(10823):d_work.c:   37: Driver: Working
7:2007/03/27 02-32-32:driver(10823):d_work.c:   37: Driver: Working
7:2007/03/27 02-32-32:driver(10823):d_ipc.c:  198: Command answered
7:2007/03/27 02-32-32:driver(10823):d_ipc.c:  215: Answer received
5:2007/03/27 02-32-32:driver(10823):d_ipc.c:  223: Connected to server
6:2007/03/27 02-32-32:driver(10823):driverifd.c:  256: Connected.
  Buffer:
  Pos            : 218 (00da)
  Buffer Size    : 1537
  Hard limit     : 8388608
  Bytes Used     : 218
  Bytes Reserved : 0
  Flags          : 00000001 ( OWNED )
  Mode           : 00000003 ( DYNAMIC ABORT_ON_MEMFULL )
  Bookmarks      : 0 0 0 0
  Data:
   String size is 218:
   0000: 69 70 63 20 7b 0a 63 68 61 72 20 69 64 3d 22 32 ipc {.char id="2
   0010: 22 0a 63 68 61 72 20 63 6d 64 3d 22 44 72 69 76 ".char cmd="Driv
   0020: 65 72 25 35 46 53 74 61 72 74 52 65 61 64 65 72 er%5FStartReader
   0030: 22 0a 7d 0a 64 61 74 61 20 7b 0a 63 68 61 72 20 ".}.data {.char
   0040: 72 65 61 64 65 72 49 64 3d 22 34 36 30 38 36 30 readerId="460860
   0050: 37 32 22 0a 63 68 61 72 20 64 72 69 76 65 72 73 72".char drivers
   0060: 52 65 61 64 65 72 49 64 3d 22 30 30 30 30 30 30 ReaderId="000000
   0070: 30 30 22 0a 63 68 61 72 20 6e 61 6d 65 3d 22 61 00".char name="a
   0080: 75 74 6f 31 25 32 44 6f 6d 6e 69 6b 65 79 25 35 uto1%2Domnikey%5
   0090: 46 63 6d 34 30 30 30 22 0a 69 6e 74 20 20 73 6c Fcm4000".int  sl
   00a0: 6f 74 73 3d 22 31 22 0a 69 6e 74 20 20 66 6c 61 ots="1".int  fla
   00b0: 67 73 3d 22 31 30 34 38 35 37 36 22 0a 69 6e 74 gs="1048576".int
   00c0: 20 20 63 74 6e 3d 22 31 22 0a 69 6e 74 20 20 70   ctn="1".int  p
   00d0: 6f 72 74 3d 22 30 22 0a 7d 0a                   ort="0".}.
5:2007/03/27 02-32-34:driver(10823):d_handle.c:   26: Incoming request "Driver_StartReader"
5:2007/03/27 02-32-34:driver(10823):d_startreader.c:   36: Command: Start reader
3:2007/03/27 02-32-34:driver(10823):d_startreader.c:  154: No DriversReaderId
5:2007/03/27 02-32-34:driver(10823):d_startreader.c:  201: Reader "auto1-omnikey_cm4000" logs to "/var/log/chipcard3/drivers/cm_4000_ifd/auto1-omnikey_cm4000.log"
5:2007/03/27 02-32-34:driver(10823):driverifd.c:  830: Creating channel 0/0

... danach tut sich nix mehr.

In der Datei /var/log/chipcard3/drivers/cm_4000_ifd/auto1-omnikey_cm4000.log
finden sich folgende Zeilen:

  Buffer:
  Pos            : 218 (00da)
  Buffer Size    : 1537
  Hard limit     : 8388608
  Bytes Used     : 218
  Bytes Reserved : 0
  Flags          : 00000001 ( OWNED )
  Mode           : 00000003 ( DYNAMIC ABORT_ON_MEMFULL )
  Bookmarks      : 0 0 0 0
  Data:
   String size is 218:
   0000: 69 70 63 20 7b 0a 63 68 61 72 20 69 64 3d 22 34 ipc {.char id="4
   0010: 22 0a 63 68 61 72 20 63 6d 64 3d 22 44 72 69 76 ".char cmd="Driv
   0020: 65 72 25 35 46 53 74 61 72 74 52 65 61 64 65 72 er%5FStartReader
   0030: 22 0a 7d 0a 64 61 74 61 20 7b 0a 63 68 61 72 20 ".}.data {.char
   0040: 72 65 61 64 65 72 49 64 3d 22 34 36 30 38 36 30 readerId="460860
   0050: 37 32 22 0a 63 68 61 72 20 64 72 69 76 65 72 73 72".char drivers
   0060: 52 65 61 64 65 72 49 64 3d 22 30 30 30 30 30 30 ReaderId="000000
   0070: 30 30 22 0a 63 68 61 72 20 6e 61 6d 65 3d 22 61 00".char name="a
   0080: 75 74 6f 31 25 32 44 6f 6d 6e 69 6b 65 79 25 35 uto1%2Domnikey%5
   0090: 46 63 6d 34 30 30 30 22 0a 69 6e 74 20 20 73 6c Fcm4000".int  sl
   00a0: 6f 74 73 3d 22 31 22 0a 69 6e 74 20 20 66 6c 61 ots="1".int  fla
   00b0: 67 73 3d 22 31 30 34 38 35 37 36 22 0a 69 6e 74 gs="1048576".int
   00c0: 20 20 63 74 6e 3d 22 31 22 0a 69 6e 74 20 20 70   ctn="1".int  p
   00d0: 6f 72 74 3d 22 30 22 0a 7d 0a                   ort="0".}.
7:2007/03/27 02-40-58:auto1-omnikey_cm4000(10888):started
5:2007/03/27 02-40-58:auto1-omnikey_cm4000(10888):d_startreader.c:  220: Init reader auto1-omnikey_cm4000
5:2007/03/27 02-40-58:auto1-omnikey_cm4000(10888):d_startreader.c:  246: ReaderInfo:
5:2007/03/27 02-40-58:auto1-omnikey_cm4000(10888):d_startreader.c:  253: Reader up and waiting
5:2007/03/27 02-40-58:auto1-omnikey_cm4000(10888):d_startreader.c:  265: Reader start handled
7:2007/03/27 02-40-59:auto1-omnikey_cm4000(10888):driverifd.c:  652: Checking reader status for reader "46086072"
7:2007/03/27 02-40-59:auto1-omnikey_cm4000(10888):d_work.c:  134: Status on slot 0 unchanged
[... letzte 2 Zeilen einige Male wiederholt ...]

Wenn ich eine KV-Karte oder eine (uralte) Speicherkarte einlege ändert sich das
ein wenig:

7:2007/03/27 02-41-07:auto1-omnikey_cm4000(10888):driverifd.c:  652: Checking reader status for reader "46086072"
6:2007/03/27 02-41-07:auto1-omnikey_cm4000(10888):driverifd.c:  479: Connecting slot 0
5:2007/03/27 02-41-19:auto1-omnikey_cm4000(10888):driverifd.c:  545: CCID: Soft error 612
7:2007/03/27 02-41-19:auto1-omnikey_cm4000(10888):d_work.c:  134: Status on slot 0 unchanged
7:2007/03/27 02-41-19:auto1-omnikey_cm4000(10888):driverifd.c:  652: Checking reader status for reader "46086072"
6:2007/03/27 02-41-19:auto1-omnikey_cm4000(10888):driverifd.c:  479: Connecting slot 0
5:2007/03/27 02-41-19:auto1-omnikey_cm4000(10888):driverifd.c:  545: CCID: Soft error 612
7:2007/03/27 02-41-19:auto1-omnikey_cm4000(10888):d_work.c:  134: Status on slot 0 unchanged
7:2007/03/27 02-41-20:auto1-omnikey_cm4000(10888):driverifd.c:  652: Checking reader status for reader "46086072"
7:2007/03/27 02-41-20:auto1-omnikey_cm4000(10888):d_work.c:  134: Status on slot 0 unchanged
[... letzte 2 Zeilen einige Male wiederholt ...]

Erst wenn ich eine Prozessorkarte einlege (z.B. meine FinTS-Karte) ändert sich
das grundlegend:

  Buffer:
  Pos            : 122 (007a)
  Buffer Size    : 1537
  Hard limit     : 8388608
  Bytes Used     : 122
  Bytes Reserved : 0
  Flags          : 00000001 ( OWNED )
  Mode           : 00000003 ( DYNAMIC ABORT_ON_MEMFULL )
  Bookmarks      : 0 0 0 0
  Data:
   String size is 122:
   0000: 69 70 63 20 7b 0a 63 68 61 72 20 69 64 3d 22 31 ipc {.char id="1
   0010: 22 0a 63 68 61 72 20 72 65 66 69 64 3d 22 31 22 ".char refid="1"
   0020: 0a 63 68 61 72 20 63 6d 64 3d 22 44 72 69 76 65 .char cmd="Drive
   0030: 72 25 35 46 52 65 61 64 79 52 65 73 70 6f 6e 73 r%5FReadyRespons
   0040: 65 22 0a 7d 0a 64 61 74 61 20 7b 0a 69 6e 74 20 e".}.data {.int
   0050: 20 63 6f 64 65 3d 22 30 22 0a 63 68 61 72 20 74  code="0".char t
   0060: 65 78 74 3d 22 44 72 69 76 65 72 20 72 65 67 69 ext="Driver regi
   0070: 73 74 65 72 65 64 22 0a 7d 0a                   stered".}.
  Buffer:
  Pos            : 218 (00da)
  Buffer Size    : 1537
  Hard limit     : 8388608
  Bytes Used     : 218
  Bytes Reserved : 0
  Flags          : 00000001 ( OWNED )
  Mode           : 00000003 ( DYNAMIC ABORT_ON_MEMFULL )
  Bookmarks      : 0 0 0 0
  Data:
   String size is 218:
   0000: 69 70 63 20 7b 0a 63 68 61 72 20 69 64 3d 22 32 ipc {.char id="2
   0010: 22 0a 63 68 61 72 20 63 6d 64 3d 22 44 72 69 76 ".char cmd="Driv
   0020: 65 72 25 35 46 53 74 61 72 74 52 65 61 64 65 72 er%5FStartReader
   0030: 22 0a 7d 0a 64 61 74 61 20 7b 0a 63 68 61 72 20 ".}.data {.char
   0040: 72 65 61 64 65 72 49 64 3d 22 34 36 30 38 36 30 readerId="460860
   0050: 37 32 22 0a 63 68 61 72 20 64 72 69 76 65 72 73 72".char drivers
   0060: 52 65 61 64 65 72 49 64 3d 22 30 30 30 30 30 30 ReaderId="000000
   0070: 30 30 22 0a 63 68 61 72 20 6e 61 6d 65 3d 22 61 00".char name="a
   0080: 75 74 6f 31 25 32 44 6f 6d 6e 69 6b 65 79 25 35 uto1%2Domnikey%5
   0090: 46 63 6d 34 30 30 30 22 0a 69 6e 74 20 20 73 6c Fcm4000".int  sl
   00a0: 6f 74 73 3d 22 31 22 0a 69 6e 74 20 20 66 6c 61 ots="1".int  fla
   00b0: 67 73 3d 22 31 30 34 38 35 37 36 22 0a 69 6e 74 gs="1048576".int
   00c0: 20 20 63 74 6e 3d 22 31 22 0a 69 6e 74 20 20 70   ctn="1".int  p
   00d0: 6f 72 74 3d 22 30 22 0a 7d 0a                   ort="0".}.
5:2007/03/27 02-47-20:auto1-omnikey_cm4000(10900):d_startreader.c:  220: Init reader auto1-omnikey_cm4000
5:2007/03/27 02-47-20:auto1-omnikey_cm4000(10900):d_startreader.c:  246: ReaderInfo:
5:2007/03/27 02-47-20:auto1-omnikey_cm4000(10900):d_startreader.c:  253: Reader up and waiting
5:2007/03/27 02-47-20:auto1-omnikey_cm4000(10900):d_startreader.c:  265: Reader start handled
7:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):driverifd.c:  652: Checking reader status for reader "46086072"
6:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):driverifd.c:  479: Connecting slot 0
  Buffer:
  Pos            : 150 (0096)
  Buffer Size    : 1537
  Hard limit     : 8388608
  Bytes Used     : 150
  Bytes Reserved : 0
  Flags          : 00000001 ( OWNED )
  Mode           : 00000003 ( DYNAMIC ABORT_ON_MEMFULL )
  Bookmarks      : 0 0 0 0
  Data:
   String size is 150:
   0000: 69 70 63 20 7b 0a 63 68 61 72 20 69 64 3d 22 33 ipc {.char id="3
   0010: 22 0a 63 68 61 72 20 63 6d 64 3d 22 44 72 69 76 ".char cmd="Driv
   0020: 65 72 25 35 46 52 65 73 65 74 43 61 72 64 22 0a er%5FResetCard".
   0030: 7d 0a 64 61 74 61 20 7b 0a 63 68 61 72 20 72 65 }.data {.char re
   0040: 61 64 65 72 49 64 3d 22 34 36 30 38 36 30 37 32 aderId="46086072
   0050: 22 0a 63 68 61 72 20 64 72 69 76 65 72 73 52 65 ".char driversRe
   0060: 61 64 65 72 49 64 3d 22 30 30 30 30 30 30 30 30 aderId="00000000
   0070: 22 0a 69 6e 74 20 20 73 6c 6f 74 6e 75 6d 3d 22 ".int  slotnum="
   0080: 30 22 0a 69 6e 74 20 20 63 61 72 64 6e 75 6d 3d 0".int  cardnum=
   0090: 22 31 22 0a 7d 0a                               "1".}.
6:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):driverifd.c:  521: Card present.
5:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):d_work.c:   96: Card inserted, trying to connect it
6:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):driverifd.c:  479: Connecting slot 0
6:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):driverifd.c:  521: Card present.
5:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):d_work.c:  110: Status changed on slot 0 (00000000->00030000) (cardnum 0)
6:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):d_work.c:  112: Card is now connected
6:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):d_work.c:  121: Card number is 1
5:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):d_resetcard.c:   81: Resetting card
6:2007/03/27 02-47-21:auto1-omnikey_cm4000(10900):driverifd.c:  608: Resetting slot 0
6:2007/03/27 02-47-23:auto1-omnikey_cm4000(10900):d_resetcard.c:   97: Reset succeeded
7:2007/03/27 02-47-23:auto1-omnikey_cm4000(10900):driverifd.c:  652: Checking reader status for reader "46086072"
7:2007/03/27 02-47-23:auto1-omnikey_cm4000(10900):d_work.c:  134: Status on slot 0 unchanged
[...]


Kann es sein, dass der Omnikey CardMan 4000 nur Prozessorkarten unterstützt?
Eigentlich meine ich, dass ich unter Windows damit auch schon KV-Karten
ausgelesen habe.

Martin, weißt Du was dazu?

Schöne Grüße
  Micha


P.S.: Die Ausgabe von 'chipcard3-tool atr' bei meiner neuen FinTS-Karte
(SECCOS-Chip?) ist übrigens folgende:

INFO: We got this card:
  Card
  ===========================================================================
  Card id       : 00000008
  Card type     : PROCESSOR
  Driver type   : cm_4000_ifd
  Reader type   : omnikey_cm4000
  Card types    : geldkarte ProcessorCard
  Reader flags  : auto
  ATR
  ---------------------------------------------------------------------------
    String size is 25:
    0000: 3b ff 18 00 ff 81 31 fe 45 65 63 11 06 62 02 80 ;.....1.Eec..b..
    0010: 00 11 44 90 02 21 06 13 11                      ..D..!...
  ===========================================================================

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.