usbd_io ENODEV error

Hello,
I’m working on a driver for USB bluetooth dongles on the Total 5200
platform. I’ve run into a problem where two of the dongles I have will work
just fine, however the one I’d like to use returns an ENODEV error from
usbd_io in the bulk in callback, followed by the removal callback. The
situation is the same as for the working case, I’m receiving a stream of
data from the bulk in endpoint, when the error occurs. I’m using 6.3 + SP1.
I’m wondering if anyone has any suggestions as to what might be the source
of this error. Note that this dongle works fine under Windows XP. Thanks
in advance,

Todd Malsbary
Software Engineer
Open Interface

How much data is received when this error occurs ?
Is it at the same point each time that his error occurs ?

Somehow the USB stack is seeing the device remove itself from the
BUS and return ENODEV for your enqueued request.
You can run the USB driver with verbose “io-usb -vvvvvv -d…”
to see insertion/removals recorded in the sloginfo. Normally you should
see this only when you physically plug/unplug the device.

Is there a certain command in your driver that you can find that triggers
this
condition ?

Henry

Todd Malsbary <todd.malsbary@openinterface.com> wrote in message
news:d8vcdp$aja$1@inn.qnx.com

Hello,
I’m working on a driver for USB bluetooth dongles on the Total 5200
platform. I’ve run into a problem where two of the dongles I have will
work
just fine, however the one I’d like to use returns an ENODEV error from
usbd_io in the bulk in callback, followed by the removal callback. The
situation is the same as for the working case, I’m receiving a stream of
data from the bulk in endpoint, when the error occurs. I’m using 6.3 +
SP1.
I’m wondering if anyone has any suggestions as to what might be the source
of this error. Note that this dongle works fine under Windows XP. Thanks
in advance,

Todd Malsbary
Software Engineer
Open Interface

Hello Henry,

“Henry VanDyke” <henry@qnx.com> wrote in message
news:<d995rb$i9e$1@inn.qnx.com>…

How much data is received when this error occurs ?
Is it at the same point each time that his error occurs ?

The amount of data and time varies each time I see this error.

Somehow the USB stack is seeing the device remove itself from the BUS
and return ENODEV for your enqueued request. You can run the USB
driver with verbose “io-usb -vvvvvv -d…” to see insertion/removals
recorded in the sloginfo. Normally you should see this only when you
physically plug/unplug the device.

Here is the output I see from io-usb. Throughout the log below, the device
remains physically connected. If I press the reset button on the device
while I’m running the same code, the output looks exactly the same, so it
seems as though the USB stack either detects or generates a reset of the
device.

Time Sev Major Minor Args
Jan 26 09:07:34 2 12 0 CLASS_ExtractDevice: no parent
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0, speed
0
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Set address 1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get full device descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full config
descriptor
Jan 26 09:07:35 2 12 0 USB_SelectConfiguration: Set config devno 1, cfg 1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0 dno 1, vid a5c
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: dno 1, vid a5c, parent 0, port
0, openings 1
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: holdoff parent 0, port 0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0, speed
0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Set address 2
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get full device descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full config
descriptor
Jan 26 09:07:50 2 12 0 USB_SelectConfiguration: Set config devno 2, cfg 1
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0 dno 2, vid a5c
Jan 26 09:07:50 2 12 0 udi_detach: defered removal, dno 1
Jan 26 09:07:50 2 12 0 CLASS_ExtractDeviceCleanup: dno 1

Is there a certain command in your driver that you can find that
triggers this condition ?

I haven’t yet found anything unique about the commands during this problem.

Todd

Henry

Todd Malsbary <> todd.malsbary@openinterface.com> > wrote in message
news:d8vcdp$aja$> 1@inn.qnx.com> …
Hello,
I’m working on a driver for USB bluetooth dongles on the Total
5200 platform. I’ve run into a problem where two of the dongles I
have will
work
just fine, however the one I’d like to use returns an ENODEV error
from usbd_io in the bulk in callback, followed by the removal
callback. The situation is the same as for the working case, I’m
receiving a stream of data from the bulk in endpoint, when the error
occurs. I’m using 6.3 +
SP1.
I’m wondering if anyone has any suggestions as to what might be the
source of this error. Note that this dongle works fine under
Windows XP. Thanks in advance,

Todd Malsbary
Software Engineer
Open Interface
\

Todd Malsbary <todd.malsbary@openinterface.com> wrote in message
news:d9abto$en3$1@inn.qnx.com

Hello Henry,

“Henry VanDyke” <> henry@qnx.com> > wrote in message
news:<d995rb$i9e$> 1@inn.qnx.com> >…

How much data is received when this error occurs ?
Is it at the same point each time that his error occurs ?


The amount of data and time varies each time I see this error.

Somehow the USB stack is seeing the device remove itself from the BUS
and return ENODEV for your enqueued request. You can run the USB
driver with verbose “io-usb -vvvvvv -d…” to see insertion/removals
recorded in the sloginfo. Normally you should see this only when you
physically plug/unplug the device.


