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 41996 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 -,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 - for those who are interested.
USB ID listing is available here -

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

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

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 - 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)

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 ( ) , 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_301B 301B
USB\VID_0AC8&PID_305B 305B
USB\VID_0ac8&PID_0321 VC0321
USB\VID_0ac8&PID_0323 VC0323
USB\VID_0ac8&PID_0323 ZC0323P
USB\VID_0ac8&PID_0328 ZC0328
USB\VID_0ac8&PID_0326 ZC0326

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 -

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


SN9C101 based -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -

SN9C325 based -
USB\VID_0c45&PID_612a ; SN9C325 + OV7648 + POx1030xC + SOI768 + PO2030N + OV7660 + OV7670 + HV7131R
USB\VID_0c45&PID_6128 ; SN9C325 + OM6802

Sonix SNP2UVC based -
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 -
USB\VID_0c45&PID_6160 ; SN9C325
USB\VID_0c45&PID_6143 ; SN9C120 //SP80708
USB\VID_0c45&PID_614a ; SN9C120B + ADCM6211/ADCM1700

VID_05A9 OmniVision

CNLTF A380 based -

SunPlus (凌阳) CA533A based -

SunPlus (凌阳) CA504A

SunPlus (凌阳) CA536A
USB\VID_04FC&PID_5360 -

SunPlus (凌阳) SPCA561
USB\VID_04fc&PID_0561 -

SunPlus (凌阳) Ca522B
USB\VID_04FC&PID_2000 -

SunPlus (凌阳) CA2001
USB\VID_04FC&PID_2001 -

SunPlus (凌阳) SPCA1528
USB\VID_04FC&PID_1528 -

SunPlus (凌阳) SPUVCb
USB\VID_04FC&PID_2700 -

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