Hi Mauro, It turns out this patch breaks DualHD multiple tuner capability. When alt mode is set in start_streaming it immediately kills the other tuners stream. Essentially both tuners cannot be used together when this is applied. I unfortunately don't have a HVR-950 to try and fix the original regression better. Can you please take another look at this? Until this is sorted, DualHD are effectively broken. Cheers, Brad On 2018-03-09 06:21, Mauro Carvalho Chehab wrote: > Changeset be7fd3c3a8c5 ("media: em28xx: Hauppauge DualHD second tuner > functionality") removed the logic with sets the alternate for the DVB > device. Without setting the right alternate, the device won't be > able to submit URBs, and userspace fails with -EMSGSIZE: > > ERROR DMX_SET_PES_FILTER failed (PID = 0x2000): 90 Message too long > > Tested with Hauppauge HVR-950 model A1C0. > > Cc: Brad Love <brad@xxxxxxxxxxxxxxxx> > Fixes: be7fd3c3a8c5 ("media: em28xx: Hauppauge DualHD second tuner functionality") > Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> > --- > drivers/media/usb/em28xx/em28xx-dvb.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c > index a54cb8dc52c9..2ce7de1c7cce 100644 > --- a/drivers/media/usb/em28xx/em28xx-dvb.c > +++ b/drivers/media/usb/em28xx/em28xx-dvb.c > @@ -199,6 +199,7 @@ static int em28xx_start_streaming(struct em28xx_dvb *dvb) > int rc; > struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv; > struct em28xx *dev = i2c_bus->dev; > + struct usb_device *udev = interface_to_usbdev(dev->intf); > int dvb_max_packet_size, packet_multiplier, dvb_alt; > > if (dev->dvb_xfer_bulk) { > @@ -217,6 +218,7 @@ static int em28xx_start_streaming(struct em28xx_dvb *dvb) > dvb_alt = dev->dvb_alt_isoc; > } > > + usb_set_interface(udev, dev->ifnum, dvb_alt); > rc = em28xx_set_mode(dev, EM28XX_DIGITAL_MODE); > if (rc < 0) > return rc;