PixArt PAC7301/PAC7302: Difference between revisions
(Add Genius FaceCam 300) |
m (value 0x13) |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1,017: | Line 1,017: | ||
If you have a kernel version 2.6.32 or before then use gspca_pac7311 instead of gspca_pac7302. |
If you have a kernel version 2.6.32 or before then use gspca_pac7311 instead of gspca_pac7302. |
||
The support for snapshot button is available since 28 Jan 2010 in one of the [http://linuxtv.org/ |
The support for snapshot button is available since 28 Jan 2010 in one of the [http://git.linuxtv.org/jfrancois/gspca.git/commit/aed6f1b5fe4e95cf8a9fc149e25041aa8cc7c78a|development repositories]. The patch was merged as commit [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=aed6f1b5fe4e95cf8a9fc149e25041aa8cc7c78a aed6f1b5fe4e95cf8a9fc149e25041aa8cc7c78a] to the mailine and it is included in Linux kernel starting with the stable release 2.6.37, released on 4 Jan 2011. |
||
===Sample Kernel Output=== |
===Sample Kernel Output=== |
||
Line 1,088: | Line 1,088: | ||
|- |
|- |
||
|0 |
|0 |
||
|0x70.. |
|0x70..0x71 |
||
|(unknown) |
|||
| |
|||
|- |
|||
|0 |
|||
|0x72 |
|||
|Test pattern and test overlay |
|||
| |
|||
|- |
|||
|0 |
|||
|0x73..0xa1 |
|||
|(unknown) |
|(unknown) |
||
| |
| |
||
Line 1,309: | Line 1,319: | ||
|Digital pan |
|Digital pan |
||
|} |
|} |
||
===Test pattern, test overlay=== |
|||
Register page, offset: 0, 0x72 |
|||
{| cellspacing="0" border="1" width="100%" |
|||
!7 |
|||
!6 |
|||
!5 |
|||
!4 |
|||
!3 |
|||
!2 |
|||
!1 |
|||
!0 |
|||
|- align="center" |
|||
|? |
|||
|? |
|||
|? |
|||
|TEST_OVERLAY |
|||
|colspan="4"|TEST_PATTERN |
|||
|- align="center" |
|||
|? |
|||
|? |
|||
|? |
|||
|w |
|||
|colspan="4"|w |
|||
|} |
|||
{| cellspacing="0" border="1" |
|||
!Bits |
|||
!Field |
|||
!Description |
|||
|- |
|||
|align="center"|4 |
|||
|align="center"|TEST_OVERLAY |
|||
|Test overlay<br> |
|||
0: normal operation, test overlay generation off<br> |
|||
1: test overlay on |
|||
|- |
|||
|align="center"|3-0 |
|||
|align="center"|TEST_PATTERN |
|||
|Test pattern generation:<br> |
|||
0x0: normal operation, test pattern generation off<br> |
|||
0x1: generate [http://en.wikipedia.org/wiki/White white] test pattern: the whole image is white<br> |
|||
0x2: generate [http://en.wikipedia.org/wiki/Black black] test pattern: the whole image is black<br> |
|||
0x3: generate [http://en.wikipedia.org/wiki/Red red] test pattern: the whole image is red<br> |
|||
0x4: generate [http://en.wikipedia.org/wiki/Lime_(color) lime] test pattern: the whole image is lime<br> |
|||
0x5: generate [http://en.wikipedia.org/wiki/Blue blue] test pattern: the whole image is blue<br> |
|||
0x6: generate [http://en.wikipedia.org/wiki/Aqua_(color) aqua] test pattern: the whole image is aqua<br> |
|||
0x7: generate [http://en.wikipedia.org/wiki/Fuchsia_(color) fuchsia] test pattern: the whole image is fuchsia<br> |
|||
0x8: generate [http://en.wikipedia.org/wiki/Yellow yellow] test pattern: the whole image is yellow<br> |
|||
0x9: generate test pattern with colored horizontal and vertical bars<br> |
|||
0xA: generate test pattern with small colored pixels all around the image<br> |
|||
0xB: generate a gradient test pattern starting from black on the top and bright color on the bottom<br> |
|||
0xC: generate a gradient test pattern starting from white on the left towards black on the right<br> |
|||
0xD: generate frequent vertical gadient bars white to black, from left to right<br> |
|||
0xE: generate [http://en.wikipedia.org/wiki/Black black] test pattern: the whole image is black<br> |
|||
0xF: generate [http://en.wikipedia.org/wiki/Black black] test pattern: the whole image is black<br> |
|||
|} |
|||
These test patterns can be generated when the gspca_pac7302 driver is built with CONFIG_VIDEO_ADV_DEBUG=y. First start streaming e.g. with cheese then execute "v4l2-dbg --set-register=0x72 0x01" for value 0x01. These test patterns were generated using [http://labtec.com/index.cfm/gear/details/EUR/EN,crid=30,contentid=761 Labtec Webcam 2200] hardware. |
|||
Value 0x1: generate [http://en.wikipedia.org/wiki/White white] test pattern: |
|||
[[File:pac7302_reg0x72_value0x01.jpg|border]] |
|||
Value 0x2: generate [http://en.wikipedia.org/wiki/Black black] test pattern: |
|||
[[File:pac7302_reg0x72_value0x02.jpg|border]] |
|||
Value 0x3: generate [http://en.wikipedia.org/wiki/Red red] test pattern: |
|||
[[File:pac7302_reg0x72_value0x03.jpg|border]] |
|||
Value 0x4: generate [http://en.wikipedia.org/wiki/Lime_(color) lime] test pattern: |
|||
[[File:pac7302_reg0x72_value0x04.jpg|border]] |
|||
Value 0x5: generate [http://en.wikipedia.org/wiki/Blue blue] test pattern: |
|||
[[File:pac7302_reg0x72_value0x05.jpg|border]] |
|||
Value 0x6: generate [http://en.wikipedia.org/wiki/Aqua_(color) aqua] test pattern: |
|||
[[File:pac7302_reg0x72_value0x06.jpg|border]] |
|||
Value 0x7: generate [http://en.wikipedia.org/wiki/Fuchsia_(color) fuchsia] test pattern: |
|||
[[File:pac7302_reg0x72_value0x07.jpg|border]] |
|||
Value 0x8: generate [http://en.wikipedia.org/wiki/Yellow yellow] test pattern: |
|||
[[File:pac7302_reg0x72_value0x08.jpg|border]] |
|||
Value 0x9: generate test pattern with colored horizontal and vertical bars: |
|||
[[File:pac7302_reg0x72_value0x09.jpg|border]] |
|||
Value 0xA: generate test pattern with small colored pixels all around the image: |
|||
[[File:pac7302_reg0x72_value0x0a.jpg|border]] |
|||
Value 0xB: generate a gradient test pattern starting from black on the top and bright color on the bottom: |
|||
[[File:pac7302_reg0x72_value0x0b.jpg|border]] |
|||
Value 0xC: generate a gradient test pattern starting from white on the left towards black on the right: |
|||
[[File:pac7302_reg0x72_value0x0c.jpg|border]] |
|||
Value 0xD: generate frequent vertical gadient bars white to black, from left to right: |
|||
[[File:pac7302_reg0x72_value0x0d.jpg|border]] |
|||
Value 0x13: generate [http://en.wikipedia.org/wiki/Red red] test pattern with test overlay on: |
|||
[[File:pac7302_reg0x72_value0x13.jpg|border]] |
|||
===Streaming on/off, LED control=== |
===Streaming on/off, LED control=== |
||
Line 1,421: | Line 1,548: | ||
[[Category:Hardware]] |
[[Category:Hardware]] |
||
[[Category:Chipsets]] |
|||
[[Category:USB]] |
Latest revision as of 07:01, 29 April 2012
PixArt PAC7301/PAC7302 is a System on a Chip (SoC) with multimedia sensor capabilities. The chip is supported by the gspca_pac7302 kernel module.
Overview/Features
- USB 1.1 interface
- EEPROM interface
- CMOS VGA sensor (640x480) for video and still image capturing
- Microphone input (only on PixArt PAC7302)
- Snapshot button input
- User feedback LED output
Components Used
The webcams based on the PixArt PAC7301/PAC7302 chip usually consists only of the chip and some external resistors, capacitors, button and a microphone.
Other Images
Identification
The USB Vendor ID and Product ID can be programmed. The Product ID range of 0x2620..0x262F is mentioned on the schematics in the PixArt PAC7301/PAC7302 datasheet.
The gspca_pac7302 driver supports the following devices:
USB Vendor ID | USB Device ID | Device Name | Note |
---|---|---|---|
0x06f8 | 0x3009 | Hercules Classic Link | |
0x093a | 0x2620 | Apollo AC-905 | The manual, page 11 of this device describes a software called AMCAP to set up different camera parameters in Windows. |
0x093a | 0x2621 | ||
0x093a | 0x2622 | Genius Eye 312 | FL_VFLIP |
0x093a | 0x2624 | FL_VFLIP | |
0x093a | 0x2626 | Labtec Webcam 2200 | |
0x093a | 0x2628 | Genius iLook 300 | |
0x093a | 0x2629 | Genious iSlim 300 (?)
maybe a typo? maybe related to Genius Slim series? |
FL_VFLIP |
0x093a | 0x262a | Webcam 300k | |
0x093a | 0x262c | Philips SPC 230 NC | In the User's Manual, page 12 there is a detailed picture settings panel which can adjust the different controls. |
The webcam driver may also support the following devices with only a little modification. The webcam drivers for Windows installs the pac7302.sys file. It is possible to download the driver and install it under Linux using wine. If this driver file is installed then we know that the webcam is based on the PixArt PAC7301/PAC7302. Then it is necesary to check the pac7302.inf file to find out the USB Vendor ID and USB Device ID for a specific webcam. The following table summarizes the devices identified with this method.
USB Vendor ID | USB Device ID | Device Name | Note |
---|---|---|---|
0x093a | 0x2625 | Genius iSlim 310 | Identified from the driver installed with wine-1.1.37 |
0x093a | 0x2627 | Genius FaceCam 300 | Identified from the driver installed with wine-1.0.1. See the installed windows/inf/facecam300.inf . |
The Labtec Webcam 2200 is an device which contains the PixArt PAC7302 chip. The identification of this device is as follows:
Bus 003 Device 002: ID 093a:2626 Pixart Imaging, Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x093a Pixart Imaging, Inc. idProduct 0x2626 bcdDevice 1.00 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 697 bNumInterfaces 3 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0080 1x 128 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 2 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0100 1x 256 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 3 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0180 1x 384 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 4 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 5 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0280 1x 640 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 6 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0300 1x 768 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 7 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0380 1x 896 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 8 bNumEndpoints 6 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 50 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x03ff 1x 1023 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 0 iInterface 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 39 bInCollection 1 baInterfaceNr( 0) 2 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0201 Microphone bAssocTerminal 0 bNrChannels 1 wChannelConfig 0x0000 iChannelNames 0 iTerminal 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 2 bSourceID 1 bControlSize 2 bmaControls( 0) 0x03 bmaControls( 0) 0x00 Mute Volume iFeature 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 3 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 2 iTerminal 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 3 bDelay 1 frames wFormatTag 1 PCM AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 1 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 16000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x89 EP 9 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 1 bRefresh 0 bSynchAddress 0 AudioControl Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bLockDelayUnits 0 Undefined wLockDelay 0 Undefined Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 3 bDelay 1 frames wFormatTag 1 PCM AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 1 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 48000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x89 EP 9 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0060 1x 96 bytes bInterval 1 bRefresh 0 bSynchAddress 0 AudioControl Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bLockDelayUnits 0 Undefined wLockDelay 0 Undefined Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 3 bDelay 1 frames wFormatTag 1 PCM AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 1 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 16000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x89 EP 9 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 1 bRefresh 0 bSynchAddress 0 AudioControl Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bLockDelayUnits 0 Undefined wLockDelay 0 Undefined Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 3 bDelay 1 frames wFormatTag 1 PCM AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 1 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 16000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x89 EP 9 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 1 bRefresh 0 bSynchAddress 0 AudioControl Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x00 bLockDelayUnits 0 Undefined wLockDelay 0 Undefined Device Status: 0x0000 (Bus Powered)
Making it Work
To use this device the following components are necessary:
- gspca_pac7302 kernel module
- V4L2 Userspace Library
- V4L2 capable user program (e.g. Cheese
Firmware
No firmware is necessary to use this device.
Drivers
The gspca_pac7302 driver was separated from the gspca_pac7311 with the commit 1408b8472910e894b290205b4baed5b14b8f45af. If you have a kernel version 2.6.32 or before then use gspca_pac7311 instead of gspca_pac7302.
The support for snapshot button is available since 28 Jan 2010 in one of the repositories. The patch was merged as commit aed6f1b5fe4e95cf8a9fc149e25041aa8cc7c78a to the mailine and it is included in Linux kernel starting with the stable release 2.6.37, released on 4 Jan 2011.
Sample Kernel Output
This is the kernel output when the Labtec Webcam 2200 is plugged in. You may recognise the pac7302 driver and the snd-usb-audio driver attaching themselves to the device.
# dmesg [ 2568.748414] usb 3-1: new full speed USB device using uhci_hcd and address 2 [ 2569.225907] Linux video capture interface: v2.00 [ 2569.269819] gspca: main v2.8.0 registered [ 2569.311677] gspca: probing 093a:2626 [ 2569.333006] gspca: video0 created [ 2569.334721] gspca: probing 093a:2626 [ 2569.334733] gspca: intf != 0 [ 2569.336295] gspca: probing 093a:2626 [ 2569.336306] gspca: intf != 0 [ 2569.352270] usbcore: registered new interface driver pac7302 [ 2569.352285] pac7302: registered [ 2569.654995] usbcore: registered new interface driver snd-usb-audio
Remote Control Support
Not applicable.
Programming reference
Note: this chapter is based on the Linux gspca_pac7302 driver and on trial-and error. Use information here on your risk.
The PAC7301/PAC7302 can be controlled through registers. The registers are grouped to pages of 256 registers. The registers can be written by sending an USB control message to the device. The value parameter of usb_control_msg() is always zero; the index parameter specifies the offset within a page; the data and length parameters specify the register content to be written.
The different register pages can be switched by writing the new page value to offset 255 of any page.
Register Page | Register Offset | Description | Accessed in function |
---|---|---|---|
0 | 0x00..0x0e | (unknown) | |
0 | 0x0f..0x20 | setcolors() | |
0 | 0x21..0x54 | (unknown) | |
0 | 0x55 | Image filter | |
0 | 0x56..0x6d | (unknown) | |
0 | 0x6e | Digital tilt | |
0 | 0x6f | Digital pan | |
0 | 0x70..0x71 | (unknown) | |
0 | 0x72 | Test pattern and test overlay | |
0 | 0x73..0xa1 | (unknown) | |
0 | 0xa2..0xab | setbrightcont() | |
0 | 0xac..0xc4 | (unknown) | |
0 | 0xc5 | setbrightcont() | |
0 | 0xc6 | setwhitebalance() | |
0 | 0xc7 | setbluebalance() | |
0 | 0xc8-0xdb | (unknown) | |
0 | 0xdc | setbrightcont(), setcolors() | |
0 | 0xdd-0xfe | (unknown) | |
0 | 0xff | Select register page | |
1 | 0x00..0x77 | (unknown) | |
1 | 0x78 | Start/stop streaming, LED control | |
1 | 0x79..0xfe | (unknown) | |
1 | 0xff | Select register page | |
3 | 0x00..0x01 | (unknown) | |
3 | 0x02 | Exposure | setexposure() |
3 | 0x03..0x0f | (unknown) | |
3 | 0x10 | Gain | setgain() |
3 | 0x11 | setcolors(), setgain(), setexposure(), sethvflip() | |
3 | 0x12..0x20 | (unknown) | |
3 | 0x21 | Horizontal and vertical flip | sethvflip() |
3 | 0x22..0xfe | (unknown) | |
3 | 0xff | Select register page |
Image filter
Register page, offset: 0, 0x55
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | EDGE | ? | ? |
? | ? | ? | ? | ? | w | ? | ? |
Bits | Field | Description |
---|---|---|
2 | EDGE | Activates edge detection image filter 0: Normal picture |
Digital tilt
Register page, offset: 0, 0x6e
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
TILT | |||||||
w |
Bits | Field | Description |
---|---|---|
7-0 | TILT | Digital tilt |
Digital pan
Register page, offset: 0, 0x6f
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
PAN | |||||||
w |
Bits | Field | Description |
---|---|---|
7-0 | PAN | Digital pan |
Test pattern, test overlay
Register page, offset: 0, 0x72
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | TEST_OVERLAY | TEST_PATTERN | |||
? | ? | ? | w | w |
Bits | Field | Description |
---|---|---|
4 | TEST_OVERLAY | Test overlay 0: normal operation, test overlay generation off |
3-0 | TEST_PATTERN | Test pattern generation: 0x0: normal operation, test pattern generation off |
These test patterns can be generated when the gspca_pac7302 driver is built with CONFIG_VIDEO_ADV_DEBUG=y. First start streaming e.g. with cheese then execute "v4l2-dbg --set-register=0x72 0x01" for value 0x01. These test patterns were generated using Labtec Webcam 2200 hardware.
Value 0x1: generate white test pattern:
Value 0x2: generate black test pattern:
Value 0x3: generate red test pattern:
Value 0x4: generate lime test pattern:
Value 0x5: generate blue test pattern:
Value 0x6: generate aqua test pattern:
Value 0x7: generate fuchsia test pattern:
Value 0x8: generate yellow test pattern:
Value 0x9: generate test pattern with colored horizontal and vertical bars:
Value 0xA: generate test pattern with small colored pixels all around the image:
Value 0xB: generate a gradient test pattern starting from black on the top and bright color on the bottom:
Value 0xC: generate a gradient test pattern starting from white on the left towards black on the right:
Value 0xD: generate frequent vertical gadient bars white to black, from left to right:
Value 0x13: generate red test pattern with test overlay on:
Streaming on/off, LED control
Register page, offset: 1, 0x78
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
? | nLED | ? | ? | ? | ? | ? | STREAMING |
? | w | ? | ? | ? | ? | ? | w |
Bits | Field | Description |
---|---|---|
6 | nLED | Controls the feedback LED. 0: LED active |
0 | STREAMING | Controls the video stream from the webcam. 0: steram is off |
Horizontal and vertical flip
Register page, offset: 3, 0x21
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | HFLIP | VFLIP | ? | ? |
? | ? | ? | ? | w | w | ? | ? |
Bits | Field | Description |
---|---|---|
3 | HFLIP | Activate horizontal flip of the image 0: Horizontal flip not active |
2 | VFLIP | Activate vertical flip of the image 0: Vertical flip is not active |
External Links
- PixArt PAC7301/PAC7302 datasheet (alternative link)
- PixArt Imaging Inc. -> Product Search -> PC-Cam SoC -> VGA
- Labtec Webcam 2200
- PAC7311 development blog