[[Vorlage(archiviert)]] 

{{{#!vorlage Wissen
[:Pakete installieren: Installation von Programmen]
[:Paketquellen freischalten: Bearbeiten von Paketquellen]
[:Packprogramme: Archive entpacken] 
[:Editor: Ein Editor öffnen] 
[:Programme_kompilieren: Pakete aus dem Quellcode erstellen] 
[:Terminal: Ein Terminalfenster öffnen]
}}}

[[Inhaltsverzeichnis]]
Dieser Artikel beschreibt die Installation des [http://www.scmmicro.com/security/view_product_de.php?PID=9 SCM SCR 243 PCMCIA SmartCard-Readers] unter [:Ubuntu:] zur Verwendung als [:HBCI_Kartenleser:] in der [:Finanzverwaltung:]. Da der Hersteller nur einen PCSC-Treiber für ältere Kernel anbietet, muß der Sourcecode geringfügig angepasst werden. Weiterhin muß ein [http://sourceforge.net/projects/pcsc-ctapi/ PCSC-CTAPI-Wrapper] installiert werden zur Verwendung mit Anwendungen, die die CTAPI benötigen z.B. [http://matrica.de/produkte/produktmpx.html Moneyplex] {de}.

= Getestete Kartenleser =
 * SCM SCR 243 PCMCIA SmartCard-Reader

= Installation benötigter Pakete =
Folgende Pakete werden benötigt [1]

 * '''build-essential'''
 * '''autoconf'''
 * '''libusb-0.1-4 '''
 * '''libpcsclite1 '''
 * '''libpcsclite-dev'''
 * '''pcscd''' (''universe'', [2])
 * '''pcsc-tools ''' (''universe'')
 * '''libccid''' (''universe'')
 
[[Vorlage(Pakete, libusb-0.1-4, libpcsclite1, libpcsclite-dev, pcscd, pcsc-tools, build-essential, autoconf, libccid)]]

= Installation des PCSC-Treibers =
Jetzt kann man den Treiber von [http://www.scmmicro.com/support/pcs_downloads.php?lang=en dieser Seite] {en} herunterladen, wobei man darauf achten muss, die Datei für den richtigen Kernel (also 2.6.x) auszuwählen. Das heruntergeladen Archiv wird entpackt [3], wobei einige Unterverzeichnisse entstehen. Hier wechselt man innerhalb der entstandenen Struktur ins Unterverzeichnis '''/src''', öffnet dort die Datei '''includes.h''' mit einen Editor mit Root-Rechten [4] und nimmt folgende Änderungen vor:

{{{
....
#include <linux/semaphore.h> // <-- dies ist die 1.Änderung ( vorher: #include <asm/semaphore.h> )
#include <asm/io.h>
#include <asm/segment.h>
#include <asm/system.h>
#include <asm/unistd.h>
#include <asm/uaccess.h> // copy_to_user et al
#include <asm/delay.h>

//#include <pcmcia/version.h>

#include <pcmcia/cs_types.h>
#include <pcmcia/cs.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/ciscode.h>
#include <pcmcia/ds.h>
#include <pcmcia/cisreg.h>
#include <pcmcia/ss.h>
//#include <pcmcia/bulkmem.h> // <-- dies ist die 2. Änderung ( vorher: #include <pcmcia/bulkmem.h> )
....

}}}

Jetzt kann das '''src'''-Verzeichnis verlassen werden. Im Verzeichnis darüber sollte sich die Datei '''install''' befinden, die man nun mit Root-Rechten ausführt, z.B. im Terminal mittels [6]

{{{#!vorlage Befehl
sudo ./install
}}}

Der Treiber legt kein Device-File an, deshalb muss die von Hand erledigt werden [6]:

{{{#!vorlage Befehl
cd /dev
sudo mknod SCR24x0 c 251 0
cd /lib/udev/devices
sudo mknod SCR24x0 c 251 0
}}}

Jetzt kann man die PCMCIA-Karte einstecken (incl. HBCI-Karte ) und startet PCSC-Daemon neu:

{{{#!vorlage Befehl
sudo /etc/init.d/pcscd restart
}}}

Testen, ob alles richtig läuft, kann man im Terminal mit den folgenden Befehlen:

{{{#!vorlage Befehl
lspcmcia -v
}}}

sollte folgende Ausgabe ergeben:

{{{
Socket 0 Bridge: [yenta_cardbus] (bus ID: 0000:06:09.0)
Configuration: state: on ready: unknown
Voltage: 5.0V Vcc: 5.0V Vpp: 0.0V
Socket 0 Device 0: [scr24x_cs] (bus ID: 0.0)
Configuration: state: on
Product Name: SCR243 PCMCIA Smart Card Reader
Identification: manf_id: 0xffff card_id: 0x0001
prod_id(1): "SCR243 PCMCIA" (0x2054e8de)
prod_id(2): "Smart Card Reader" (0xf5a90d5d)
prod_id(3): --- (---)
prod_id(4): --- (---)
}}}

Der Aufruf von

{{{#!vorlage Befehl
pcsc_scan
}}}

sollte folgende Ausgabe ergeben:

{{{
PC/SC device scanner
V 1.4.14 (c) 2001-2008, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.4.99
Scanning present readers
0: SCR24x Smart Card Reader 00 00

Tue Dec 30 16:09:42 2008
 Reader 0: SCR24x Smart Card Reader 00 00
  Card state: Card inserted, 
  ATR: 3B FF 18 00 FF 81 31 FE 45 65 63 11 06 40 02 50 00 10 54 30 03 09 05 00 6B

ATR: 3B FF 18 00 FF 81 31 FE 45 65 63 11 06 40 02 50 00 10 54 30 03 09 05 00 6B
+ TS = 3B --> Direct Convention
+ T0 = FF, Y(1): 1111, K: 15 (historical bytes)
  TA(1) = 18 --> Fi=372, Di=12, 31 cycles/ETU (115200 bits/s at 3.57 MHz)
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = FF --> Extra guard time: 255 (special value)
  TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
+ Historical bytes: 65 63 11 06 40 02 50 00 10 54 30 03 09 05 00
  Category indicator byte: 65 (proprietary format)
+ TCK = 6B (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B FF 18 00 FF 81 31 FE 45 65 63 11 06 40 02 50 00 10 54 30 03 09 05 00 6B
3B FF 18 00 FF 81 31 .. 45 65 63 .. .. .. .. .. .. .. .. .. .. .. .. .. ..
	Geldkarte (generic ATR)
}}}
\\

= Installation des PCSC-CTAPI-Wrappers =

Der Download des Wrappers erfolgt auf der Sourceforge [http://sourceforge.net/projects/pcsc-ctapi Projektseite] {en}. Nun entpackt man das Archiv [3], wechselt in das entstandene Verzeichnis ('''pcsc-ctapi-wrapper-0.3''', ggf. Versionsnummer anpassen) und kompiliert dort das Programm wie gewohnt [5] mittels ``make`` und ``make install``, auf den ``configure``-Schritt kann man verzichten.


Der [:HBCI_Kartenleser:] kann nun über die CTAPI '''/usr/local/lib/libpcsc-ctapi-wrapper.so''' angesprochen werden.

= Links =

 * dieser Artikel basiert auf: http://ubuntuforums.org/showthread.php?p=6335064 {en}

#tag: System, Hardware, Onlinebanking, Chipkarte