Quoting Hans Petter Selasky <hsela...@c2i.net>:
On Saturday 24 April 2010 21:18:09 maill...@diode.be wrote:
Quoting Hans Petter Selasky <hsela...@c2i.net>:
> Hi,
>
>> For both Micron cameras, #webcamd -B just gives `Cannot find USB
>> device'.
>
> This usually happens when the webcamd is not listed.
>
>> dmesg output for the Mightex camera (MT9M001 chip):
>> ugen3.2: <Mightex> at usbus3
>>
>> and usbconfig -d ugen3.2 dump_device_desc gives:
>> ugen3.2: <USB-MT9M001-2 Mightex> at usbus3, cfg=0 md=HOST spd=HIGH
>> (480Mbps) pwr=ON
>>
>>     bLength = 0x0012
>>     bDescriptorType = 0x0001
>>     bcdUSB = 0x0200
>>     bDeviceClass = 0x0000
>>     bDeviceSubClass = 0x0000
>>     bDeviceProtocol = 0x0000
>>     bMaxPacketSize0 = 0x0040
>>     idVendor = 0x04b4
>>     idProduct = 0x0228
>>     bcdDevice = 0x0000
>>     iManufacturer = 0x0001  <Mightex>
>>     iProduct = 0x0002  <USB-MT9M001-2>
>>     iSerialNumber = 0x0000  <no string>
>>     bNumConfigurations = 0x0001
>>
>>
>
> Hi,
>
> I did a little bit of grepping, and I think you need to patch the
> following file to get your webcam working:
>
> v4l-dvb/linux/drivers/media/video/gspca/sn9c20x.c
>
> You can use this entry as an example:
>
> {USB_DEVICE(0x0c45, 0x6240), SN9C20X(MT9M001, 0x5d, 0)},
>
> The iProduct dump indicates this is the right place to hack for the
> MT9M001 one :-)
>
> --HPS

I added
{USB_DEVICE(0x04b4, 0x0228), SN9C20X(MT9M001, 0x5d, 0)},
to the list, with 0x5d as i2c address as the other two MT9M001 entries
have it too. After re-making ulinux and using the new webcamd from
that directory, I get

Attached ugen3.2[0] to cuse init 0
Cannot find USB device


After you add that USB_DEVICE() entry, the following code should be called.

Try adding

CFLAGS+= -g

in the Makefile.

Then run webcamd via gdb.

In gdb type:

break gspca_dev_probe
run

at first break:

next

If you don't get the break, you're running an older version of webcamd. Try
svn up! You might have to do:

make fetch_clean
make fetch

cd patches/
./do_patch.sh

After svn up.

/* -- device connect -- */
static int sd_probe(struct usb_interface *intf,
                    const struct usb_device_id *id)
{
        return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd),
                                THIS_MODULE);
}

--HPS


Thanks. I updated ports and svn upped the webcamd code once more, and now I have pwcview working again. Below is the output of gdb with the MT9M001 camera, with the USB_DEVICE() added to sn9c20x.c

Maybe one more thing: I checked the hardware, and the bridge of (both) cameras is a CY7C68013(A) (a.k.a. Cypress FX2) microprocessor, not a SN9C20x. Its behaviour will depend on the firmware, so this may become difficult to get to work, and I guess this has more to do with v4l than with freebsd-usb. Yet, I noticed that this bridge is sometimes integrated in webcams functioning as an OV511 replacement:
http://ovcam.org/ov511/cameras.html
I will try to find out more about what `language' it speaks in my specific cameras.

------------------------
testdoos# gdb ./webcamd
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...
(gdb) break gspca_dev_probe
Breakpoint 1 at 0x806e4a9: file /usr/home/tc/ulinux/v4l-dvb/linux/drivers/media/video/gspca/gspca.c, line 2290.
(gdb) run
Starting program: /usr/home/tc/ulinux/webcamd
[New LWP 100114]
[New Thread 28401140 (LWP 100114)]
[New Thread 28419140 (LWP 100102)]
[New Thread 28418ec0 (LWP 100115)]
[New Thread 28418d80 (LWP 100132)]
Attached ugen3.2[0] to cuse unit 0
[New Thread 28418c40 (LWP 100139)]
[Switching to Thread 28401140 (LWP 100114)]

Breakpoint 1, gspca_dev_probe (intf=0x285b82b4, id=0x813c020,
    sd_desc=0x8139be0, dev_size=1808, module=0x0)
at /usr/home/tc/ulinux/v4l-dvb/linux/drivers/media/video/gspca/gspca.c:2290
2290            struct usb_device *dev = interface_to_usbdev(intf);
(gdb) next
2293 PDEBUG(D_PROBE, "probing %04x:%04x", id->idVendor, id->idProduct);
(gdb) c
Continuing.

Program received signal SIGHUP, Hangup.
[Switching to Thread 28418c40 (LWP 100139)]
0x28288f3f in poll () from /lib/libc.so.7
(gdb) c
Continuing.
[Thread 28418c40 (LWP 100139) exited]
[New Thread 28418c40 (LWP 100139)]
Cannot find USB device

Program exited with code 01.
(gdb) quit
---------------------------------
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to