Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 May 2011 16:28:55 +0200
From:      Luca Pizzamiglio <l.pizzamiglio@bally-wulff.de>
To:        freebsd-usb@freebsd.org
Subject:   SMARTCARD USB Reader
Message-ID:  <4DD134A7.1070208@bally-wulff.de>

next in thread | raw e-mail | index | archive | help
Hi List!
I'm Luca and I'm trying to write a kind of driver for USB SMARTCARD 
Reader on FreeBSD 8.2-STABLE.

The approach adopted is to use libusb20, but I've some problem using 
interrupt end point...

I successfully implemented a find_device() routine scanning all device 
and it works well.
Then I want to use all 3 endpoints provided by this calls of devices:
1 BULK OUT endpoint (to send messages)
1 BULK IN endpoint (to read replies)
1 IRQ IN endpoint (to read the change of the slot status)

I have no problem to open BULK endpoints, but the IRQ endpoint open fails.
The procedure I follow is:

libusb20_dev_open( pdev, 32 )
libusb20_dev_set_config_index( pdev, 0)
bin_ep = libusb20_tr_get_pointer( pdev, 0 );
libusb20_tr_open( bin_ep, 4096, 1, bin_ep_num );
bout_ep = libusb20_tr_get_pointer( pdev, 1 );
libusb20_tr_open( bout_ep, 4096, 1, bout_ep_num );
irq_ep = libusb20_tr_get_pointer( pdev, 2 );
libusb20_tr_open( irq_ep, 4096, 1, irq_ep_num );

The last open fails and I don't understand why. LIBUSB20 error code is 
-2 (LIBUSB20_ERROR_INVALID_PARAM) and errno is 22 (EINVAL).
The smartcard reader devices has 1 configuration, 1 interface and 3 
endpoints. These data are confirmed by my find_device routine and by 
usbconfig utility. The irq ep is the number 2 and the unique interface 
has bNumEndpoints = 0x0003.

Scanning the source code, I guess the error code comes form the ioctl( 
USB_FS_OPEN )

u.popen->ep_index >= f->fs_ep_max

Am I missing some initialization? Should I configure something else? Any 
help is really appreciated!

Thanks in advance

Luca

PS There is some examples of usage of libusb20? I read usbconfig source 
code and it's a great source of information, but I didn't found examples 
about transfers...



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4DD134A7.1070208>