#1 Le 18/12/2011, à 13:19
- Maisondouf
[résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Je viens d'acquérir un lecteur CCID et je compte m'en servir pour comptabiliser les heures de service qui sont écrites dans une carte ChronoDrive.
Alors voilà, j'ai installé ça :
- libccid
- libacr38u
- pcscd
- libpcsclite1
- pcsc-tools
J'arrive à accéder au lecteur et à lire ce que je veux dans la carte avec le MAGNIFIQUE gscriptor (que j'ai un peu corrigé).
Donc en perl pas de soucis.
J'ai écris un soft de test en java (sous eclipse 3.7.1), mais là aucune réponse du lecteur.
Java ne détecte AUCUN lecteur !
Je suis sous Lucid à l'origine avec la jre 6-26 et j'ai installé manuellement (à grand coup de liens) la jre 6-30, mais ça ne détecte toujours pas !
Par contre, si je crée un .jar exécutable et que je le lance sur un PC avec W7(avec jre 6-30), ça marche .....
Si quelqu'un peut débloquer cette situation, je lui ferai une bise au premier de l'an
edit:
le lsusb du lecteur:
Bus 005 Device 004: ID 072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader
Dernière modification par Maisondouf (Le 19/02/2012, à 14:17)
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#2 Le 18/12/2011, à 15:51
- Maisondouf
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Je viens de voir que dans les dépôts des versions Ubuntu plus récentes que la mienne, il existe un driver CCID pour mon lecteur... libascccid1
Est ce que il va arriver en backport sous Lucid ?
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#3 Le 18/12/2011, à 16:30
- Maisondouf
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Ça me fait pas rire, mais le programme fonctionne en démarrant Lucid en mode récup et low-graphics
Cherchez l'erreur ....
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#4 Le 18/12/2011, à 16:39
- Maisondouf
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Après un stage en mode dépannage :
- en re-installant pas à pas les paquets concernés avec ce bon vieux apt-get...
- faisant le ménage dans les paquets qui sont obsolètes pour ce type de lecteur (libacr38u par exemple)
- en faisant un autoremove pour que les restes de jre 6-26 soit désinstallés
ÇA MARCHE !!!
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#5 Le 01/02/2012, à 11:16
- Maisondouf
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Eh bien maintenant que mon bon vieux Lucid est mort de sa belle mort et que j'ai fini par installer une version plus moderne....
YA PLUS RIEN QUI MARCHE !
Enfin si, Gscriptor (en perl) détecte bien le lecteur et le lit bien.
Mais il utilise les drivers PC/SC..
Quant à Java, impossible de savoir comment il fait .
mon lecteur est bien dans le lsusb
Bus 005 Device 003: ID 072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader
en détail, ça donne ça :
papounet@p4papou:~$ lsusb -v -d 072f:90cc
Bus 005 Device 003: ID 072f:90cc Advanced Card Systems, Ltd ACR38 SmartCard Reader
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x072f Advanced Card Systems, Ltd
idProduct 0x90cc ACR38 SmartCard Reader
bcdDevice 1.00
iManufacturer 1 ACS
iProduct 2 CCID USB Reader
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 93
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 11 Chip/SmartCard
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
ChipCard Interface Descriptor:
bLength 54
bDescriptorType 33
bcdCCID 1.00
nMaxSlotIndex 0
bVoltageSupport 7 5.0V 3.0V 1.8V
dwProtocols 3 T=0 T=1
dwDefaultClock 4000
dwMaxiumumClock 4000
bNumClockSupported 0
dwDataRate 10752 bps
dwMaxDataRate 344100 bps
bNumDataRatesSupp. 0
dwMaxIFSD 247
dwSyncProtocols 00000000
dwMechanical 00000000
dwFeatures 00010030
Auto clock change
Auto baud rate change
TPDU level exchange
dwMaxCCIDMsgLen 271
bClassGetResponse 00
bClassEnvelope 00
wlcdLayout none
bPINSupport 0
bMaxCCIDBusySlots 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 16
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0000
(Bus Powered)
papounet@p4papou:~$
Voila ce qui est installé :
ii pcsc-tools 1.4.18-1 Some tools to use with smart cards and PC/SC
ii pcscd 1.7.4-2ubuntu1 Middleware to access a smart card using PC/SC (dae
ii libpcsc-perl 1.4.12-1build2 Perl interface to the PC/SC smart card library
ii libpcsclite1 1.7.4-2ubuntu1 Middleware to access a smart card using PC/SC (lib
par contre je n'ai pas installé 'libccid', je vais tester....
A Suivre
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#6 Le 19/02/2012, à 14:30
- Maisondouf
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Enfin !!!
Un gentil développeur de chez Debian m'a donné une réponse dont je vous fait part....
Java via son API javax.smartcardio se base sur la librairie linux 'libpcsclite' pour lire les cartes à puces.
Mais depuis quelques temps (2008) cette lib a évolué et s'appelle maintenant 'libpcsclite1' et java, lui, n'a pas suivi....
En gros, avant il y avait un fichier lib qui était /usr/lib/libpcsclite.so et maintenant on a un fichier /lib/libpcsclite.so.1.
Donc en résumé, pas le même nom et en plus pas au même endroit !!!
La solution donnée est
- soit de créer un lien symbolique à la main:
sudo ln -s /lib/libpcsclite.so.1 /usr/lib/libpcsclite.so
- soit d'installer le paquet "libpcsclite-dev" qui contient ce lien symbolique et d'autres choses pas trop utiles pour tous les jours.
Après ça, les lecteurs de cartes à puces PC/SC et CCID sont reconnus et accessibles.
A quand un responsable des paquetages qui pense à mettre le lien dans le paquet de base ????
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#7 Le 19/02/2012, à 15:08
- Maisondouf
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
mini scripte pour automatiser la mise en place du lien...
A sauver dans un fichier "cequevousvoulez.sh" et à lancer avec "sudo sh cequevousvoulez.sh"
#! /bin/sh
if [ -f /usr/lib/libpcsclite.so ];
then
echo "library already exists"
exit
fi
for aa in /lib /usr/lib /usr/local/lib
do
ll=`find $aa -name libpcsclite.so.1`
if [ -f $ll ]
then
ln -s $ll /usr/lib/libpcsclite.so
echo "done"
exit
fi
done
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#8 Le 02/01/2013, à 12:35
- Nialalala
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Bonjour,
Sous Ubuntu 12.04.1 64 bits, j'ai le même lecteur de carte que toi.
Pour ma part, j'ai trouvé la lib libpcsclite.so.1 sous /lib/x86_64-linux-gnu/libpcsclite.so.1.
J'ai donc modifié la ligne d'activation du lien symbolique en :
sudo ln -s /lib/x86_64-linux-gnu/libpcsclite.so.1 /usr/lib/libpcsclite.so
Pour faire bon poids, j'ai aussi installé libpcsclite-dev par Synaptic et pcscd par la logithèque (proposé avec libpcsclite1 qui était déjà installé).
Après redémarrage de l'ordinateur ça marche (mais je ne sais pas exactement ce qui était strictement nécessaire).
Merci pour le déboguage initial !
Dernière modification par Nialalala (Le 02/01/2013, à 14:56)
La documentation et les forum quotidiennement tu liras.
Hors ligne
#9 Le 02/01/2013, à 18:47
- Maisondouf
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
En fait depuis quelques versions, le lien symbolique est installé en même temps que la librairie 'dev'.
On avait réussi à faire avancer la chose avec Ludovic Rousseau (le créateur de pcsc et gscriptor).
Tout les lecteurs modernes sont maintenant bien détectés par Java.
EDIT: c'est quel type de cartes que tu veux lire ?
Dernière modification par Maisondouf (Le 02/01/2013, à 18:51)
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#10 Le 31/05/2013, à 18:56
- Nialalala
Re : [résolu]Lecteur de carte à puce ACS38U-CCID invisible sous Java
Il s'agit de lire et recharger une carte d'abonnement de transport en commun à Grenoble.
(Excuse-moi pour le délai de réponse, mais je n'ai pas vu passer la tienne - le changement de version d'Ubuntu m'a contraint à revenir chercher le "truc")
La documentation et les forum quotidiennement tu liras.
Hors ligne