Here is the output I see from io-usb. Throughout the log below, the device
remains physically connected. If I press the reset button on the device
while I’m running the same code, the output looks exactly the same, so it
seems as though the USB stack either detects or generates a reset of the
device.

The USB chip reports connection changes and this is when this code
runs. What USB host chipset are you running ? The onboard OHCI ?
Does this happen if run it on x86 ?

Could you plug the device through an external Hub to see if that makes
any difference ?

Henry




Time Sev Major Minor Args
Jan 26 09:07:34 2 12 0 CLASS_ExtractDevice: no parent
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0,
speed
0
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Set address 1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get full device descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full config
descriptor
Jan 26 09:07:35 2 12 0 USB_SelectConfiguration: Set config devno 1, cfg 1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0 dno 1, vid a5c
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: dno 1, vid a5c, parent 0, port
0, openings 1
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: holdoff parent 0, port 0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0,
speed
0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Set address 2
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get full device descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full config
descriptor
Jan 26 09:07:50 2 12 0 USB_SelectConfiguration: Set config devno 2, cfg 1
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0 dno 2, vid a5c
Jan 26 09:07:50 2 12 0 udi_detach: defered removal, dno 1
Jan 26 09:07:50 2 12 0 CLASS_ExtractDeviceCleanup: dno 1

Is there a certain command in your driver that you can find that
triggers this condition ?


I haven’t yet found anything unique about the commands during this
problem.

Todd

Henry

Todd Malsbary <> todd.malsbary@openinterface.com> > wrote in message
news:d8vcdp$aja$> 1@inn.qnx.com> …
Hello,
I’m working on a driver for USB bluetooth dongles on the Total
5200 platform. I’ve run into a problem where two of the dongles I
have will
work
just fine, however the one I’d like to use returns an ENODEV error
from usbd_io in the bulk in callback, followed by the removal
callback. The situation is the same as for the working case, I’m
receiving a stream of data from the bulk in endpoint, when the error
occurs. I’m using 6.3 +
SP1.
I’m wondering if anyone has any suggestions as to what might be the
source of this error. Note that this dongle works fine under
Windows XP. Thanks in advance,

Todd Malsbary
Software Engineer
Open Interface

\

Hello again Henry, thanks for the quick reply.

“Henry VanDyke” <henry@qnx.com> wrote in message
news:d9bttd$ka9$1@inn.qnx.com

Todd Malsbary <> todd.malsbary@openinterface.com> > wrote in message
news:d9abto$en3$> 1@inn.qnx.com> …
Hello Henry,

“Henry VanDyke” <> henry@qnx.com> > wrote in message
news:<d995rb$i9e$> 1@inn.qnx.com> >…

How much data is received when this error occurs ?
Is it at the same point each time that his error occurs ?


The amount of data and time varies each time I see this error.

Somehow the USB stack is seeing the device remove itself from the BUS
and return ENODEV for your enqueued request. You can run the USB
driver with verbose “io-usb -vvvvvv -d…” to see insertion/removals
recorded in the sloginfo. Normally you should see this only when you
physically plug/unplug the device.


Here is the output I see from io-usb. Throughout the log below, the
device
remains physically connected. If I press the reset button on the device
while I’m running the same code, the output looks exactly the same, so it
seems as though the USB stack either detects or generates a reset of the
device.

The USB chip reports connection changes and this is when this code
runs. What USB host chipset are you running ? The onboard OHCI ?
Does this happen if run it on x86 ?

I’m using the onboard OHCI on the MPC 5200. I haven’t run into this problem
under x86 (running Windows XP).

Could you plug the device through an external Hub to see if that makes
any difference ?

I just tried this and this appears to fix the problem. Instead of plugging
the device directly into the 5200, I plug a hub into the 5200, then the
device into the hub, and I don’t see the mysterious reset. Unless you want
some more info, I’m done with this particular problem. Thanks a lot for the
help, you’ve saved me a lot of time,

Todd

Henry





Time Sev Major Minor Args
Jan 26 09:07:34 2 12 0 CLASS_ExtractDevice: no parent
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0,
speed
0
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Set address 1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get full device descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full
config
descriptor
Jan 26 09:07:35 2 12 0 USB_SelectConfiguration: Set config devno 1, cfg 1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0 dno 1, vid a5c
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: dno 1, vid a5c, parent 0,
port
0, openings 1
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: holdoff parent 0, port 0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0,
speed
0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Set address 2
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get full device descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full
config
descriptor
Jan 26 09:07:50 2 12 0 USB_SelectConfiguration: Set config devno 2, cfg 1
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0 dno 2, vid a5c
Jan 26 09:07:50 2 12 0 udi_detach: defered removal, dno 1
Jan 26 09:07:50 2 12 0 CLASS_ExtractDeviceCleanup: dno 1

Is there a certain command in your driver that you can find that
triggers this condition ?


I haven’t yet found anything unique about the commands during this
problem.

Todd

Henry

