• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]rfid reader wird nicht erkannt

Conax

Hacker
Ich habe mir den openpcd 2 rfid reader zugelegt und auch die Software wie in besagtem tutorial instaliert (http://www.openpcd.org/OpenPCD_2_RFID_Reader_for_13.56MHz).

Zudem habe ich noch pcsc-ccid und pcsc-lite instaliert. Wenn ich jetzt pcscd in der Konsole starte passiert aber leider überhaupt nichts - sprich das Gerät am usb port wird nicht erkannt.

Wie kann ich das Problem lösen?

Danke
 

spoensche

Moderator
Teammitglied
Wenn du den Reader eingestöpselt hast, dann poste mal bitte die Ausgaben von
Code:
dmesg | tail -40
und
Code:
lsusb
 
OP
C

Conax

Hacker
Code:
stefan@linux-0crc:~> dmesg | tail -40



[34941.182108] usb 6-3: new full speed USB device using ohci_hcd and address 5
[34941.341206] usb 6-3: New USB device found, idVendor=2366, idProduct=0009
[34941.341209] usb 6-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[34941.341212] usb 6-3: Product: OpenBeacon CDCACM
[34941.341214] usb 6-3: Manufacturer: Bitmanufaktur
[34941.341215] usb 6-3: SerialNumber: 000000000000
[34941.762986] cdc_acm 6-3:1.0: This device cannot do calls on its own. It is not a modem.
[34941.763036] cdc_acm 6-3:1.0: ttyACM0: USB ACM device
[34941.765705] usbcore: registered new interface driver cdc_acm
[34941.765708] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters


stefan@linux-0crc:~> lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 06f8:a300 Guillemot Corp. Dual Analog Leader GamePad
Bus 003 Device 003: ID 046d:c049 Logitech, Inc. G5 Laser Mouse
Bus 002 Device 002: ID 05e3:0716 Genesys Logic, Inc. USB 2.0 Multislot Card Reader/Writer
Bus 004 Device 002: ID 046a:0106 Cherry GmbH 
Bus 006 Device 005: ID 2366:0009  
stefan@linux-0crc:~>
 

spoensche

Moderator
Teammitglied
Die Ausgabe von lsusb sagt eindeutig, dass der Card Reader erkannt wird. Die Ausgabe von dmesg sagt dir welche Schnittstelle verwendet wird, nämlich /dev/ttyACM0.
 
OP
C

Conax

Hacker
ok dann verstehe ich aber nicht so ganz warum pcscd nichts ausgibt.

Code:
linux-0crc:/home/stefan # pcscd
linux-0crc:/home/stefan # 

linux-0crc:/home/stefan # pcscd -help
Usage: pcscd options
Options:
  -a, --apdu            log APDU commands and results
  -c, --config          path to reader.conf
  -f, --foreground      run in foreground (no daemon),
                        send logs to stderr instead of syslog
  -h, --help            display usage information
  -H, --hotplug         ask the daemon to rescan the available readers
  -v, --version         display the program version number
  -d, --debug           display lower level debug messages
      --info            display info level debug messages (default level)
  -e  --error           display error level debug messages
  -C  --critical        display critical only level debug messages
  --force-reader-polling ignore the IFD_GENERATE_HOTPLUG reader capability
  -t, --max-thread      maximum number of threads (default 200)
  -s, --max-card-handle-per-thread      maximum number of card handle per thread (default: 200)
  -r, --max-card-handle-per-reader      maximum number of card handle per reader (default: 200)
linux-0crc:/home/stefan # pcscd -H
linux-0crc:/home/stefan #
 

RME

Advanced Hacker
Hallo,

man page schrieb:
-H, --hotplug
Ask pcscd to rescan the USB buses for added or removed readers and re-read the /etc/reader.conf file to detect added or removed non-USB readers (serial or PCMCIA).
Was steht in der Datei "/etc/reader.conf"? (evtl. "pcscd -c"?)

Gruss,
Roland
 
OP
C

Conax

Hacker
Unter etc/reader.conf.d sind zwei files einmal libccidtwin und reader.conf

hier mal der inhalt von reader.conf
Code:
# Configuration file for pcsc-lite
#
# This file has to be configured for serial and PCMCIA readers only.
# normal USB readers shall _not_ be configured here!
#
# David Corcoran <corcoran@linuxnet.com>

#FRIENDLYNAME     "Generic Reader"
#DEVICENAME       /dev/ttySx_not_configured
#LIBPATH          /usr/lib64/readers/libgen_ifd.so
#CHANNELID        0x0103F8

# End of file

hier mal der inhalt von libccidtwin

Code:
# Gemalto reader with serial communication
#  - n is the serial port to use n in [0..3]
#  - reader is the reader name. It is needed for multi-slot readers.
#    Possible reader values are: GemPCPinPad, GemCorePOSPro, GemCoreSIMPro,
#    GemPCTwin (default value)
# example: /dev/ttyS0:GemPCPinPad
#FRIENDLYNAME      "GemPCTwin serial"
#DEVICENAME        /dev/ttySn[:reader]
#LIBPATH           /usr/lib64/readers/serial/libccidtwin.so
#CHANNELID         n
 

spoensche

Moderator
Teammitglied
Ohne Konfiguration ist es klar, dass von pcsc-lite kein Reader erkannt wird. Du musst in der reader.conf das Device eintragen, einen Namen vergeben und die Bibliothek eintragen. Der Devicename wäre bei dir also /dev/ttyACM0.
 
OP
C

Conax

Hacker
Also ich hab die config datei schon mal soweit angepasst:

Code:
# Configuration file for pcsc-lite
#
# This file has to be configured for serial and PCMCIA readers only.
# normal USB readers shall _not_ be configured here!
#
# David Corcoran <corcoran@linuxnet.com>

#FRIENDLYNAME     "OpenBeacon CDCACM"
#DEVICENAME       /dev/ttyACM0
#LIBPATH          /usr/lib64/readers/libgen_ifd.so
#CHANNELID        0x0103F8

# End of file

Jetzt habe ich mir mal die man page von reader.conf durchgelesen und dieser libpath ist offenbar das Verzeichnis zum Treiber der Hardware. Jetzt habe ich mal von openpcd mir das Verzeichnis angeschaut aber woher weiss ich jetzt welche die richtige Datei ist?

Code:
stefan@linux-0crc:/usr/local/openpcd/lib> ls
libfreefare.a   libfreefare.so.0      libnfc.la    libnfc.so.3.0.0
libfreefare.la  libfreefare.so.0.0.0  libnfc.so    pkgconfig
libfreefare.so  libnfc.a              libnfc.so.3
stefan@linux-0crc:/usr/local/openpcd/lib>
 
OP
C

Conax

Hacker
Danke für den Hinweis aber die Rauten hätte ich zum schluss schon rausgemacht wenn ich das mit dem libpath gelöst hätte. Weil so ganz werd ich da noch nicht schlau draus.

Code:
# Configuration file for pcsc-lite
#
# This file has to be configured for serial and PCMCIA readers only.
# normal USB readers shall _not_ be configured here!
#
# David Corcoran <corcoran@linuxnet.com>

FRIENDLYNAME     "OpenBeacon CDCACM"
DEVICENAME       /dev/ttyACM0
LIBPATH          /usr/lib64/readers/libgen_ifd.so
CHANNELID        0x0103F8

# End of file

aber gut dann mal ohne Rauten
 
OP
C

Conax

Hacker
Ach du scheixxe ich such die ganze Zeit nach nem Treiber für das openpcd Teil hab auch schon unter /usr/share/doc/packages/pcsc-lite/ die ganzen doc files rauf und runter gelesen und jetzt seh ich auf der openpcd Seite:

Hardware Design

PN532 based intelligent RFID frontend - allows card emulation, reading and writing RFID cards.
Stand-Alone-firmware support for ISO 14443A
Firmware support for libnfc
Hardware supports FeliCa and ISO 14443B with custom Firmware
PCB design Schematics and Layout
All major operating Systems supported:
Linux 2.4/2.6 Kernel (no driver needed, appears as /dev/ttyACMx serial port)

Das heist wenn ich das jetzt richtig gelesen habe brauch ich bei libpath im config file nix eintragen sprich einfach wieder Raute davor setzen und das müsste so laufen. Ich probiers gleich mal aus -> ok das klappte leider nicht!

Ok so einfach ist es auch nicht außerdem muss ich auch noch die channel id eintragen. lsusb gab ja folgendes aus wenn ich openpcd angeschlossen habe:
Bus 006 Device 003: ID 2366:0009

d.h. im file müsste das bei channelid aussehen:
CHANNELID 0x23660009

Bei dem durchlesen der doc files sind mir noch ein paar ungereimtheiten aufgefallen und zwar kann ich pcscd gar nicht als normaler user starten siehe hier:
Code:
stefan@linux-0crc:~> pcscd
Absolute path to 'pcscd' is '/usr/sbin/pcscd', so running it may require superuser privileges (eg. root).
Als root sollte man es aber besser nicht ausführen laut dem docfile.
Code:
Sometimes it is dangerous to run daemons under a root account.  If there is
a chance to exploit a buffer overflow you can protect sensitive information
by running it under a different account. It might be useful to create another
user with hardware priveledges and run pcscd as that user.  Be sure this user
can manipulate the server sockets.

Unter der Benutzerverwaltung habe ich aber keine gruppe pcscd gefunden wie bekomme ich das dann vom Rechtemanagement hin?

Was das mit dem Treiber angeht so steht da auch einiges interessantes:
Code:
To install USB drivers, download the driver from http://www.linuxnet.com/
and copy it to a temporary location.  After you have unarchived the files
copy the directory to /usr/local/pcsc/drivers/.  If the directory
/usr/local/pcsc/drivers/ does not exist create it before copying the driver
directory to it.

Also da das besagte Verzeichnis noch nicht existiert muss ich es wohl anlegen aber was ich mich immer noch frage wo ist jetzt der verdammte Treiber für openpcd. Laut der Hardwarebeschreibung ist der wohl im Kernel schon vorhanden "Linux 2.4/2.6 Kernel no driver needed" aber wie der Treiber genau heist steht ja leider nicht da.
 
OP
C

Conax

Hacker
@ spoensche

Ich habe doch pcscd-lite mittels yast instaliert. Deswegen dachte ich ja auch das alles läuft und da es ein usb gerät ist dachte ich auch das wird sofort erkannt und man muss nichts weiter tun - leider aber eben doch.

Oder welche konkreten Pakete meinst du?
 

spoensche

Moderator
Teammitglied
http://software.opensuse.org

Wenn ich mich nicht irre sollte die pcscd-lite Version eine aktuellere sein.
 
OP
C

Conax

Hacker
http://software.opensuse.org/package/pcsc-lite

Tja wenn ich die neuste Version nehme brauche ich aber auch eine neuere Version von glibc (was ich in den repos der 11.4er nicht gefunden habe).

siehe hier:
Code:
stefan@linux-0crc:~/Downloads> sudo zypper install pcsc-lite-1.8.5-1.3.x86_64.rpm 
Daten des Repositorys laden ...
Installierte Pakete lesen ...
Paketabhängigkeiten auflösen ...

Problem: libc.so.6(GLIBC_2.15)(64bit), benötigt von pcsc-lite-1.8.5-1.3.x86_64, wird von keinem Repository angeboten
Lösung 1: pcsc-lite-1.8.5-1.3.x86_64 nicht installieren
Lösung 2: pcsc-lite auflösen durch das Ignorieren einiger Abhängigkeiten

Wählen Sie aus den obigen Lösungen mittels Nummer oder brechen Sie a(b). [1/2/b] (b): 1
Abhängigkeiten auflösen ...
Paketabhängigkeiten auflösen ...

Keine auszuführenden Aktionen.
stefan@linux-0crc:~/Downloads>
 

tomm.fa

Administrator
Teammitglied
Hast du das RPM von Factory genommen? Deine Version stimmt nämlich nicht mit der für openSUSE 11.4 überein.

openSUSE Factory:
Code:
rpm -qRp http://download.opensuse.org/repositories/openSUSE:/Factory/snapshot/x86_64/pcsc-lite-1.8.5-1.3.x86_64.rpm | grep -i libc
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.14)(64bit)  
libc.so.6(GLIBC_2.15)(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libc.so.6(GLIBC_2.8)(64bit)  
libdl.so.2(GLIBC_2.2.5)(64bit)  
libpthread.so.0(GLIBC_2.2.5)(64bit)  
librt.so.1(GLIBC_2.3.4)(64bit)

openSUSE 11.4:
Code:
rpm -qRp http://download.opensuse.org/repositories/security:/chipcard/openSUSE_11.4/x86_64/pcsc-lite-1.8.5-77.1.x86_64.rpm | grep -i libc
warning: http://download.opensuse.org/repositories/security:/chipcard/openSUSE_11.4/x86_64/pcsc-lite-1.8.5-77.1.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 849bf240: NOKEY
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libc.so.6(GLIBC_2.8)(64bit)  
libdl.so.2(GLIBC_2.2.5)(64bit)  
libpthread.so.0(GLIBC_2.2.5)(64bit)  
librt.so.1(GLIBC_2.3.4)(64bit)
Versuche mal folgenden Befehl (als normaler Nutzer):
Code:
su -c "zypper -p http://download.opensuse.org/repositories/security:/chipcard/openSUSE_11.4/ in pcsc-lite"

Sollte schon eine ältere Version installiert sein, dann kannst du auch
Code:
su -c "zypper -p http://download.opensuse.org/repositories/security:/chipcard/openSUSE_11.4/ in pcsc-lite-1.8.5-77.1.x86_64"
ausführen, was dir Zypper aber dann auch vorschlagen würde.
Wenn die Befehle gleich über Root/su ausgeführt werden, dann können su -c und " natürlich wegbleiben.

Conax schrieb:
Bei dem durchlesen der doc files sind mir noch ein paar ungereimtheiten aufgefallen und zwar kann ich pcscd gar nicht als normaler user starten siehe hier:
Code:
stefan@linux-0crc:~> pcscd
Absolute path to 'pcscd' is '/usr/sbin/pcscd', so running it may require superuser privileges (eg. root).
Als root sollte man es aber besser nicht ausführen laut dem docfile.
Code:
Sometimes it is dangerous to run daemons under a root account.  If there is
a chance to exploit a buffer overflow you can protect sensitive information
by running it under a different account. It might be useful to create another
user with hardware priveledges and run pcscd as that user.  Be sure this user
can manipulate the server sockets.

Unter der Benutzerverwaltung habe ich aber keine gruppe pcscd gefunden wie bekomme ich das dann vom Rechtemanagement hin?
Versuche doch mal den absoluten Pfad:
Code:
/usr/sbin/pcscd
 
OP
C

Conax

Hacker
So erstmal Danke für eure Hilfe!
Ich hätte nicht gedacht dass das so ein Akt wird aber ich habe einfach eine Schwäche für funkende Hardware (habe mehrere wlan Sticks/Karten, bluetooth Sticks + Sniffer und jetzt eben diesen rfid reader/writer/emulator). Bei dem openpcd Teil dachte ich natürlich "klasse alles opensource dann wird die Einrichtung bestimmt ein Kinderspiel - aber die Käuferschicht scheinen da eher Experten zu sein die sich selbst helfen können".

Da ich die Tage etwas gestresst war hatte ich beschlossen heute erstmal eine lange Wanderung zu machen. Jetzt habe ich mich Abends nochmal hingesetzt und mir das in Ruhe angeschaut dabei sind mir mehrere Sachen aufgefallen.

@tomm.fa
Ja ich hatte die factory Version gemeint die sich bei mir nicht instalieren lies. Ich habe jetzt deinen Link genommen für die 11.4er damit hats geklappt sprich pcscd-lite 1.8.5 ist jetzt instaliert und über stefan@linux-0crc:/usr/sbin> ./pcscd (also direkt im Verzeichnis lässt es sich auch ohne root Rechte ausführen).

Zum anderen ist mir aber auch noch eine ganz andere Anleitung aufgefallen:
http://www.openpcd.org/Getting_started
(Warum das nicht bei der anderen Seite dabei ist wo der Link direkt zum reader ist ist mir ein Rätsel - ich finde jedenfalls die Seite nicht sehr übersichtlich).

Ich bin jetzt mal die Schritte in der Anleitung durchgegangen und jetzt ist mir auch klar warum das die ganze Zeit gar nicht laufen kann da in der anderen Anleitung nix davon steht das man da ne Firmware runterladen und instalieren muss (früher bei nem ralink wlan stick bekam ich den nämlich erst auch zum laufen als ich ein firmwarefile gezogen hatte und das irgendwo im System - ist schon etwas länger her plaziert hatte). Ein Schritt in der Anleitung verwirrt mich aber und zwar soll ich ja die CONFIG_USB_SERIAL_FTDI_SIO aktivieren. make menuconfig spuckt da aber nix gutes aus:

Code:
linux-0crc:/home/stefan # make menuconfig
make: *** Keine Regel, um »menuconfig« zu erstellen.  Schluss.

Kann man da im nachhinein überhaupt noch Änderungen im Kernel vornehmen?

Das würde auch erklären warum bisher immer nur die rote led leuchtet sollte das wohl so eingestellt sein müsste auch die grüne led leuchten (zumindest wenn ich das so dem Text entnehme).

Etwas anderes was mich noch verwirrt ist weiter unten mit dem host und der firmware:

Code:
Next, let's try the opcd_test program for some peeking and poking of the device.

To compile opcd_test, check out the host and the firmware modules from the OpenPCD svn repository.

svn co http://svn.openpcd.org/trunk/firmware/
svn co http://svn.openpcd.org/trunk/host/
cd host/zebvty
make
cd ..
make

Also ich habe mal so die Befehle ausgeführt habe dan extra in meinem Ordner "src" zwei unterordner mit firmware und host - hier mal ein Beispiel aus dem Ornder host:

Code:
stefan@linux-0crc:~/src/host> ls
ausb                    Makefile         opcd_sh.c    opcd_usb.c  zebvty
benchmark-20060824.txt  opcd_presence.c  opcd_test.c  opcd_usb.h
stefan@linux-0crc:~/src/host>

Hab dann auch im Unterordner zebvty(von host) make durchlaufen lassen aber was hat der Schritt "cd ..." zu bedeuten?

Auch ergibt sich mir noch nicht so ganz der Sinn mit der Firmware und mit dem host weil nur make wohl ausgeführt werden soll und nicht make install (wie kann da automatisch die firmware geladen werden :???: )? Ich dachte damit Hardware läuft muss entweder ein Treiber vorhanden sein (sprich entweder schon im Kernel oder extern nachinstaliert werden) und dann ggf. noch irgend eine Firmware geladen.
 

spoensche

Moderator
Teammitglied
Conax schrieb:
Ein Schritt in der Anleitung verwirrt mich aber und zwar soll ich ja die CONFIG_USB_SERIAL_FTDI_SIO aktivieren. make menuconfig spuckt da aber nix gutes aus:
Code:
linux-0crc:/home/stefan # make menuconfig
make: *** Keine Regel, um »menuconfig« zu erstellen.  Schluss.
Kann man da im nachhinein überhaupt noch Änderungen im Kernel vornehmen?

Klar man Änderungen vornehmen. Du hast make menuconfig nur im falschen Verzeichnis ausgeführt.
Bevor du dir die Arbeit mit dem kompilieren machst, überprüfe erst mal, ob CONFIG_USB_SERIAL_FTDI_SIO schon per default als Modul kompiliert worden ist.

Code:
grep FTDI /boot/config-kernel-version

Wenn du als Ergebnis
Code:
CONFIG_USB_SERIAL_FTDI_SIO="m"
angezeigt bekommst, dann ist das Modul schon konfiguriert und du musst es nur laden.

Code:
modprobe ftdi_sio

Conax schrieb:
Also ich habe mal so die Befehle ausgeführt habe dan extra in meinem Ordner "src" zwei unterordner mit firmware und host - hier mal ein Beispiel aus dem Ornder host:
Code:
stefan@linux-0crc:~/src/host> ls
ausb                    Makefile         opcd_sh.c    opcd_usb.c  zebvty
benchmark-20060824.txt  opcd_presence.c  opcd_test.c  opcd_usb.h
stefan@linux-0crc:~/src/host>
Hab dann auch im Unterordner zebvty(von host) make durchlaufen lassen aber was hat der Schritt "cd ..." zu bedeuten?

Code:
cd ..
wechselt zurück ins Elternverzeichnis. Bsp.: Du befindest dich im Verzeichnis /home/conax/test. Mit einem cd ..
wechselst du in das Verzeichnis /home/conax. Also eine Ebene höher.

Zu dem host und firmware Verzeichnis:
In dem Hostverzeichnis befindet sich der Treiber, der nach dem kompilieren die Library libausb.a beinhaltet. Die libausb.a wird beim kompilieren der Firmware benötigt.

Die Firmware kannst du für unterschiedliche Boards erstellen und wird auf den RFID-Chip bzw. die Karte geflasht. Du installierst quasi die Software auf der Karte.

Du hast dir also das Entwicklungskit runtergeladen und daher gibt es auch kein make install.
Das Modul ftdi_sio benötigst du weil, der Cardreader bzw. Writer um das serielles FTDI NAND-Flash der RFID Karte beschreiben zu können.
 
Oben