msgbartop
Iä! Iä! Cthulhu Fhtagn!
msgbarbottom

24 nov 07 Uso de lectores de tarjetas LTC31 en linux

Los lectores de tarjetas electrónicas LTC31 de C3PO (ejem) son unos dispositivos diseñados para leer tarjetas electrónicas (por ejemplo el nuevo DNI-e) que gozan de una amplia difusión.

Lector LTC31

Hace poco tiempo tuve la oportunidad de hacerme con uno, y como no podía ser menos, decidí utilizarlo en mi Debian, para lo que tuve que cacharrear un poco. En la propia página del fabricante ofrecen información de cómo configurarlo en linux, pero dado que resulta un poco críptica, he decidido añadir mi granito de arena.

El primer problema con el que nos encontramos es que hay dos versiones del dispositivo, con configuraciones diferentes… y el mío no informa de ninguna manera de cuál es su versión. Tuve que averiguarlo probándolo en un Windows, donde, al instalarlo con el instalador genérico, informa de la versión. En mi caso, la versión 1.

Al mirar la documentación de cómo instalarlo, lo primero que vi es que es necesario parchear y recompilar el kernel. Además, es preciso solicitar el parche al servicio post-venta. A través de la página The Ubuntu Linux Experience pude conseguir una buena guía de parcheado (e incluso una versión del parche). Sin embargo, en esta página se informa de cómo parchear el kernel 2.6.17, cuando el mío es el 2.6.16. Pese a ello, me dió un par de buenas pistas.

En mi caso también era necesario modificar el archivo drivers/usb/host/uhci-q.c, pero de una manera diferente: ni era necesario aplicar el parche, ni la modificación apuntada para la versión 2.6.17. Sólo estimé necesario comentar el siguiente fragmento de código:

/* Can't have low-speed bulk transfers */
if (urb->dev->speed == USB_SPEED_LOW)
return -EINVAL;

ya que el reemplazo previsto en el código para el fragmento anterior ya se encontraba presente en la función:

ret = uhci_submit_common(uhci, urb, eurb, uhci->skel_bulk_qh);
if (ret == -EINPROGRESS)
uhci_inc_fsbr(uhci, urb);

(
Dicho y hecho, recompilé el núcleo, pero me limité a copiar el nuevo módulo (uhci-hcd.ko, localizado en el directorio /usr/src/linux/drivers/usb/host/) en el lugar del antiguo (/lib/modules/2.6.16.11/kernel/drivers/usb/host/), sin instalar el nuevo kernel. Después, con modconf eliminé la antigua versión e instalé la nueva, y ejecuté un depmod -a.

Una vez hecho lo anterior, y tras instalar los paquetes indicados en la guía de instalación del LTC31 (a saber, pcscd y pcsc-tools), reinicié el demodio de pcsc, y el lector empezó a funcionar perfectamente:

$ pcsc_scan
PC/SC device scanner
V 1.4.11 (c) 2001-2007, Ludovic Rousseau
Compiled with PC/SC lite version: 1.4.4
Scanning present readers
0: ActivCard USB Reader 2.0 (00045127) 00 00

Sat Nov 24 22:23:20 2007
Reader 0: ActivCard USB Reader 2.0 (00045127) 00 00
Card state: Card inserted, Shared Mode,
ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 10 02 4C 34 01 13 03 90 00

ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 10 02 4C 34 01 13 03 90 00
+ TS = 3B --> Direct Convention
+ T0 = 7F, Y(1): 0111, K: 15 (historical bytes)
TA(1) = 38 --> Fi=744, Di=12, 62 cycles/ETU (57600 bits/s at 3.57 MHz)
TB(1) = 00 --> VPP is not electrically connected
TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 00 6A 44 4E 49 65 10 02 4C 34 01 13 03 90 00
Category indicator byte: 00 (compact TLV data object)
Tag: 6, len: A (pre-issuing data)
Data: 44 4E 49 65 10 02 4C 34 01 13
Mandatory status indicator (3 last bytes)
LCS (life card cycle): 03 (Initialisation state)
SW: 9000 (Normal processing.)

Un detalle: para que me detectara las tarjetas inteligentes, al rearrancar el demonio tengo que tener la tarjeta introducida en el lector, ya que si no es así no parece arrancar correctamente. A partir de ahí ya es posible retirar la tarjeta y volverla a introducir sin problemas, pero en el primer arranque parece necesario que esté presente.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)
Comparte este artículo:
  • Twitter
  • Facebook
  • email
  • StumbleUpon
  • Delicious
  • Google Reader
  • LinkedIn
  • BlinkList

Comentarios de los lectores

  1. |

    [...] lector de tarjetas apropiado en nuestro ordenador. He podido comprobar personalmente que el modelo LTC31 es válido y su precio (inferior a 30€) es asequible. Envía esta noticia a:Estos iconos hacen [...]

    Responder a este comentario

Deje un comentario en El Laboratorio del Dr. Yuri » Blog Archive » Uso de DNI-e en Debian GNU/Linux







5 + cuatro =