Todd Malsbary <> todd.malsbary@openinterface.com> > wrote in message
news:d8vcdp$aja$> 1@inn.qnx.com> …
Hello,
I’m working on a driver for USB bluetooth dongles on the Total
5200 platform. I’ve run into a problem where two of the dongles I
have will
work
just fine, however the one I’d like to use returns an ENODEV error
from usbd_io in the bulk in callback, followed by the removal
callback. The situation is the same as for the working case, I’m
receiving a stream of data from the bulk in endpoint, when the error
occurs. I’m using 6.3 +
SP1.
I’m wondering if anyone has any suggestions as to what might be the
source of this error. Note that this dongle works fine under
Windows XP. Thanks in advance,

Todd Malsbary
Software Engineer
Open Interface



\

Todd Malsbary <todd.malsbary@openinterface.com> wrote in message
news:d9c4ra$p8n$1@inn.qnx.com

Hello again Henry, thanks for the quick reply.

“Henry VanDyke” <> henry@qnx.com> > wrote in message
news:d9bttd$ka9$> 1@inn.qnx.com> …
Todd Malsbary <> todd.malsbary@openinterface.com> > wrote in message
news:d9abto$en3$> 1@inn.qnx.com> …
Hello Henry,

“Henry VanDyke” <> henry@qnx.com> > wrote in message
news:<d995rb$i9e$> 1@inn.qnx.com> >…

How much data is received when this error occurs ?
Is it at the same point each time that his error occurs ?


The amount of data and time varies each time I see this error.

Somehow the USB stack is seeing the device remove itself from the BUS
and return ENODEV for your enqueued request. You can run the USB
driver with verbose “io-usb -vvvvvv -d…” to see insertion/removals
recorded in the sloginfo. Normally you should see this only when you
physically plug/unplug the device.


Here is the output I see from io-usb. Throughout the log below, the
device
remains physically connected. If I press the reset button on the device
while I’m running the same code, the output looks exactly the same, so
it
seems as though the USB stack either detects or generates a reset of
the
device.

The USB chip reports connection changes and this is when this code
runs. What USB host chipset are you running ? The onboard OHCI ?
Does this happen if run it on x86 ?


I’m using the onboard OHCI on the MPC 5200. I haven’t run into this
problem
under x86 (running Windows XP).

Could you plug the device through an external Hub to see if that makes
any difference ?


I just tried this and this appears to fix the problem. Instead of
plugging
the device directly into the 5200, I plug a hub into the 5200, then the
device into the hub, and I don’t see the mysterious reset. Unless you
want
some more info, I’m done with this particular problem. Thanks a lot for
the
help, you’ve saved me a lot of time,

I’m glad that it works through the hub.

What are the power requirements reported by the ‘usb’ utility for this
device ?


Todd

Henry





Time Sev Major Minor Args
Jan 26 09:07:34 2 12 0 CLASS_ExtractDevice: no parent
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0,
speed
0
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Set address 1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: Get full device
descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full
config
descriptor
Jan 26 09:07:35 2 12 0 USB_SelectConfiguration: Set config devno 1, cfg
1
Jan 26 09:07:35 2 12 0 CLASS_EnumerateDevice: bus 0 dno 1, vid a5c
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: dno 1, vid a5c, parent 0,
port
0, openings 1
Jan 26 09:07:49 2 12 0 CLASS_ExtractDevice: holdoff parent 0, port 0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0, parent 0, port 0,
speed
0
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get device descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Set address 2
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: Get full device
descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get config
descriptor
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDeviceConfiguration: Get full
config
descriptor
Jan 26 09:07:50 2 12 0 USB_SelectConfiguration: Set config devno 2, cfg
1
Jan 26 09:07:50 2 12 0 CLASS_EnumerateDevice: bus 0 dno 2, vid a5c
Jan 26 09:07:50 2 12 0 udi_detach: defered removal, dno 1
Jan 26 09:07:50 2 12 0 CLASS_ExtractDeviceCleanup: dno 1

Is there a certain command in your driver that you can find that
triggers this condition ?


I haven’t yet found anything unique about the commands during this
problem.

Todd

Henry

Todd Malsbary <> todd.malsbary@openinterface.com> > wrote in message
news:d8vcdp$aja$> 1@inn.qnx.com> …
Hello,
I’m working on a driver for USB bluetooth dongles on the Total
5200 platform. I’ve run into a problem where two of the dongles I
have will
work
just fine, however the one I’d like to use returns an ENODEV error
from usbd_io in the bulk in callback, followed by the removal
callback. The situation is the same as for the working case, I’m
receiving a stream of data from the bulk in endpoint, when the
error
occurs. I’m using 6.3 +
SP1.
I’m wondering if anyone has any suggestions as to what might be the
source of this error. Note that this dongle works fine under
Windows XP. Thanks in advance,

Todd Malsbary
Software Engineer
Open Interface





\

“Henry VanDyke” <henry@qnx.com> wrote in message
news:d9c880$rjr$1@inn.qnx.com

What are the power requirements reported by the ‘usb’ utility for this
device ?

‘usb -v’ for the problematic device indicates 100mA for the Max Power
setting. Two other devices that work well for me
indicate 200mA and 250mA for the Max Power setting.

Todd