News:

Re-organized the forum to more cleanly delineate the development section, as the end user support side appears to have taken a life of its own!

Author Topic: Identifying what camera hardware is in your device.  (Read 30108 times)

  • No avatar
  • *****
March 03, 2011, 02:23:00 pm
How to identify whats in the camera.

Mine uses the Sonix288 driver allegedly in the default firmware.
However, if I check my USB device its really a ViMicro/Z-Star 303b.

How do I know - mostly because I recompiled my own kernel, and added usb proc device support, and looked ;)
See here - http://www.openipcam.com/forum/index.php/topic,41.0.html


If you've ever looked for drivers on the web for usb stuff, you'll be familiar with PID and VID numbers.

What are they?

VID means Vendor ID
PID means Product ID

You'll often see Windows users googling for things like VID_xxx&PID_xxx which is Microsoft's way of making something simple complicated. 

The USB Forum generally issues these.  As they cost money, some cough, ok, lots of Chinese chipset vendors don't bother with real ones, or they use other peoples.

USB  Vendor ID Pricing here - http://www.usb.org/developers/vendor/ for those who are interested.
USB ID listing is available here - http://www.linux-usb.org/usb.ids


In this case Z-Star actually does use their own. 

Z-Star's officially issued id's are as follows:

Quote
0ac8  Z-Star Microelectronics Corp.
   0301  Web Camera
   0302  ZC0302 Webcam
   0321  Vimicro generic vc0321 Camera
   0323  Luxya WC-1200 USB 2.0 Webcam
   0328  A4Tech PK-130MG
   0336  Elecom UCAM-DLQ30
   301b  ZC0301 Webcam
   303b  ZC0303 Webcam
   305b  ZC0305 Webcam
   307b  USB 1.1 Webcam
   332d  Vega USB 2.0 Camera
   3343  Sirius USB 2.0 Camera
   3420  Venus USB2.0 Camera
   c001  Sony embedded vimicro Camera
   c002  Visual Communication Camera VGP-VCC1
   c302  Vega USB 2.0 Camera
   c303  Saturn USB 2.0 Camera
   c326  Namuga 1.3M Webcam
   c33f  Webcam


If we go back to my particular device, I get this if I check whats on my hub via my ohci driver.

Manufacturer: Vimicro Corp  /  Z-Star Microelectronics Corp
Product: PC Camera
usb.c: USB device 2 (vend/prod 0xac8/0x303b) is not claimed by any active driver.
  Length              = 18
  DescriptorType      = 01
  USB version         = 1.10
  Vendor:Product      = 0ac8:303b


Vimicro / ZStar uses a vendor ID of 0xac8 as we noted above.

The product ID refers to the model of the camera.
In my case, its a 0x303b, which is the ZStar (Zhong Xing) model - 中星微301H

This can come in a variety of sensors.  I think mine is a MI360, but I haven't checked.
301P+HV7131E, 301P(L)+HV7131R, 301P(L)+MI360

Datasheets for those are here - http://www.openipcam.com/files/Data Sheets/.

They can also be referred to with their integer values (below)
usb_device.product_id = 12347 (0x303b) (int)
usb_device.vendor_id = 2760 (0xac8) (int)

