Modify

Opened 10 years ago

Closed 10 years ago

Last modified 8 years ago

#532 closed defect (wontfix)

USB hub problem

Reported by: sancho@… Owned by: developers
Priority: normal Milestone: 0.9/rc6
Component: kernel Version:
Keywords: hcd.c hcd usb hub Cc: yan@…

Description

When I plug a device using spca5xx module directly to Asus WL500gx USB slot, everything works just fine.
But, when I plug USB hub between the Asus and WebCam, I get following error during attemt to grab picture:

hcd.c: use explicit queuing not urb->next

This is what dmesg states.

And, even more, when I try a device with pl2303 usb to serial converter, again, it works directly, but fails to communicate using USB hub.

The mass storage devices works fine.

Attachments (0)

Change History (7)

comment:1 Changed 10 years ago by yan@…

Per the developer this may cure that ill:

Well in 2.4.x urb->next is allowed,mabe with EHCI that cause trouble a quick
pacth should be to remove the urb->next feature and used the code for 2.6.x
at this point :

remove line 1631-1635
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,41)
    spca50x->sbuf[SPCA50X_NUMSBUF - 1].urb->next = spca50x->sbuf[0].urb;
    for (n = 0; n < SPCA50X_NUMSBUF - 1; n++)
	spca50x->sbuf[n].urb->next = spca50x->sbuf[n + 1].urb;
#endif

and line 1544 - 1551 check to get:

//#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4)
//    if ((i = usb_submit_urb(urb, GFP_ATOMIC)) != 0)
//	err("usb_submit_urb() ret %d", i);
//#else
/* If we use urb->next usb_submit_urb() is not need in 2.4.x */
    if ((i = usb_submit_urb(urb)) != 0)
    err("usb_submit_urb() ret %d", i);
//#endif

comment:2 Changed 10 years ago by mbm

  • Cc yan@… added
  • Milestone set to 1.0-rc6

We're talking about a patch to a 2.4.x kernel right? (the 2.4.30 in whiterussian)

... because the following piece of the patch does nothing to a 2.4.x kernel ...

//#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4)
//    if ((i = usb_submit_urb(urb, GFP_ATOMIC)) != 0)
//	err("usb_submit_urb() ret %d", i);
//#else
/* If we use urb->next usb_submit_urb() is not need in 2.4.x */
    if ((i = usb_submit_urb(urb)) != 0)
    err("usb_submit_urb() ret %d", i);
//#endif
}}

comment:3 Changed 10 years ago by mbm

//#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4)
//    if ((i = usb_submit_urb(urb, GFP_ATOMIC)) != 0)
//	err("usb_submit_urb() ret %d", i);
//#else
/* If we use urb->next usb_submit_urb() is not need in 2.4.x */
    if ((i = usb_submit_urb(urb)) != 0)
    err("usb_submit_urb() ret %d", i);
//#endif

(damned thing ate my post)

comment:4 Changed 10 years ago by yan@…

No, my bad for assuming....

The patch is to the spca5xx.c code from the spca5xx-20060501 tarball. I have patches somewhere that let it compile against both 2.4 and 2.6 kernels; I'm recompiling kamikaze as we speak but it will be a day or two before I can test both kernels.

comment:5 Changed 10 years ago by yan@…

Per Alan Stern, USB maintainer:

The problem is that you are plugging a full-speed device (the camera) into
a high-speed hub. The ehci-hcd driver currently isn't able to handle
isochronous transfers in that situation very well.

There are three ways to work around the problem. First, plug the camera
directly into the computer instead of into the hub. Second, do "rmmod
ehci-hcd" so that nothing runs at high speed. Third, use a full-speed
(USB-1.1) hub, if you can find one, instead of the high-speed (USB-2.0)
hub.

Alan Stern

comment:6 Changed 10 years ago by nbd

  • Resolution set to wontfix
  • Status changed from new to closed

comment:7 Changed 8 years ago by Santanu

I have buyed a USB Hub today( China make). It is working, when checked with only one USB device./ But, failed to communicate, when more devices used (more than one).

Please, suggest what to do, so that I can use other 3 USB ports in the HUB. The Hub data transfer speed mentioned as 12MBPS.

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.