On May 14 20:29, Wade Berrier wrote:
> On Wed Apr 27 21:07, Sean Young wrote:
> > On Mon, Apr 25, 2016 at 09:16:51PM -0600, Wade Berrier wrote:
> > > On Apr 25 18:15, Sean Young wrote:
> > > > On Sun, Apr 24, 2016 at 10:06:33PM -0600, Wade Berrier wrote:
> > > > > Hello,
> > > > > 
> > > > > I have a mceusb compatible transceiver that only seems to work with
> > > > > certain computers.  I'm testing this on centos7 (3.10.0) and fedora23
> > > > > (4.4.7).
> > > > > 
> > > > > The only difference I can see is that the working computer shows
> > > > > "using uhci_hcd" and the non working shows "using xhci_hcd".
> > > > > 
> > > > > Here's the dmesg output of the non-working version:
> > > > > 
> > > > > ---------------------
> > > > > 
> > > > > [  217.951079] usb 1-5: new full-speed USB device number 10 using 
> > > > > xhci_hcd
> > > > > [  218.104087] usb 1-5: device descriptor read/64, error -71
> > > > > [  218.371010] usb 1-5: config 1 interface 0 altsetting 0 endpoint 
> > > > > 0x1 has an invalid bInterval 0, changing to 32
> > > > > [  218.371019] usb 1-5: config 1 interface 0 altsetting 0 endpoint 
> > > > > 0x81 has an invalid bInterval 0, changing to 32
> > > > 
> > > > That's odd. Can you post a "lsusb -vvv" of the device please?
> > > > 
> > > 
> > > Sure.
> > > 
> > > -------------------
> > > 
> > > Bus 002 Device 009: ID 1784:0006 TopSeed Technology Corp. eHome Infrared 
> > > Transceiver
> > > Device Descriptor:
> > >   bLength                18
> > >   bDescriptorType         1
> > >   bcdUSB               2.00
> > >   bDeviceClass            0 
> > >   bDeviceSubClass         0 
> > >   bDeviceProtocol         0 
> > >   bMaxPacketSize0         8
> > >   idVendor           0x1784 TopSeed Technology Corp.
> > >   idProduct          0x0006 eHome Infrared Transceiver
> > >   bcdDevice            1.02
> > >   iManufacturer           1 TopSeed Technology Corp.
> > >   iProduct                2 eHome Infrared Transceiver
> > >   iSerial                 3 TS004RrP
> > >   bNumConfigurations      1
> > >   Configuration Descriptor:
> > >     bLength                 9
> > >     bDescriptorType         2
> > >     wTotalLength           32
> > >     bNumInterfaces          1
> > >     bConfigurationValue     1
> > >     iConfiguration          0 
> > >     bmAttributes         0xa0
> > >       (Bus Powered)
> > >       Remote Wakeup
> > >     MaxPower              100mA
> > >     Interface Descriptor:
> > >       bLength                 9
> > >       bDescriptorType         4
> > >       bInterfaceNumber        0
> > >       bAlternateSetting       0
> > >       bNumEndpoints           2
> > >       bInterfaceClass       255 Vendor Specific Class
> > >       bInterfaceSubClass    255 Vendor Specific Subclass
> > >       bInterfaceProtocol    255 Vendor Specific Protocol
> > >       iInterface              0 
> > >       Endpoint Descriptor:
> > >         bLength                 7
> > >         bDescriptorType         5
> > >         bEndpointAddress     0x01  EP 1 OUT
> > >         bmAttributes            3
> > >           Transfer Type            Interrupt
> > >           Synch Type               None
> > >           Usage Type               Data
> > >         wMaxPacketSize     0x0020  1x 32 bytes
> > >         bInterval               0
> > 
> > That's wrong indeed. It might be interesting to see if there is anything
> > in the xhci debug messages with (in Fedora 23):
> > 
> > echo "file xhci*.c +p" > /sys/kernel/debug/dynamic_debug/control
> > echo "file mceusb.c +p" > /sys/kernel/debug/dynamic_debug/control
> > 
> > And then plug in the receiver, and try to send IR to it with a remote.
> > You should have quite a few kernel messages in the journal.
> 
> Here's the output after enabling the debug options, plugging in the
> receiver, running lircd, and pressing some remote buttons:
>

[snip]

> 
> I'm not sure what to look for... ?
> 
> > 
> > >       Endpoint Descriptor:
> > >         bLength                 7
> > >         bDescriptorType         5
> > >         bEndpointAddress     0x81  EP 1 IN
> > >         bmAttributes            3
> > >           Transfer Type            Interrupt
> > >           Synch Type               None
> > >           Usage Type               Data
> > >         wMaxPacketSize     0x0020  1x 32 bytes
> > >         bInterval               0
> > > Device Status:     0x0001
> > >   Self Powered
> > > 
> > > -------------------
> > > 
> > > Also, here's a link to a response on the lirc list:
> > > 
> > > https://sourceforge.net/p/lirc/mailman/message/35039126/
> > 
> > That seems suggest that mode2 works but lirc does not. It would be nice
> > if that could be narrowed down a bit.
> 
> That message above links to some other threads describing the issue.
> Here's a post with a patch that supposedly works:
> 
> http://www.gossamer-threads.com/lists/mythtv/users/587930
> 
> No idea if that's the "correct" way to fix this.
> 
> I'll be trying that out and then report back...

Indeed, this patch does fix the issue:

----------------------

diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c
index 31ccdcc..03321d4 100644
--- a/drivers/usb/core/config.c
+++ b/drivers/usb/core/config.c
@@ -247,7 +247,7 @@ static int usb_parse_endpoint(struct device *ddev, int 
cfgno, int inum,
                        /* For low-speed, 10 ms is the official minimum.
                         * But some "overclocked" devices might want faster
                         * polling so we'll allow it. */
-                       n = 32;
+                       n = 10;
                        break;
                }
        } else if (usb_endpoint_xfer_isoc(d)) {


----------------------

Is this change appropriate to be pushed upstream?  Where to go from
here?

Wade
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to