Or in Microsoft terms (you can totally tell I'm going for SEO here haha)
USB\VID_0AC8&PID_303B


Luckily ZStar/ Vimicro use a relatively decent naming system - their product id is the same as their model (mostly).

As I've said a couple of times now, we can use the spca5xx drivers - spca5xx-20060501.tar.gz (  http://mxhaard.free.fr/ ) , as they support v4l and the camera.

One thing I should say is that we have a usb bus, so only usb 1.0 or usb 1.1 devices will work, not usb2 devices.

Here is a list of the various revisions in the 30x series, and links to their drivers (windows)

USB\VID_0AC8&PID_303B 301PLH http://www.drvsky.com/driver/301plh.htm
USB\VID_0AC8&PID_301B 301B http://www.drvsky.com/driver/301B.htm
USB\VID_0AC8&PID_305B 305B http://www.drvsky.com/driver/305B.htm
USB\VID_0AC8&PID_307B ZS211  http://www.drvsky.com/driver/ZS211.htm
USB\VID_0ac8&PID_0321 VC0321 http://www.drvsky.com/driver/VC0321.htm
USB\VID_0ac8&PID_0323 VC0323 http://www.drvsky.com/driver/VC0323.htm
USB\VID_0ac8&PID_0323 ZC0323P http://www.drvsky.com/driver/ZC0323P.htm
USB\VID_0ac8&PID_0328 ZC0328 http://www.drvsky.com/driver/ZC0326.htm
USB\VID_0ac8&PID_0326 ZC0326 http://www.drvsky.com/driver/ZC0326.htm

As I'm really helpful, I'll list the Vendor ID / Product ID for a whole range of USB camera's below also. 

VM332 based - http://www.drvsky.com/driver/VM332.htm
USB\VID_0ac8&PID_3313
USB\VID_0ac8&PID_0331
USB\VID_0ac8&PID_331B
USB\VID_0ac8&PID_0332
USB\VID_0ac8&PID_332D
USB\VID_0ac8&PID_3330
USB\VID_0ac8&PID_3332
USB\VID_0ac8&PID_3333
USB\VID_0ac8&PID_3340
USB\VID_0ac8&PID_3342
USB\VID_0ac8&PID_3343
USB\VID_0ac8&PID_0336
USB\VID_0ac8&PID_336D
USB\VID_0ac8&PID_3410
USB\VID_0ac8&PID_3420
USB\VID_0ac8&PID_3430
USB\VID_0ac8&PID_3440
USB\VID_0ac8&PID_3000

VID_0C45 is Sonix's Vendor ID.
Here are some of their VID/PID's

USB\VID_0c45&PID_8008 http://www.drvsky.com/driver/8008_VGA.htm
USB\VID_0C45&PID_600D http://www.drvsky.com/driver/DC-2110.htm


SN9C101 based - http://www.drvsky.com/driver/SN9C101.htm
USB\VID_0c45&PID_603f ; SN9C101 + CISVF10
USB\VID_0c45&PID_602a ; SN9C101 + HV7131 D/E
USB\VID_0c45&PID_602d ; SN9C101 + HV7131 R
USB\VID_0c45&PID_6009 ; SN9C101 + PAS106
USB\VID_0c45&PID_6005 ; SN9C101 + TAS5110
USB\VID_0c45&PID_6019 ; SN9C101 + OV7630
USB\VID_0c45&PID_6011 ; SN9C101 + OV6650
USB\VID_0c45&PID_6007 ; SN9C101 + TAS5110D


SN9C102 Based - http://www.drvsky.com/driver/SN9C102.htm
USB\VID_0c45&PID_602c ; SN9C102 + OV7630
USB\VID_0c45&PID_6030 ; SN9C102 + MI0343 MI0360 MI0330
USB\VID_0c45&PID_6024 ; SN9C102 + TAS5130
USB\VID_0c45&PID_6025 ; SN9C102 + TAS5130
USB\VID_0c45&PID_6028 ; SN9C102 + PAS202
USB\VID_0c45&PID_6029 ; SN9C102 + PAS106

SN9C102P based - http://www.drvsky.com/driver/SN9C102P.htm
USB\VID_0c45&PID_6040 ; SN9C102P + MI0360
USB\VID_0c45&PID_607a ; SN9C102P + OV7648
USB\VID_0c45&PID_607c ; SN9C102P + HV7131R
USB\VID_0c45&PID_607e ; SN9C102P + OV7630
USB\VID_0c45&PID_607b ; SN9C102P + OV7660

SN9C103 based - http://www.drvsky.com/driver/SN9C103.htm
USB\VID_0c45&PID_608e ;CISVF10
USB\VID_0c45&PID_6083 ;HY7131D/E
USB\VID_0c45&PID_608c ;HY7131/R
USB\VID_0c45&PID_608f ;OV7630
USB\VID_0c45&PID_60af ;PAS202
USB\VID_0c45&PID_60a8 ;PAS106
USB\VID_0c45&PID_6082 ;MI0343,MI0360
USB\VID_0c45&PID_60aa ;TAS5130
USB\VID_0c45&PID_6025 ;TAS5130

SN9C105 based - http://www.drvsky.com/driver/SN9C105.htm
USB\VID_0c45&PID_60c0&MI_00 ; SN9C105 + MI0360
USB\VID_0c45&PID_60fa&MI_00 ; SN9C105 + OV7648
USB\VID_0c45&PID_60fc&MI_00 ; SN9C105 + HV7131R
USB\VID_0c45&PID_60fe&MI_00 ; SN9C105 + OV7630
USB\VID_0c45&PID_60fb&MI_00 ; SN9C105 + OV7660
USB\VID_0c45&PID_60f2&MI_00 ; SN9C105 + OV7670
USB\VID_0c45&PID_60ef&MI_00 ; SN9C105 + ICM105C
USB\VID_0c45&PID_60cc&MI_00 ; SN9C105 + HV7131GP
USB\VID_0c45&PID_60ec&MI_00 ; SN9C105 + MO4000
USB\VID_0c45&PID_60c8&MI_00 ; SN9C105 + OM6802
USB\VID_0c45&PID_60c2&MI_00 ; SN9C105 + P1030xC
USB\VID_0c45&PID_60ce&MI_00 ; SN9C105 + SP80708

SN9C110 based - http://www.drvsky.com/driver/SN9C110.htm
USB\VID_0c45&PID_612e ; SN9C110 + OV7630
USB\VID_0c45&PID_612f ; SN9C110 + ICM105C
USB\VID_0c45&PID_6122 ; SN9C110 + ICM105C
USB\VID_0c45&PID_612a ; SN9C110 + OV7648
USB\VID_0c45&PID_6123 ; SN9C110 + SanyoCCD
USB\VID_0c45&PID_612c ; SN9C110 + MO4000

SN9C120 based - http://www.drvsky.com/driver/SN9C120.htm
USB\VID_0c45&PID_6130 ; 120+MI0360/MT9V111/MI0360B
USB\VID_0c45&PID_613a ; SN9C120 + OV7648
USB\VID_0c45&PID_613c ; SN9C120 + HV7131R
USB\VID_0c45&PID_613e ; SN9C120 + OV7630
USB\VID_0c45&PID_6132 ; SN9C120 /SN9C120B+ OV7670
USB\VID_0c45&PID_613b ; SN9C120 + OV7660
USB\VID_0c45&PID_6138 ; SN9C120 + MO4000
USB\VID_0c45&PID_6108 ; SN9C120 + OM6802
USB\VID_0c45&PID_6148 ; SN9C120B + OM6802
USB\VID_0c45&PID_6102 ; SN9C120 + PO2030N/GC0305
USB\VID_0c45&PID_6142 ; SN9C120B + PO2030N/GC0305
USB\VID_0c45&PID_6143 ; SN9C120B + SP80708
USB\VID_0c45&PID_614c ; SN9C120B + GC0306

SN9C128 based - http://www.drvsky.com/driver/SN9C128.htm
USB\VID_0c45&PID_6100 ; MI0360 / MT9V111 / MI0360B
USB\VID_0c45&PID_610a ; OV7648
USB\VID_0c45&PID_610c ; HV7131R
USB\VID_0c45&PID_610e ; OV7630
USB\VID_0c45&PID_610b ; OV7660

SN9C201 based - http://www.drvsky.com/driver/SN9C201.htm
USB\VID_0c45&PID_6240 ; SN9C201 + MI1300
USB\VID_0c45&PID_6242 ; SN9C201 + MI1310
USB\VID_0c45&PID_624e ; SN9C201 + SOI968
USB\VID_0c45&PID_624f ; SN9C201 + OV9650
USB\VID_0c45&PID_6243 ; SN9C201 + S5K4AAFX
USB\VID_0c45&PID_624b ; SN9C201 + CX1332
USB\VID_0c45&PID_627f ; EEPROM
USB\VID_0c45&PID_6248 ; SN9C201 + OV9655
USB\VID_0c45&PID_624c ; SN9C201 + MI1320
USB\VID_0c45&PID_6270 ; SN9C201 + MI0360\MT9V111
USB\VID_0c45&PID_627c ; SN9C201 + HV7131R
USB\VID_0c45&PID_627b ; SN9C201 + OV7660
USB\VID_0c45&PID_627a ; SN9C201 + S5K53BEB
USB\VID_0c45&PID_6260 ; SN9C201 + OV7670ISP
USB\VID_0c45&PID_6262 ; SN9C201 + OM6802

SN9C202 based - http://www.drvsky.com/driver/SN9C202.htm
USB\VID_0c45&PID_6280&MI_00 ; SN9C202 + MI1300
USB\VID_0c45&PID_6282&MI_00 ; SN9C202 + MI1310
USB\VID_0c45&PID_628e&MI_00 ; SN9C202 + SOI968
USB\VID_0c45&PID_628f&MI_00 ; SN9C202 + OV9650
USB\VID_0c45&PID_6288&MI_00 ; SN9C202 + OV9655
USB\VID_0c45&PID_628a&MI_00 ; SN9C202 + ICM107
USB\VID_0c45&PID_628c&MI_00 ; SN9C202 + MI1320
USB\VID_0c45&PID_62b0&MI_00 ; SN9C202 + MI0360\MT9V111
USB\VID_0c45&PID_62bc&MI_00 ; SN9C202 + HV7131R
USB\VID_0c45&PID_62bb&MI_00 ; SN9C202 + Ov7660
USB\VID_0c45&PID_62ba&MI_00 ; SN9C202 + S5K53BEB
USB\VID_0c45&PID_628b&MI_00 ; SN9C202 + CX1332
USB\VID_0c45&PID_6283&MI_00 ; SN9C202 + S5K4AAFX
USB\VID_0c45&PID_62a0&MI_00 ; SN9C202 + Ov7670ISP
USB\VID_0c45&PID_62a2&MI_00 ; SN9C202 + OM6802

SN9C255 based - http://www.drvsky.com/driver/SN9C255.htm
USB\VID_0C45&PID_62C0
USB\VID_0C45&PID_62C1
USB\VID_0C45&PID_62E0

SN9C325 based - http://www.drvsky.com/driver/SN9C325.htm
USB\VID_0c45&PID_612a ; SN9C325 + OV7648 + POx1030xC + SOI768 + PO2030N + OV7660 + OV7670 + HV7131R
USB\VID_0c45&PID_6128 ; SN9C325 + OM6802

Sonix SNP2UVC based - http://www.drvsky.com/driver/SNP2UVC.htm
USB\VID_0C45&PID_62C0 ;SN9C211/213/230
USB\VID_0C45&PID_6300 ;SN9C216/236
USB\VID_0C45&PID_6310 ;SN9C230C
USB\VID_0C45&PID_62E1 ;SN9C255 non-audio
USB\VID_0C45&PID_62F0 ;SN9C210/233
USB\VID_0C45&PID_62C1 ;SN9C212
USB\VID_0C45&PID_62E0 ;SN9C255
USB\VID_0C45&PID_6301 ;SN9C226
USB\VID_0C45&PID_62F1 ;SN9C253


SNP325 based - http://www.drvsky.com/driver/snp325.htm
USB\VID_0c45&PID_6160 ; SN9C325
USB\VID_0c45&PID_6143 ; SN9C120 //SP80708
USB\VID_0c45&PID_614a ; SN9C120B + ADCM6211/ADCM1700


VID_05A9 OmniVision
USB\VID_05A9&PID_A518 http://www.drvsky.com/driver/OV518+.htm
USB\VID_05A9&PID_A511 http://www.drvsky.com/driver/OV511+.htm
USB\VID_05A9&PID_4519 http://www.drvsky.com/driver/OV530.htm
USB\VID_05a9&PID_0519 http://www.drvsky.com/driver/OV530.htm
USB\VID_05a9&PID_0531 http://www.drvsky.com/driver/OV534.htm
USB\VID_05a9&PID_0550 http://www.drvsky.com/driver/OV550.htm
USB\VID_05a9&PID_2800 http://www.drvsky.com/driver/PID_2800.htm

CNLTF A380 based - http://www.drvsky.com/driver/CNLTF_A380.htm
USB\VID_1B17&PID_6100
USB\VID_1B17&PID_6101
USB\VID_1B17&PID_6110
USB\VID_1B17&PID_6111


SunPlus (凌阳) CA533A based - http://www.drvsky.com/driver/CA533A.htm
USB\VID_03F0&PID_6902
USB\VID_052B&PID_1708


SunPlus (凌阳) CA504A
USB\VID_04FC&PID_504A - http://www.drvsky.com/driver/CA504A.htm

SunPlus (凌阳) CA536A
USB\VID_04FC&PID_5360 - http://www.drvsky.com/driver/CA536A.htm

SunPlus (凌阳) SPCA561
USB\VID_04fc&PID_0561 - http://www.drvsky.com/driver/SPCA561.htm

SunPlus (凌阳) Ca522B
USB\VID_04FC&PID_2000 - http://www.drvsky.com/driver/Ca522B.htm

SunPlus (凌阳) CA2001
USB\VID_04FC&PID_2001 - http://www.drvsky.com/driver/CA2001.htm

SunPlus (凌阳) SPCA1528
USB\VID_04FC&PID_1528 - http://www.drvsky.com/driver/SPCA1528.htm

SunPlus (凌阳) SPUVCb
USB\VID_04FC&PID_2700 - http://www.drvsky.com/driver/SPUVCb.htm

So, whats in your device?

Last note - The actual Sonix 288 is a usb2 device - its VID / PID is VID_0C45/ PID_62C0, so its definitively NOT going to be in our camera!
« Last Edit: March 03, 2011, 02:30:30 pm by admin »

March 03, 2011, 03:42:57 pm
What about 2.0 USB cam's that are supposed to be 1.1 backwards compatible?

  • No avatar
  • *****
March 04, 2011, 02:38:18 am
I think you'll find that pretty much most stuff labelled USB2 actually isn't especially if you look at webcam chipset specs, and the labels on products.

The main difference was USB1 to USB1.1
With low speed at 1.5 Mbit/sec, and full speed at 12 Mbit/sec

There are USB2 products, and those are usually the 1.3Megapixel and above sized ones.
In the embedded arena its usually USB1.1 though, especially in the lower end devices.

Ours uses a VGA size sensor.

I also think that we're unlikely to get a USB2 device working nicely in an embedded environment like ours, we don't really have enough oomph.

ARM9 or ARM11 should be ok, ARM7 - its pushing it.

We also don't have drivers for 2.4 for a lot of the USB2 ones, as they use features we don't have in our kernel.

If you wanted to redo the BSP into Linux 2.6, get it running, manage to fit everything in the camera flash, then sure. 
There are other products that are more suitable though, and already have 2.6 kernels available.

My advice is don't bother.  Its a waste of time to do it, especially when there are already SoC's out there that are similarly priced and do it already.

I know I'm being negative, but I'm also being realistic.


March 04, 2011, 10:05:40 am
There are better camera's out there that do run on 2.6? Enlighten us :D