webcamd: usb dvb-t tuner needs to be re-plugged (after boot/reboot) to work.

App Deb appdebgr at gmail.com
Sat Oct 30 17:51:46 UTC 2010


Nice,

I wasn't able to find something that links my usb idVendor/Product to
cold/warm states (not very good comments and not much time), however in:

drivers/media/dvb/dvb-usb/dvb-usb-init.c

I found a line:

if (cold)

and replaced it with...

if (1)

and guess what, it works perfectly now, many thanks Hans.


On Sat, Oct 30, 2010 at 6:07 PM, Hans Petter Selasky <hselasky at c2i.net>wrote:

> On Saturday 30 October 2010 15:54:14 App Deb wrote:
> > OK, first I tried usbconfig -d 2.2 reset (or "power_off" and "power_on")
> > but it didn't work. The tuner was still not working after I restarted
> > webcamd.
> >
> >
> > However webcamd with HAVE_DEBUG gives some useful information:
> >
> > - webcamd log when IT IS NOT working (first start after boot/reboot
> without
> > manually replugging device):
> >
> > Attached ugen2.2[0] to cuse unit 0
> > dvb-usb: found a 'Gigabyte U8000-RH' in warm state.
> > dvb-usb: will pass the complete MPEG2 transport stream to the software
> > demuxer.
> > DVB: registering new adapter (Gigabyte U8000-RH)
> > DVB: registering adapter 0 frontend 0 (DiBcom 7000PC)...
> > xc2028 130-0061: creating new instance
> > xc2028 130-0061: type set to XCeive xc2028/xc3028 tuner
> > dvb-usb: schedule remote query interval to 50 msecs.
> > dvb-usb: Gigabyte U8000-RH successfully initialized and connected.
> > Creating /dev/dvb/adapter0/demux0
> > Creating /dev/dvb/adapter0/dvr0
> > Creating /dev/dvb/adapter0/frontend0
> >
> >
> > webcamd log when it IS working (start webcamd after I manually re-plug
> usb
> > device):
> >
> >  Attached ugen2.2[0] to cuse unit 0
> > dvb-usb: found a 'Gigabyte U8000-RH' in cold state, will try to load a
> > firmware
> > Loading firmware at '/boot/modules/dvb-usb-dib0700-1.20.fw', f=7
> > dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.20.fw'
> > dib0700: firmware started successfully.
> > dvb-usb: found a 'Gigabyte U8000-RH' in warm state.
> > dvb-usb: will pass the complete MPEG2 transport stream to the software
> > demuxer.
> > DVB: registering new adapter (Gigabyte U8000-RH)
> > DVB: registering adapter 0 frontend 0 (DiBcom 7000PC)...
> > xc2028 130-0061: creating new instance
> > xc2028 130-0061: type set to XCeive xc2028/xc3028 tuner
> > dvb-usb: schedule remote query interval to 50 msecs.
> > dvb-usb: Gigabyte U8000-RH successfully initialized and connected.
> > Creating /dev/dvb/adapter0/demux0
> > Creating /dev/dvb/adapter0/dvr0
> > Creating /dev/dvb/adapter0/frontend0
> >
> >
> > - - -
> >
> > As you see, when webcamd first finds the usb tuner in "cold state" and
> > loads the firmware it works, but when it finds it in warm state (and
> > bypasses firmware load) it doesn't.
> >
> > Also sometimes a message appears like that:
> >
> > dvb-usb: Gigabyte U8000-RH successfully initialized and connected.
> > dib0700: rc submit urb failed
> >
> > But even when it doesn't appear, the tuner still doesn't work if it was
> > started from warm-state.
> >
> >
> >
> >
> > Is there any way to force webcamd to behave like the tuner is always in
> > Cold State to fix this? As I said the usbconfig command didn't seem to
> > work for that.
> >
> > Thanks.
> >
> > On Sat, Oct 30, 2010 at 3:02 PM, Hans Petter Selasky
> <hselasky at c2i.net>wrote:
> > > On Saturday 30 October 2010 10:54:55 App Deb wrote:
> > > > Great work on webcamd, I easily managed to get my usb dvb-t working
> > > > with VLC. It works great but there is a slight problem.
> > > >
> > > > For it to work it needs to be unplugged and plugged again once after
> a
> > > > FreeBSD boot or reboot.
> > > >
> > > > My usb dvb-t uses 2 firmware files: "dvb-usb-dib0700-1.20.fw" and
> > > > "xc3028-v27.fw" (I have them in /boot/modules of course).
> > > >
> > > > Looking at the webcamd program output, The dib0700 firmware doesn't
> > > > seem
> > >
> > > to
> > >
> > > > be loaded if my usb tuner was already connected when FreeBSD booted.
> > > > The result is that when trying to view TV, all channels have garbled
> > > > video
> > >
> > > and
> > >
> > > > audio output (if they work at all).
> > > >
> > > > Replugging it on a live system, correctly shows a webcamd message
> > >
> > > "Loading
> > >
> > > > dvb-usb-dib0700-1.20.fw firmware.." and from there on the usb tuner
> > > > works perfectly.
> > > >
> > > > I don't exactly know the internal workings of USB tuners, but for
> some
> > > > reason the tuner itself seems to need a full power-cycle (replug) to
> be
> > > > initialized properly, or maybe webcamd "thinks" that the firmware is
> > > > already loaded when it is not (when FreeBSD boots).
> > > >
> > > > Is there any workaround/solution for this? Is there any command that
> > > > does some virtual (software) re-plug of a usb device. I could use it
> > > > in a startup script to solve the problem.
> > > >
> > > > Thanks, keep up the good work on webcamd, great project.
> > > > _______________________________________________
> > > > freebsd-multimedia at freebsd.org mailing list
> > > > http://lists.freebsd.org/mailman/listinfo/freebsd-multimedia
> > > > To unsubscribe, send any mail to
> > > > "freebsd-multimedia-unsubscribe at freebsd.org"
> > >
> > > Hi,
> > >
> > > 1) You can try to compile webcamd using the "make HAVE_DEBUG=YES".
> > >
> > > 2) Also try: usbconfig -d X.Y reset
> > >
> > > --HPS
>
> Hi,
>
> If you grep for the idVendor and idProduct as shown by usbconfig -d X.Y
> dump_device_desc, in the webcamd sources, you will probably find the driver
> and can by-pass the warm check by inspecting the code.
>
> --HPS
>


More information about the freebsd-multimedia mailing list