[libhid-discuss] Using composite USB devices

Ali Asad Asad.Ali at gemalto.com
Mon Mar 30 14:57:33 UTC 2009


Hi,

Based on feedback from this list and also from libusb, I was to resolve these issues with my composite device. I can now send and receive data to it. Many thanks for your suggestions.

Peter Stuge wrote:
>> Are ep1-2 and ep4 in different interfaces? If not I think you're in trouble if you want to use the MSC at the same time as HID.

Yes, ep1-2 and ep4 are on different interfaces.

Peter Stuge wrote:
>> Using native HID on OS X?

Yes, we use native HID support on OS X.

Best regards,
--- asad

-----Original Message-----
From: libhid-discuss-bounces+asad.ali=gemalto.com at lists.alioth.debian.org [mailto:libhid-discuss-bounces+asad.ali=gemalto.com at lists.alioth.debian.org] On Behalf Of Peter Stuge
Sent: Monday, March 23, 2009 10:14 AM
To: libhid-discuss at lists.alioth.debian.org
Subject: Re: [libhid-discuss] Using composite USB devices

Ali Asad wrote:
> The device in question is a composite USB memory token that also
> enumerates as an HID device. It has four end points; ep 1 and ep 2 for
> bulk mass storage, ep 0 as control end-point, and ep 4 for interrupt
> IN.
> The control end-point is used for sending HID data from host to
> device, and the interrupt end-point for sending HID data from device
> to the host.

Are ep1-2 and ep4 in different interfaces? If not I think you're in trouble if you want to use the MSC at the same time as HID.


> I can talk to this device over HID on both Windows and Mac OS (Tiger
> as well as Leopard), and now want to support Linux as well.

Using native HID on OS X?


> I am attaching the pseudo code of using the USB library (libhid gave
> me similar results). Do you spot anything wrong in this appraoch?

Posting to libusb-devel might be better. I'll try to give some hints here at least.


>     rv = usb_detach_kernel_driver_np(usb_handle,
> MY_CONTROL_INTERFACE);

Do you need to?


>     rv = usb_claim_interface(usb_handle, MY_CONTROL_INTERFACE);

This makes me a bit scared. How many interfaces are there? You should have at least two. Output from lsusb -v and /proc/bus/usb/devices is always helpful in these questions.


>     rv = usb_interrupt_read(usb_handle,
>
>     // ERROR: this call fails. I do not see any data on the USB bus.

How does it fail? Please provide every single detail if you want us to be able to help you.


//Peter

_______________________________________________
libhid-discuss mailing list
libhid-discuss at lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/libhid-discuss
http://libhid.alioth.debian.org/



More information about the libhid-discuss mailing list