From: ryan01701 on
I have a device that presents the standard Bluetooth HCI controller interface
on USB. I can successfully open a handle to it via the standard methods
(CreateFile, WinUsb_Initialize) and communicate via control transfers with
interface 0.

However, I want to send a request to interface 2. I initialize my
WINUSB_SETUP_PACKET as desired, with the Index field set to 2. But on my USB
analyzer, when I see the packet go out, the Index field is 0.

Am I missing a call in to the driver to allow or otherwise enable interface
#2? What would cause the Index field to change value inside the driver call?

Thanks,

--
Ryan
From: Tim Roberts on
ryan01701 <ryan01701(a)discussions.microsoft.com> wrote:
>
>I have a device that presents the standard Bluetooth HCI controller interface
>on USB. I can successfully open a handle to it via the standard methods
>(CreateFile, WinUsb_Initialize) and communicate via control transfers with
>interface 0.
>
>However, I want to send a request to interface 2.

Is your driver's INF matching the entire composite device
(VID_xxxx&PID_xxxx), or are you only matching interface 0
(VID_xxxx&PID_xxxx&MI_00)?

>I initialize my
>WINUSB_SETUP_PACKET as desired, with the Index field set to 2. But on my USB
>analyzer, when I see the packet go out, the Index field is 0.

If you're only matching interface 0, it's possible that the default
composite driver is overriding the index number, since interface 2 belongs
to someone else. I'd be surprised at that but it's not impossible.
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: Maxim S. Shatskih on
>I have a device that presents the standard Bluetooth HCI controller interface
> on USB.

How can you use WinUSB for it? Am I wrong that the controller must be plugged to MS's kernel-mode Bluetooth stack?

--
Maxim S. Shatskih
Windows DDK MVP
maxim(a)storagecraft.com
http://www.storagecraft.com

From: ryan01701 on
"Maxim S. Shatskih" wrote:

> >I have a device that presents the standard Bluetooth HCI controller interface
> > on USB.
>
> How can you use WinUSB for it? Am I wrong that the controller must be plugged to MS's kernel-mode Bluetooth stack?

I'm interested in interfacing with it as a "raw" device, so WinUSB is
suitable for my needs. I don't want or need to use any higher level
Bluetooth functionality from the operating system.

--
Ryan
From: Philip Ries [MSFT] on
Just taking a glance at the docs, you could look into calling
WinUsb_GetAssociatedInterface to get an interface handle, with which you
would then call WinUsb_ControlTransfer.

http://msdn.microsoft.com/en-us/library/ff540245(VS.85).aspx

ryan01701 wrote:
> I have a device that presents the standard Bluetooth HCI controller interface
> on USB. I can successfully open a handle to it via the standard methods
> (CreateFile, WinUsb_Initialize) and communicate via control transfers with
> interface 0.
>
> However, I want to send a request to interface 2. I initialize my
> WINUSB_SETUP_PACKET as desired, with the Index field set to 2. But on my USB
> analyzer, when I see the packet go out, the Index field is 0.
>
> Am I missing a call in to the driver to allow or otherwise enable interface
> #2? What would cause the Index field to change value inside the driver call?
>
> Thanks,
>