Date: Sun, 25 Apr 2010 09:44:24 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: freebsd-usb@freebsd.org Subject: Re: webcamd and cameras with Micron (MT9M0x1 and MT9T0x1) chips Message-ID: <201004250944.24898.hselasky@c2i.net> In-Reply-To: <20100424211809.fgn1vc5qaswkg8kk@webmail.diode.be> References: <20100424140902.4b7meoicg084g04g@webmail.diode.be> <201004241701.34223.hselasky@c2i.net> <20100424211809.fgn1vc5qaswkg8kk@webmail.diode.be>
next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 24 April 2010 21:18:09 maillist@diode.be wrote: > Quoting Hans Petter Selasky <hselasky@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 > >> > >> > >> For the MT9T031 camera (likely prototype), dmesg gives: > >> ugen3.2: <Micron> at usbus3 > >> > >> and usbconfig -d ugen3.2 dump_device_desc: > >> ugen3.2: <Demo2A Micron> 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 = 0x0634 > >> idProduct = 0x1007 > >> bcdDevice = 0x0021 > >> iManufacturer = 0x0001 <Micron> > >> iProduct = 0x0002 <Demo2A> > >> iSerialNumber = 0x0000 <no string> > >> bNumConfigurations = 0x0001 > >> > >> > >> > >> > >> Now, I have no coding skills, but thought it would be good to have a > >> look into the driver code. I hoped I would find Vendor and Product > >> id's that differed from how the camera identified, this explaining the > >> refusal to associate. But while some other v4l drivers appear to > >> contain things like {USB_DEVICE(0xXXXX, 0xXXXX), .driver_info=XXXXX}, > >> such code is absent from the mt9xxxx.c files. Instead, there is a > >> function data = reg_read(client, MT9M001_CHIP_VERSION) that does some > >> sort of identification. But this is on the i2c level, reading the chip > >> version number. I thought that for doing this, the system would > >> already need to know what Micron chip it is dealing with. > >> > >> Any thoughts would be appreciated. > > > > 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 > > Interestingly, the other (MT9T031) camera, for which nothing changed, > only states `Cannot find USB device' without returning `Attached > [...]'. The Logitech cam, which used to work, states `Attached [...]' > and then `Creating /dev/video0'. > > But for this Logitech cam, pwcview now complains `Failed to access > webcam: Device not configured'. Note that I used the webcamd from > ports before, so I must have messed something up. I updated to the > latest svn version. I will update my ports too, as this doesn't appear > to have anything to do with the change to the code I made. > > On the other hand, webcamd still returns `Cannot find USB device' for > the MT9M001 camera. Maybe simply adding the corresponding USB_DEVICE() > entry was not what you meant? 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004250944.24898.hselasky>