Hi Mauro, this is the output of lsusb -v of my device with demodulator MT352 which works with EM2880. Bus 002 Device 002: ID 0ccd:0042 TerraTec Electronic GmbH Cinergy Hybrid T XS Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0ccd TerraTec Electronic GmbH idProduct 0x0042 Cinergy Hybrid T XS bcdDevice 1.00 iManufacturer 2 TerraTec Electronic GmbH iProduct 1 Cinergy Hybrid T USB XS iSerial 0 bNumConfigurations 1 Regards, Giovanni > Sent: Friday, June 23, 2017 at 12:38 PM > From: "Mauro Carvalho Chehab" <mchehab@xxxxxxxxxxxxx> > To: "Hans Verkuil" <hverkuil@xxxxxxxxx> > Cc: juvann@xxxxxxxxxxx, linux-media@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] [media] em28xx TerraTec Cinergy Hybrid T USB XS with demodulator MT352 is not detect by em28xx > > Em Fri, 23 Jun 2017 11:22:50 +0200 > Hans Verkuil <hverkuil@xxxxxxxxx> escreveu: > > > Hi Giovanni, > > > > On 06/10/17 09:13, juvann@xxxxxxxxxxx wrote: > > > TerraTec Cinergy Hybrid T USB XS with demodulator MT352 stop working with kernel 3.xx and newer. > > > I have already sent this patch without a success reply, I hope this time you can accept it. > > > > > > --- /usr/src/linux-3.14.3/drivers/media/usb/em28xx/em28xx-cards.c.orig 2014-05-06 16:59:58.000000000 +0200 > > > +++ /usr/src/linux-3.14.3/drivers/media/usb/em28xx/em28xx-cards.c 2014-05-07 15:18:31.719524453 +0200 > > > @@ -2233,7 +2233,7 @@ > > > { USB_DEVICE(0x0ccd, 0x005e), > > > .driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS }, > > > { USB_DEVICE(0x0ccd, 0x0042), > > > - .driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS }, > > > + .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS }, > > > { USB_DEVICE(0x0ccd, 0x0043), > > > .driver_info = EM2870_BOARD_TERRATEC_XS }, > > > { USB_DEVICE(0x0ccd, 0x008e), /* Cinergy HTC USB XS Rev. 1 */ > > > > > > This patch is working also on kernel 4.xx I have tested kernel 4.3 and 4.9 > > > > I checked the commit that changed the original EM2880_BOARD_TERRATEC_HYBRID_XS > > to EM2882_BOARD_TERRATEC_HYBRID_XS and it says this: > > > > commit 9124544320bd36d5aa21769d17a5781ba729aebf > > Author: Philippe Bourdin <richel@xxxxxxxxxxxxxx> > > Date: Sun Oct 31 09:57:58 2010 -0300 > > > > [media] Terratec Cinergy Hybrid T USB XS > > > > I found that the problems people have reported with the USB-TV-stick > > "Terratec Cinergy Hybrid T USB XS" (USB-ID: 0ccd:0042) > > are coming from a wrong header file in the v4l-sources. > > > > Attached is a diff, which fixes the problem (tested successfully here). > > Obviously the USB-ID has been associated with a wrong chip: EM2880 > > instead of EM2882, which would be correct. > > > > Reported-by: Philippe Bourdin <richel@xxxxxxxxxxxxxx> > > Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> > > > > So it looks like there are two variants with the same USB ID: one uses > > the EM2880, one uses the EM2882. Since nobody else complained I expect > > that most devices with this USB ID are in fact using the EM2882. > > > > I won't apply this patch, since that would break it for others. > > > > The best solution for you is to explicitly set the card using the > > 'card=11' em28xx module option. > > > > I've CC-ed Mauro in case he knows a better solution. > > If the newest original driver from the manufacturer supports both > versions, perhaps the *.INF file there would help to identify what > version is there, by using the USB revision numbers. > > We have this for USB ID 1554:5010, for example. That specific USB ID > actually use two different drivers, depending on the review. > > Either cx231xx: > > {USB_DEVICE_VER(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD, 0x4000, 0x4001), > .driver_info = CX231XX_BOARD_PV_PLAYTV_USB_HYBRID}, > > or dib0700: > > { USB_DEVICE_VER(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD, 0x000, 0x3f00) }, > > Unfortunately, I don't have any contacts at Terratec anymore, so we'll > need to get it the hard way: people with this hardware should report the > version of the hardware, by using lsusb -v. It should report something > like: > > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub > Couldn't open device, some information will be missing > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 9 Hub > bDeviceSubClass 0 > bDeviceProtocol 1 Single TT > bMaxPacketSize0 64 > idVendor 0x1d6b Linux Foundation > idProduct 0x0002 2.0 root hub > bcdDevice 4.10 > iManufacturer 3 > iProduct 2 > iSerial 1 > > The USB_DEVICE_VER macro is: > > #define USB_DEVICE_VER(vend, prod, lo, hi) \ > .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, \ > .idVendor = (vend), \ > .idProduct = (prod), \ > .bcdDevice_lo = (lo), \ > .bcdDevice_hi = (hi) > > So, it basically uses the field "bcdDevice" in order to detect for a > specific hardware version. > > Please notice that, ideally, we need the "bcdDevice" data for both the > em2880 and em2882 versions in to fix it and be sure that the > manufacturer changed it on the newest version. The *.INF file may > contain such information, with would make our lives a way easier. > > Regards, > Mauro >