OTG102: Difference between revisions
mNo edit summary |
Vaporeon800 (talk | contribs) m (Noticed missing word) |
||
(37 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
A device called EZgrabber2 which appears to be produced by [http://www.mygica.com/old/pa/ezgrabber2.asp Mygica] and [http://www.geniatech.com/pa/ezgrabber2.asp Geniatech]. '''OTG102''' possibly stands for '''O'''ne '''T'''ouch '''G'''rabber CX23'''102''' ("One Touch Grabber" being a name previously used by Mygica/Geniatech for a device based on EM2860). |
|||
[[Image:Ezgrabber2-mygica.3.jpg|right|thumb|200px]] |
|||
[[Image:Ezgrabber2-mygica.2.jpg|right|thumb|200px]] |
|||
[[Image:EZGrabber2-mygica.1.jpg|right|thumb|200px]] |
|||
[[Image:Ezgrabber2-geniatech.jpg|right|thumb|200px]] |
|||
==Overview/Features== |
==Overview/Features== |
||
The EZGrabber2 device shares the |
The EZGrabber2 device shares the Windows drivers for the similar devices Capit and EZGrabber, so likely much of the information will be in common with those. Please clarify if you have any of these products: |
||
{| class="sortable" border="1" cellpadding="5" cellspacing="0" align="center" |
{| class="sortable" border="1" cellpadding="5" cellspacing="0" align="center" |
||
Line 15: | Line 18: | ||
! style="background:#ffdead;" | Chipset |
! style="background:#ffdead;" | Chipset |
||
|- |
|- |
||
| |
|EZGrabber2 |
||
| |
|[http://www.mygica.com/old/pa/ezgrabber2.asp Mygica] and [http://www.geniatech.com/pa/ezgrabber2.asp Geniatech] |
||
| |
|1f4d:0102 |
||
0572:58a3 (not verified, see [http://linuxtv.org/wiki/index.php/OTG102#Geniatech below]) |
|||
0572:58a3 |
|||
| |
|CX78921-11z, compatible with cx231xx Linux framework |
||
|- |
|- |
||
|EZGrabber |
|EZGrabber |
||
| |
|[http://www.mygica.com/old/pa/ezgrabber.asp My Gica EZGrabber] |
||
|? |
|? |
||
|? |
|? |
||
|- |
|- |
||
|Capit |
|Capit |
||
| |
|[http://www.mygica.com/product.asp?id=134 MyGica Capit] [http://www.mygica.com/old/pa/capit.asp MyGica Capit Old site] [http://www.geniatech.com/pa/capit.asp Geniatech] |
||
|? |
|? |
||
|? |
|? |
||
|- |
|||
|August VGB100 |
|||
|[http://www.augustint.com/en/productmsg-1-124.html August International] |
|||
|[http://www.linux-hardware-guide.com/2013-10-03-august-vgb100-usb-2-0-audio-and-video-grabber 1f4d:0102] |
|||
|? |
|||
|- |
|||
|} |
|} |
||
Supposedly supports output of compressed MPEG1/2/4 stream(on windows). On linux, using a patched cx231xx driver, it is at least possible to get uncompressed YUV4:2:2 video and 48000Hz stereo through the corresponding alsa device. |
|||
Supposedly supports output of compressed MPEG-1/2/4 streams (on Windows). On Linux, using a patched cx231xx driver, it is at least possible to get uncompressed YUV4:2:2 video and 48000Hz stereo through the corresponding alsa device. |
|||
It has the standard USB 2.0, stereo, composite and S-video inputs. |
|||
It has the standard USB 2.0 interface with stereo, composite video and S-Video inputs. |
|||
==Components Used== |
==Components Used== |
||
The single chip on the board is labeled as |
The single chip on the board is labeled as CX78921-11z. There is no reference to this chip on Conexant's website nor practically the entire internet, so likely this is just a renumbered chip for these specific vendors. However the indication that it can output compressed MPEG-4 video does suggest that it is not a standard [[Conexant CX2310x|cx23100/1/2]]. |
||
However examining the Windows drivers provided by the vendors, they refer to the device Polaris.CVBS or POLARIS.OTG102, and contain many of the same driver files as other devices containing the cx23100/1/2 chips . |
|||
However examining the Windows drivers provided by the vendors, they refer to the device Polaris.CVBS or POLARIS.OTG102, and contain many of the same driver files as other devices containing the cx23100/1/2 chips . |
|||
==Images== |
==Images== |
||
{| |
|||
<gallery> |
|||
| [[image:OTG102_front.JPG|thumb|400px|Front side of board]] |
|||
| [[image:OTG102_back.jpg|thumb|300px|Back side of board]] |
|||
| [[image:OTG102_-_1_-_front.JPG|thumb|300px|Front: Mygica EZGrabber2 (top) & Diamond VC500]] |
|||
</gallery> |
|||
| [[image:OTG102_-_2_-_back.jpg|thumb|300px|Back: Mygica EZGrabber2 (top) & Diamond VC500]] |
|||
*until I have permission to upload the images to this site, they are posted on google sites, click the links beside the description. |
|||
|} |
|||
==Making it |
==Making it Work== |
||
We need to add the device definition and some related details to the cx231xx driver and have installed the appropriate firmware (see below). Also we need to have built and load the kernel modules for cx25840 and cx231xx before plugging in the device (#modprobe cx25840;modprobe cx231cc). If I don't do this, the cx231xx module will autoload on detecting the device, but the cx25840 module will not autoload, and the device doesn't function. I don't know why, go ask your dad. |
|||
A patch for this device has been accepted into to the 3.10 kernel. So it should be supported in kernel 3.10 and later. |
|||
For earlier kernels, we need to add the device definition and some related details to the cx231xx driver and have installed the appropriate firmware (see below). Once the module is built and installed, the cx231xx module should autoload on detecting the device. If not, it can be manually loaded (#modprobe cx231xx). |
|||
When/if the hardware encoding is ever functioning, the cx25840 module seems to be also needed, however it wouldn't autoload in my experimentation. Thus load the kernel modules for cx25840 and cx231xx before plugging in the device (#modprobe cx25840;modprobe cx231xx). If I don't do this, the cx231xx module will autoload on detecting the device, but the cx25840 module will not autoload, and the device doesn't function at all. Doing this and using the below patch but with the ''.had_417=1'' uncommented, two video device nodes are created, /dev/video0 and /dev/video1. video0 would be for compressed video, but nothing comes out of it. video1 becomes the uncompressed video output. Without the ''.has_417=1'' defined in the driver, only /dev/video0 is created and is the uncompressed video. |
|||
The following is a patch against a kernel source 3.6. It should be fairly applicable to sources from 2.6.32 on through 3.7, with the possible note of the device number in cx2311.h. Note that in 3.8 and presumably onwards, the structure of the drivers/media/ directory has been changed and no longer is there a drivers/media/video directory, but rather the video drivers are regrouped by interface (usb, pci), so the cx231xx drivers are under drivers/media/usb/cx231xx while the related and also needed driver for the cx25840 is under drivers/media/pci/. |
The following is a patch against a kernel source 3.6. It should be fairly applicable to sources from 2.6.32 on through 3.7, with the possible note of the device number in cx2311.h. Note that in 3.8 and presumably onwards, the structure of the drivers/media/ directory has been changed and no longer is there a drivers/media/video directory, but rather the video drivers are regrouped by interface (usb, pci), so the cx231xx drivers are under drivers/media/usb/cx231xx while the related and also needed driver for the cx25840 is under drivers/media/pci/. |
||
There has also been a lot of recent (early 2013) patches submitted to [https://patchwork.kernel.org/project/linux-media/list/?q=cx231xx&state=*&order=-date patchwork.kernel.org/project/linux-media] that require some subsequent modifications for a 3.8 or 3.9 based kernel. |
|||
===Kernel Patch=== |
===Kernel Patch=== |
||
I'll also post a downloadable patch once I have permission to upload to this site. Until then, and for posterity, the text is below. |
|||
<pre> |
<pre> |
||
diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx-avcore.c linux-3.6.new/drivers/media/video/cx231xx/cx231xx-avcore.c |
diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx-avcore.c linux-3.6.new/drivers/media/video/cx231xx/cx231xx-avcore.c |
||
Line 98: | Line 114: | ||
+ .external_av = 1, |
+ .external_av = 1, |
||
+ .dont_use_port_3 = 1, |
+ .dont_use_port_3 = 1, |
||
+ |
+ /*.has_417 = 1, */ |
||
+ /* This board is believed to have a hardware encoding chip |
|||
+ /* this board has hardware encoding chip supporting mpeg1/2/4, but as the 417 is apparently not working for the |
|||
+ * supporting mpeg1/2/4, but as the 417 is apparently not |
|||
+ reference board it is not on this one either. building the driver with this option and then loading the module |
|||
+ * working for the reference board it is not here either. */ |
|||
+ creates a second video device node, but nothing comes out of it. */ |
|||
+ |
|||
+ .input = {{ |
+ .input = {{ |
||
+ .type = CX231XX_VMUX_COMPOSITE1, |
+ .type = CX231XX_VMUX_COMPOSITE1, |
||
Line 129: | Line 146: | ||
.driver_info = CX231XX_BOARD_CNXT_RDE_250}, |
.driver_info = CX231XX_BOARD_CNXT_RDE_250}, |
||
{USB_DEVICE(0x0572, 0x58A0), |
{USB_DEVICE(0x0572, 0x58A0), |
||
@@ -904,6 +937,12 @@ static int cx231xx_init_dev(struct cx231 |
|||
cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); |
|||
cx231xx_set_alt_setting(dev, INDEX_VANC, 1); |
|||
} |
|||
+/* |
|||
+ if (dev->model == CX231XX_OTG102) { |
|||
+ cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); |
|||
+ cx231xx_set_alt_setting(dev, INDEX_VANC, 1); |
|||
+ } |
|||
+*/ |
|||
/* Cx231xx pre card setup */ |
|||
cx231xx_pre_card_setup(dev); |
|||
@@ -1295,6 +1334,12 @@ static int cx231xx_usb_probe(struct usb_ |
|||
cx231xx_enable_OSC(dev); |
|||
cx231xx_reset_out(dev); |
|||
cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); |
|||
+ } |
|||
+ |
|||
+ if (dev->model == CX231XX_BOARD_OTG102) { |
|||
+ cx231xx_enable_OSC(dev); |
|||
+ cx231xx_reset_out(dev); |
|||
+ cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); |
|||
} |
|||
if (dev->model == CX231XX_BOARD_CNXT_RDE_253S) |
|||
diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx.h linux-3.6.new/drivers/media/video/cx231xx/cx231xx.h |
diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx.h linux-3.6.new/drivers/media/video/cx231xx/cx231xx.h |
||
--- linux-3.6/drivers/media/video/cx231xx/cx231xx.h 2012-09-30 17:47:46.000000000 -0600 |
--- linux-3.6/drivers/media/video/cx231xx/cx231xx.h 2012-09-30 17:47:46.000000000 -0600 |
||
Line 169: | Line 161: | ||
===Firmware=== |
===Firmware=== |
||
Like for many similar devices of various chipsets, a firmware image or images are required that the driver uploads to the device. These are often closed source binary blobs under unclear license as far as their redistributeability. To further complicate matters, there are various versions of these firmwares with the same name that are not (always) cross-compatible. To complicate matters even further, there is apparently a mix-up one of the firmware files |
Like for many similar devices of various chipsets, a firmware image or images are required that the driver uploads to the device. These are often closed source binary blobs under unclear license as far as their redistributeability. To further complicate matters, there are various versions of these firmwares with the same name that are not (always) cross-compatible. To complicate matters even further, there is apparently a mix-up one of the firmware files distrusted though [http://linuxtv.org/downloads/firmware/#3 linuxtv.org] and [http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git linux-firmware.git]. See [http://www.mail-archive.com/linux-media@vger.kernel.org/msg58908.html] and especially [http://www.mail-archive.com/linux-media@vger.kernel.org/msg58916.html] for more information. |
||
I have these in my /lib/firmware folder |
I have these in my /lib/firmware folder. These came from [http://www.steventoth.net/linux/hvr1800/]. The Geniatech driver also contains a firmware image called cx416enc.rom which is very similar to the v4l-cx23885-enc.fw file (which is a renamed hcw85enc.rom from the HVR1800 driver). |
||
<pre> |
<pre> |
||
16382 Jun 22 2010 /lib/firmware/v4l-cx231xx-avcore-01.fw |
16382 Jun 22 2010 /lib/firmware/v4l-cx231xx-avcore-01.fw (loads, but driver still works even without) |
||
16382 Feb 27 17:49 /lib/firmware/v4l-cx23885-avcore-01.fw ( |
16382 Feb 27 17:49 /lib/firmware/v4l-cx23885-avcore-01.fw (not needed here?) |
||
376836 Feb 25 22:23 /lib/firmware/v4l-cx23885-enc.fw (not needed here?) |
|||
376836 Feb 25 22:23 /lib/firmware/v4l-cx23885-enc.fw |
|||
16382 Jun 22 2010 /lib/firmware/v4l-cx25840.fw |
16382 Jun 22 2010 /lib/firmware/v4l-cx25840.fw |
||
Line 186: | Line 177: | ||
a9f8f5d901a7fb42f552e1ee6384f3bb /lib/firmware/v4l-cx231xx-avcore-01.fw |
a9f8f5d901a7fb42f552e1ee6384f3bb /lib/firmware/v4l-cx231xx-avcore-01.fw |
||
a9f8f5d901a7fb42f552e1ee6384f3bb /lib/firmware/v4l-cx23885-avcore-01.fw |
a9f8f5d901a7fb42f552e1ee6384f3bb /lib/firmware/v4l-cx23885-avcore-01.fw |
||
b3704908fd058485f3ef136941b2e513 /lib/firmware/v4l-cx23885-avcore-01.fw2 |
|||
1cb3c48a6684126f5e503a434f2d636b /lib/firmware/v4l-cx23885-enc.fw |
1cb3c48a6684126f5e503a434f2d636b /lib/firmware/v4l-cx23885-enc.fw |
||
dadb79e9904fc8af96e8111d9cb59320 /lib/firmware/v4l-cx25840.fw |
dadb79e9904fc8af96e8111d9cb59320 /lib/firmware/v4l-cx25840.fw |
||
</pre> |
</pre> |
||
==Usage== |
|||
==Notes about the Windows drivers== |
|||
I purchased an EZGrabber2 from [http://www.meritline.com/mygica-ezgrabber-2-usb-2-0-video-capture---p-41210.aspx Meritline] early February 2013. It was the MyGica variant although the product page links to the Geniatech driver and software. |
|||
===Live Viewing=== |
|||
MyGica provides drivers at [http://www.mygica.com/down-eng/videocapture/ezgrabber2driver.zip ezgrabber2driver.zip] and [http://www.mygica.com/down-eng/videocapture/otg103driver.zip otg103driver.zip (for the Capit)] , both are the exact same file. |
|||
*mplayer tv:// -tv driver=v4l2:device=/dev/video0:normid=0:alsa:adevice=hw.1:forceaudio:volume=80 |
|||
*mplayer tv:// -tv driver=v4l2:device=/dev/video0:norm=NTSC:alsa:adevice=hw.1:forceaudio:volume=80:immediatemode=0:width=720 |
|||
===Encoding=== |
|||
*with mencoder, x264 video, mp3 audio, mp4 container (eg for computer viewing) |
|||
**mencoder tv:// -tv driver=v4l2:device=/dev/video0:norm=NTSC:alsa:adevice=hw.1:forceaudio:volume=80:immediatemode=0 -oac lavc -lavcopts acodec=libmp3lame:abitrate=192 -srate 48000 -ovc x264 -x264encopts global_header:nr=200:threads=auto:frameref=4:subq=4:8x8dct:crf=25:trellis=1:keyint=1000:keyint_min=10:bframes=16:b-adapt=1:b_pyramid=normal -of lavf -lavfopts format=mp4 -o test.mp4 |
|||
*with mencoder, mpeg2 video, ac3audio, mpeg2 container (eg for dvd transfer) |
|||
Geniatech lists a single driver for the EzGrabber/EzGrabber2/Capit products, [http://www.geniatech.com/down-eng/videocapture/ezgrabber2driver.zip ezgrabber2driver.zip]. |
|||
**mencoder tv:// -tv driver=v4l2:device=/dev/video0:norm=NTSC:alsa:adevice=hw.1:forceaudio:volume=80:immediatemode=0:width=640 -of mpeg -mpegopts format=dvd:vaspect=4/3:vframerate=30 -ofps 30000/1001 -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:keyint=18:vbitrate=9000:vrc_maxrate=9800:acodec=ac3:abitrate=192:aspect=4/3 -o test.mpg |
|||
*some possibly useful video filters see [http://mplayerhq.hu/DOCS/man/en/mplayer.1.html#VIDEO%20FILTERS mplayer man page] for more |
|||
**-vf crop=w:h:x:y,scale=-2:480,expand=704:480 |
|||
***crop video to specified width:height at position x:y, to remove fuzzy edges or unwanted parts of image, then ''scale'' to SD height of 480 and ''expand'' to SD 4/3 width of 704 (puts black bars on side of image, but maybe helpful for DVD player compatibility) |
|||
**-vf pp=ci,hqdn3d |
|||
***deinterlace with cubic interpolation, apply high quality denoise3d |
|||
===Problems with audio=== |
|||
If mplayer etc. reports that the audio device is busy "error opening audio: Device or resource busy" and you are using pulseaudio, disable pulseaudio's control of the device, eg in pavucontrol (Pulse Audio Volume Control) under configuration, set the Cx231xx Audio device to be off. This will allow other programs to access the resource through the alsa device. |
|||
===Problems with Interference=== |
|||
Probably not specific to this board, but as a general note: I was initially getting frequent green lines (of about 1 line thickness) that ran across the image once every 0.5 to 3 seconds. I attributed this to some interference on the video feed, however changing cables did not help. I was especially stumped once the same pattern of interference occurred on the s-video input. Then I moved the device to a rear USB port on the motherboard instead of the front which it had been placed on. That solved the problem. Apparently the cable running from the motherboard header to the front USB ports on case was the source of interference, and it was on the USB output side rather than the video input. |
|||
==Notes About the Windows Drivers== |
|||
An EZGrabber2 purchased from [http://www.meritline.com/mygica-ezgrabber-2-usb-2-0-video-capture---p-41210.aspx Meritline] early February 2013 was the MyGica variant although the product page links to the Geniatech driver and software. |
|||
MyGica provides drivers at [http://www.mygica.com/down-eng/videocapture/ezgrabber2driver.zip ezgrabber2driver.zip] and [http://www.mygica.com/down-eng/videocapture/otg103driver.zip otg103driver.zip (for the Capit)] -- both are the exact same file. |
|||
Geniatech lists a single driver for the EzGrabber/EzGrabber2/Capit products: [http://www.geniatech.com/down-eng/videocapture/ezgrabber2driver.zip ezgrabber2driver.zip]. |
|||
Line 253: | Line 268: | ||
</pre> |
</pre> |
||
It is also worth noting that the Geniatech ezgrabber2driver.zip file contains both |
It is also worth noting that the Geniatech ezgrabber2driver.zip file contains both Windows and Linux directories. It was due to this that I originally purchased this device hoping they had included some support for Linux, and they do provide Linux drivers for some of their other products. However, it appears to be a mistake. The only modification of drivers in the tree I can find are some alternate definitions for au0828 cards, specifically defining 05e1:0400 and 1f4d:6011 as AU0828_BOARD_HAUPPAUGE_WOODBURY. |
||
==Other notes== |
==Other notes== |
||
===Diamond VC500=== |
|||
In [https://www.google.com/search?q=otg102+vc500 some places] it is noted that some versions of the Diamond VC500 EZgrabber are also identified as OTG102, a cursory web search suggests this has a TM5600/6000 chipset and the windows drivers provided by diamond appear totally different. |
|||
The version of this device sold in 2013 identifies itself to Windows as OTG102 and uses the same device ID and driver as the EZGrabber2. |
|||
A previous version from 2008 with device ID 07de:2820 [http://www.spinics.net/lists/vfl/msg38614.html apparently] used a TM5600 ADC. This version shared drivers with a hybrid ATSC USB tuner called [http://www.diamondmm.com/hdtv110-diamond-xtremetv-hdtv-110-hybrid-tv-tuner-usb.html HDTV110] with device ID 07de:0001 (which was outwardly identical to Diamond's TVW750U except for the different model number silkscreened on, but completely different internally). |
|||
Diamond Multimedia makes little effort to differentiate the two VC500 versions on their website, but does separate them on their [http://www.diamondmm.com/vc500.html Drivers page]: '''VER 1''' (2010-05-19 driver) and '''VC500 CXT Version''' (2013-01-25 driver). |
|||
[http://www.nikingstore.com/shop/one-touch-grabber-usb2-0-video-capture-adapter-755.html One website] sells a device labelled One Touch Grabber which they claim is the OEM version of the VC500 made by the same factory. The plastic shell matches Diamond's product. |
|||
===lsusb ouput=== |
===lsusb ouput=== |
||
Line 601: | Line 623: | ||
===dmesg output=== |
===dmesg output=== |
||
<pre> |
|||
(load modules) |
|||
[12648.151975] i2c-core: driver [cx25840] registered |
|||
[12653.604826] usbcore: registered new interface driver cx231xx |
|||
... |
|||
(plug in device) |
|||
... |
|||
[44269.470642] usb 1-10: new high-speed USB device number 6 using ehci_hcd |
|||
[44269.588530] cx231xx #0: New device Geniatech OTG102 @ 480 Mbps (1f4d:0102) with 5 interfaces |
|||
[44269.588534] cx231xx #0: registering interface 1 |
|||
[44269.588700] cx231xx #0: Identified as Geniatech OTG102 (card=16) |
|||
[44269.588906] i2c-dev: adapter [cx231xx #0] registered as minor 9 |
|||
[44269.588922] i2c i2c-9: adapter [cx231xx #0] registered |
|||
[44269.588987] i2c-dev: adapter [cx231xx #0] registered as minor 10 |
|||
[44269.589000] i2c i2c-10: adapter [cx231xx #0] registered |
|||
[44269.589059] i2c-dev: adapter [cx231xx #0] registered as minor 11 |
|||
[44269.589071] i2c i2c-11: adapter [cx231xx #0] registered |
|||
[44269.652071] cx231xx #0: cx231xx_dif_set_standard: setStandard to ffffffff |
|||
[44269.661396] i2c 9-0044: uevent |
|||
[44269.661413] cx25840 9-0044: probe |
|||
[44269.662686] cx25840 9-0044: cx23102 A/V decoder found @ 0x88 (cx231xx #0) |
|||
[44269.670801] i2c i2c-9: client [cx25840] registered with bus id 9-0044 |
|||
[44269.680705] cx25840 9-0044: Firmware download size changed to 16 bytes max length |
|||
[44271.728514] cx25840 9-0044: loaded v4l-cx231xx-avcore-01.fw firmware (16382 bytes) |
|||
[44271.762699] cx231xx #0: cx231xx #0: v4l2 driver version 0.0.2 |
|||
[44271.780277] cx231xx #0: cx231xx_dif_set_standard: setStandard to ffffffff |
|||
[44271.825192] cx231xx #0: video_mux : 0 |
|||
[44271.825194] cx231xx #0: do_mode_ctrl_overrides : 0xb000 |
|||
[44271.825936] cx231xx #0: do_mode_ctrl_overrides NTSC |
|||
[44271.832517] cx231xx #0: cx231xx #0/0: registered device video0 [v4l2] |
|||
[44271.832587] cx231xx #0: cx231xx #0/0: registered device vbi0 |
|||
[44271.832589] cx231xx #0: V4L2 device registered as video0 and vbi0 |
|||
[44271.832593] cx231xx #0: EndPoint Addr 0x84, Alternate settings: 5 |
|||
[44271.832595] cx231xx #0: Alternate setting 0, max size= 512 |
|||
[44271.832597] cx231xx #0: Alternate setting 1, max size= 184 |
|||
[44271.832599] cx231xx #0: Alternate setting 2, max size= 728 |
|||
[44271.832601] cx231xx #0: Alternate setting 3, max size= 2892 |
|||
[44271.832603] cx231xx #0: Alternate setting 4, max size= 1800 |
|||
[44271.832605] cx231xx #0: EndPoint Addr 0x85, Alternate settings: 2 |
|||
[44271.832608] cx231xx #0: Alternate setting 0, max size= 512 |
|||
[44271.832610] cx231xx #0: Alternate setting 1, max size= 512 |
|||
[44271.832612] cx231xx #0: EndPoint Addr 0x86, Alternate settings: 2 |
|||
[44271.832614] cx231xx #0: Alternate setting 0, max size= 512 |
|||
[44271.832616] cx231xx #0: Alternate setting 1, max size= 576 |
|||
[44272.257701] cx231xx #0: cx231xx-audio.c: probing for cx231xx non standard usbaudio |
|||
[44272.258497] cx231xx #0: EndPoint Addr 0x83, Alternate settings: 3 |
|||
[44272.258502] cx231xx #0: Alternate setting 0, max size= 512 |
|||
[44272.258505] cx231xx #0: Alternate setting 1, max size= 28 |
|||
[44272.258507] cx231xx #0: Alternate setting 2, max size= 52 |
|||
[44272.258509] cx231xx: Cx231xx Audio Extension initialized |
|||
[44272.263730] cx25840 9-0044: uevent |
|||
[44272.263891] cx25840 9-0044: uevent |
|||
[44272.264295] cx25840 9-0044: uevent |
|||
[44272.272518] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 |
|||
[44272.273408] cx231xx #0: setPowerMode::mode = 48, No Change req. |
|||
[44272.274797] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 |
|||
</pre> |
|||
.... |
.... |
||
[[Category:USB]] [[Category:Analog USB Devices]] |
[[Category:USB]] [[Category:Analog USB Devices]] |
Latest revision as of 12:52, 12 April 2021
A device called EZgrabber2 which appears to be produced by Mygica and Geniatech. OTG102 possibly stands for One Touch Grabber CX23102 ("One Touch Grabber" being a name previously used by Mygica/Geniatech for a device based on EM2860).
Overview/Features
The EZGrabber2 device shares the Windows drivers for the similar devices Capit and EZGrabber, so likely much of the information will be in common with those. Please clarify if you have any of these products:
Device | Product url(s) | USB ID | Chipset |
---|---|---|---|
EZGrabber2 | Mygica and Geniatech | 1f4d:0102
0572:58a3 (not verified, see below) |
CX78921-11z, compatible with cx231xx Linux framework |
EZGrabber | My Gica EZGrabber | ? | ? |
Capit | MyGica Capit MyGica Capit Old site Geniatech | ? | ? |
August VGB100 | August International | 1f4d:0102 | ? |
Supposedly supports output of compressed MPEG-1/2/4 streams (on Windows). On Linux, using a patched cx231xx driver, it is at least possible to get uncompressed YUV4:2:2 video and 48000Hz stereo through the corresponding alsa device.
It has the standard USB 2.0 interface with stereo, composite video and S-Video inputs.
Components Used
The single chip on the board is labeled as CX78921-11z. There is no reference to this chip on Conexant's website nor practically the entire internet, so likely this is just a renumbered chip for these specific vendors. However the indication that it can output compressed MPEG-4 video does suggest that it is not a standard cx23100/1/2.
However examining the Windows drivers provided by the vendors, they refer to the device Polaris.CVBS or POLARIS.OTG102, and contain many of the same driver files as other devices containing the cx23100/1/2 chips .
Images
Making it Work
A patch for this device has been accepted into to the 3.10 kernel. So it should be supported in kernel 3.10 and later.
For earlier kernels, we need to add the device definition and some related details to the cx231xx driver and have installed the appropriate firmware (see below). Once the module is built and installed, the cx231xx module should autoload on detecting the device. If not, it can be manually loaded (#modprobe cx231xx).
When/if the hardware encoding is ever functioning, the cx25840 module seems to be also needed, however it wouldn't autoload in my experimentation. Thus load the kernel modules for cx25840 and cx231xx before plugging in the device (#modprobe cx25840;modprobe cx231xx). If I don't do this, the cx231xx module will autoload on detecting the device, but the cx25840 module will not autoload, and the device doesn't function at all. Doing this and using the below patch but with the .had_417=1 uncommented, two video device nodes are created, /dev/video0 and /dev/video1. video0 would be for compressed video, but nothing comes out of it. video1 becomes the uncompressed video output. Without the .has_417=1 defined in the driver, only /dev/video0 is created and is the uncompressed video.
The following is a patch against a kernel source 3.6. It should be fairly applicable to sources from 2.6.32 on through 3.7, with the possible note of the device number in cx2311.h. Note that in 3.8 and presumably onwards, the structure of the drivers/media/ directory has been changed and no longer is there a drivers/media/video directory, but rather the video drivers are regrouped by interface (usb, pci), so the cx231xx drivers are under drivers/media/usb/cx231xx while the related and also needed driver for the cx25840 is under drivers/media/pci/.
There has also been a lot of recent (early 2013) patches submitted to patchwork.kernel.org/project/linux-media that require some subsequent modifications for a 3.8 or 3.9 based kernel.
Kernel Patch
diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx-avcore.c linux-3.6.new/drivers/media/video/cx231xx/cx231xx-avcore.c --- linux-3.6/drivers/media/video/cx231xx/cx231xx-avcore.c 2012-09-30 17:47:46.000000000 -0600 +++ linux-3.6.new/drivers/media/video/cx231xx/cx231xx-avcore.c 2013-02-26 19:58:51.096793077 -0700 @@ -352,6 +352,7 @@ int cx231xx_afe_update_power_control(str case CX231XX_BOARD_CNXT_RDE_253S: case CX231XX_BOARD_CNXT_RDU_253S: case CX231XX_BOARD_CNXT_VIDEO_GRABBER: + case CX231XX_BOARD_OTG102: case CX231XX_BOARD_HAUPPAUGE_EXETER: case CX231XX_BOARD_HAUPPAUGE_USBLIVE2: case CX231XX_BOARD_PV_PLAYTV_USB_HYBRID: @@ -1719,6 +1720,7 @@ int cx231xx_dif_set_standard(struct cx23 case CX231XX_BOARD_CNXT_SHELBY: case CX231XX_BOARD_CNXT_RDU_250: case CX231XX_BOARD_CNXT_VIDEO_GRABBER: + case CX231XX_BOARD_OTG102: case CX231XX_BOARD_HAUPPAUGE_EXETER: func_mode = 0x03; break; diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx-cards.c linux-3.6.new/drivers/media/video/cx231xx/cx231xx-cards.c --- linux-3.6/drivers/media/video/cx231xx/cx231xx-cards.c 2012-09-30 17:47:46.000000000 -0600 +++ linux-3.6.new/drivers/media/video/cx231xx/cx231xx-cards.c 2013-02-28 12:23:58.925869674 -0700 @@ -280,6 +280,37 @@ struct cx231xx_board cx231xx_boards[] = } }, }, + [CX231XX_BOARD_OTG102] = { + .name = "Geniatech OTG102", + .tuner_type = TUNER_ABSENT, + .decoder = CX231XX_AVDECODER, + .output_mode = OUT_MODE_VIP11, + .ctl_pin_status_mask = 0xFFFFFFC4, + .agc_analog_digital_select_gpio = 0x0c, /* According with PV CxPlrCAP.inf file */ + .gpio_pin_status_mask = 0x4001000, + .norm = V4L2_STD_NTSC, + .no_alt_vanc = 1, + .external_av = 1, + .dont_use_port_3 = 1, + /*.has_417 = 1, */ + /* This board is believed to have a hardware encoding chip + * supporting mpeg1/2/4, but as the 417 is apparently not + * working for the reference board it is not here either. */ + + .input = {{ + .type = CX231XX_VMUX_COMPOSITE1, + .vmux = CX231XX_VIN_2_1, + .amux = CX231XX_AMUX_LINE_IN, + .gpio = NULL, + }, { + .type = CX231XX_VMUX_SVIDEO, + .vmux = CX231XX_VIN_1_1 | + (CX231XX_VIN_1_2 << 8) | + CX25840_SVIDEO_ON, + .amux = CX231XX_AMUX_LINE_IN, + .gpio = NULL, + } + }, + }, [CX231XX_BOARD_CNXT_RDE_250] = { .name = "Conexant Hybrid TV - rde 250", .tuner_type = TUNER_XC5000, @@ -620,6 +651,8 @@ struct usb_device_id cx231xx_id_table[] .driver_info = CX231XX_BOARD_CNXT_RDU_253S}, {USB_DEVICE(0x0572, 0x58A6), .driver_info = CX231XX_BOARD_CNXT_VIDEO_GRABBER}, + {USB_DEVICE(0x1F4D, 0x0102), + .driver_info = CX231XX_BOARD_OTG102}, {USB_DEVICE(0x0572, 0x589E), .driver_info = CX231XX_BOARD_CNXT_RDE_250}, {USB_DEVICE(0x0572, 0x58A0), diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx.h linux-3.6.new/drivers/media/video/cx231xx/cx231xx.h --- linux-3.6/drivers/media/video/cx231xx/cx231xx.h 2012-09-30 17:47:46.000000000 -0600 +++ linux-3.6.new/drivers/media/video/cx231xx/cx231xx.h 2013-02-26 16:01:58.924653199 -0700 @@ -68,6 +68,7 @@ #define CX231XX_BOARD_ICONBIT_U100 13 #define CX231XX_BOARD_HAUPPAUGE_USB2_FM_PAL 14 #define CX231XX_BOARD_HAUPPAUGE_USB2_FM_NTSC 15 +#define CX231XX_BOARD_OTG102 16 /* Limits minimum and default number of buffers */ #define CX231XX_MIN_BUF 4
Firmware
Like for many similar devices of various chipsets, a firmware image or images are required that the driver uploads to the device. These are often closed source binary blobs under unclear license as far as their redistributeability. To further complicate matters, there are various versions of these firmwares with the same name that are not (always) cross-compatible. To complicate matters even further, there is apparently a mix-up one of the firmware files distrusted though linuxtv.org and linux-firmware.git. See [1] and especially [2] for more information.
I have these in my /lib/firmware folder. These came from [3]. The Geniatech driver also contains a firmware image called cx416enc.rom which is very similar to the v4l-cx23885-enc.fw file (which is a renamed hcw85enc.rom from the HVR1800 driver).
16382 Jun 22 2010 /lib/firmware/v4l-cx231xx-avcore-01.fw (loads, but driver still works even without) 16382 Feb 27 17:49 /lib/firmware/v4l-cx23885-avcore-01.fw (not needed here?) 376836 Feb 25 22:23 /lib/firmware/v4l-cx23885-enc.fw (not needed here?) 16382 Jun 22 2010 /lib/firmware/v4l-cx25840.fw #md5sum /lib/firmware/v4l-cx2* a9f8f5d901a7fb42f552e1ee6384f3bb /lib/firmware/v4l-cx231xx-avcore-01.fw a9f8f5d901a7fb42f552e1ee6384f3bb /lib/firmware/v4l-cx23885-avcore-01.fw 1cb3c48a6684126f5e503a434f2d636b /lib/firmware/v4l-cx23885-enc.fw dadb79e9904fc8af96e8111d9cb59320 /lib/firmware/v4l-cx25840.fw
Usage
Live Viewing
- mplayer tv:// -tv driver=v4l2:device=/dev/video0:normid=0:alsa:adevice=hw.1:forceaudio:volume=80
- mplayer tv:// -tv driver=v4l2:device=/dev/video0:norm=NTSC:alsa:adevice=hw.1:forceaudio:volume=80:immediatemode=0:width=720
Encoding
- with mencoder, x264 video, mp3 audio, mp4 container (eg for computer viewing)
- mencoder tv:// -tv driver=v4l2:device=/dev/video0:norm=NTSC:alsa:adevice=hw.1:forceaudio:volume=80:immediatemode=0 -oac lavc -lavcopts acodec=libmp3lame:abitrate=192 -srate 48000 -ovc x264 -x264encopts global_header:nr=200:threads=auto:frameref=4:subq=4:8x8dct:crf=25:trellis=1:keyint=1000:keyint_min=10:bframes=16:b-adapt=1:b_pyramid=normal -of lavf -lavfopts format=mp4 -o test.mp4
- with mencoder, mpeg2 video, ac3audio, mpeg2 container (eg for dvd transfer)
- mencoder tv:// -tv driver=v4l2:device=/dev/video0:norm=NTSC:alsa:adevice=hw.1:forceaudio:volume=80:immediatemode=0:width=640 -of mpeg -mpegopts format=dvd:vaspect=4/3:vframerate=30 -ofps 30000/1001 -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:keyint=18:vbitrate=9000:vrc_maxrate=9800:acodec=ac3:abitrate=192:aspect=4/3 -o test.mpg
- some possibly useful video filters see mplayer man page for more
- -vf crop=w:h:x:y,scale=-2:480,expand=704:480
- crop video to specified width:height at position x:y, to remove fuzzy edges or unwanted parts of image, then scale to SD height of 480 and expand to SD 4/3 width of 704 (puts black bars on side of image, but maybe helpful for DVD player compatibility)
- -vf pp=ci,hqdn3d
- deinterlace with cubic interpolation, apply high quality denoise3d
- -vf crop=w:h:x:y,scale=-2:480,expand=704:480
Problems with audio
If mplayer etc. reports that the audio device is busy "error opening audio: Device or resource busy" and you are using pulseaudio, disable pulseaudio's control of the device, eg in pavucontrol (Pulse Audio Volume Control) under configuration, set the Cx231xx Audio device to be off. This will allow other programs to access the resource through the alsa device.
Problems with Interference
Probably not specific to this board, but as a general note: I was initially getting frequent green lines (of about 1 line thickness) that ran across the image once every 0.5 to 3 seconds. I attributed this to some interference on the video feed, however changing cables did not help. I was especially stumped once the same pattern of interference occurred on the s-video input. Then I moved the device to a rear USB port on the motherboard instead of the front which it had been placed on. That solved the problem. Apparently the cable running from the motherboard header to the front USB ports on case was the source of interference, and it was on the USB output side rather than the video input.
Notes About the Windows Drivers
An EZGrabber2 purchased from Meritline early February 2013 was the MyGica variant although the product page links to the Geniatech driver and software.
MyGica provides drivers at ezgrabber2driver.zip and otg103driver.zip (for the Capit) -- both are the exact same file.
Geniatech lists a single driver for the EzGrabber/EzGrabber2/Capit products: ezgrabber2driver.zip.
MyGica
The install .inf file from the MyGica driver is called CxPlrCap.inf and contains the following device definitions:
[Maxytech] %CXPOLARIS_NAME.OTG102% =POLARIS.OTG102, USB\VID_1F4D&PID_0102&MI_01 %CXPOLARIS_NAME.U237% =POLARIS.U237, USB\VID_1F4D&PID_0237&MI_01 %CXPOLARIS_NAME.OTG102CIR% =POLARIS.CIR, USB\VID_1F4D&PID_0102&MI_00
The driver directory contains the following files:
23678 Oct 28 2009 CxPlrCap.inf 187776 Jan 6 2010 CxPlrCap.sys 29184 Sep 8 2009 CxPolaris.ax 18432 Sep 8 2009 cpnotify.ax 10154 Jan 7 2010 cxplrcap.cat 24576 Sep 8 2009 cxtvrate.dll 336 Sep 24 2009 maxcir.bin 8404 Jan 7 2010 maxcir.cat 1440 Sep 17 2009 maxcir.inf 32256 Oct 9 2009 maxcir.sys 16382 Jan 20 2009 merlinD.bin 28672 Sep 8 2009 y8cnvt.ax
Geniatech
The install .inf file from the Geniatech driver is called CxCVBS.inf and contains the following device definitions:
[Conexant.NTx86] %CXPOLARIS.DeviceDesc-CVBS%=POLARIS.CVBS, USB\VID_1F4D&PID_0102&MI_01 %CXPOLARIS.DeviceDesc-CVBS%=POLARIS.CVBS, USB\VID_0572&PID_58A3&MI_01 %CXPOLARIS.DeviceDesc-VGrabber%=POLARIS.VGrabber, USB\VID_0572&PID_58A6&MI_01 %CXPOLARIS.DeviceDesc-EZCap%=POLARIS.EZCap, USB\VID_0572&PID_58A7&MI_01
The driver directory contains the following files:
18432 Oct 23 16:12 CPNotify.ax 31704 Oct 23 16:11 CxCVBS.inf 195712 Oct 23 16:13 CxCVBS.sys 3449 Oct 23 17:36 CxUnCir.inf 47104 Oct 23 16:12 EncPrxyPage.ax 2944000 Sep 7 15:31 Setup.exe 33792 Oct 23 16:12 Y8Cnvt.ax 376836 Jul 18 2012 cx416enc.rom 15360 Oct 23 16:12 cxEZCAP.ax 47104 Oct 23 16:12 cxTVRate.dll 11407 Oct 23 16:13 cxcvbs.cat 30720 Oct 23 16:12 cxpolaris.ax 8578 Oct 23 17:36 cxuncir.cat 16382 Jul 18 2012 merlinD.rom
It is also worth noting that the Geniatech ezgrabber2driver.zip file contains both Windows and Linux directories. It was due to this that I originally purchased this device hoping they had included some support for Linux, and they do provide Linux drivers for some of their other products. However, it appears to be a mistake. The only modification of drivers in the tree I can find are some alternate definitions for au0828 cards, specifically defining 05e1:0400 and 1f4d:6011 as AU0828_BOARD_HAUPPAUGE_WOODBURY.
Other notes
Diamond VC500
The version of this device sold in 2013 identifies itself to Windows as OTG102 and uses the same device ID and driver as the EZGrabber2.
A previous version from 2008 with device ID 07de:2820 apparently used a TM5600 ADC. This version shared drivers with a hybrid ATSC USB tuner called HDTV110 with device ID 07de:0001 (which was outwardly identical to Diamond's TVW750U except for the different model number silkscreened on, but completely different internally).
Diamond Multimedia makes little effort to differentiate the two VC500 versions on their website, but does separate them on their Drivers page: VER 1 (2010-05-19 driver) and VC500 CXT Version (2013-01-25 driver).
One website sells a device labelled One Touch Grabber which they claim is the OEM version of the VC500 made by the same factory. The plastic shell matches Diamond's product.
lsusb ouput
lsusb -v -d 1f4d: Bus 001 Device 006: ID 1f4d:0102 G-Tek Electronics Group Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x1f4d G-Tek Electronics Group idProduct 0x0102 bcdDevice 40.01 iManufacturer 1 Geniatech iProduct 2 OTG102 iSerial 3 20090427 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 248 bNumInterfaces 6 bConfigurationValue 1 iConfiguration 4 OTG102 bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 32 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8e EP 14 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x0e EP 14 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0020 1x 32 bytes bInterval 4 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 1 bInterfaceCount 5 bFunctionClass 255 Vendor Specific Class bFunctionSubClass 255 Vendor Specific Subclass bFunctionProtocol 255 Vendor Specific Protocol iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 7 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8f EP 15 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 7 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 20 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 21 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x001c 1x 28 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 22 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0034 1x 52 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 23 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 24 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x00b8 1x 184 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 25 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x02d8 1x 728 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 26 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x13c4 3x 964 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 27 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0b84 2x 900 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 28 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 31 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x05 EP 5 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 29 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 30 OTG102 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0240 1x 576 bytes bInterval 1 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered)
dmesg output
(load modules) [12648.151975] i2c-core: driver [cx25840] registered [12653.604826] usbcore: registered new interface driver cx231xx ... (plug in device) ... [44269.470642] usb 1-10: new high-speed USB device number 6 using ehci_hcd [44269.588530] cx231xx #0: New device Geniatech OTG102 @ 480 Mbps (1f4d:0102) with 5 interfaces [44269.588534] cx231xx #0: registering interface 1 [44269.588700] cx231xx #0: Identified as Geniatech OTG102 (card=16) [44269.588906] i2c-dev: adapter [cx231xx #0] registered as minor 9 [44269.588922] i2c i2c-9: adapter [cx231xx #0] registered [44269.588987] i2c-dev: adapter [cx231xx #0] registered as minor 10 [44269.589000] i2c i2c-10: adapter [cx231xx #0] registered [44269.589059] i2c-dev: adapter [cx231xx #0] registered as minor 11 [44269.589071] i2c i2c-11: adapter [cx231xx #0] registered [44269.652071] cx231xx #0: cx231xx_dif_set_standard: setStandard to ffffffff [44269.661396] i2c 9-0044: uevent [44269.661413] cx25840 9-0044: probe [44269.662686] cx25840 9-0044: cx23102 A/V decoder found @ 0x88 (cx231xx #0) [44269.670801] i2c i2c-9: client [cx25840] registered with bus id 9-0044 [44269.680705] cx25840 9-0044: Firmware download size changed to 16 bytes max length [44271.728514] cx25840 9-0044: loaded v4l-cx231xx-avcore-01.fw firmware (16382 bytes) [44271.762699] cx231xx #0: cx231xx #0: v4l2 driver version 0.0.2 [44271.780277] cx231xx #0: cx231xx_dif_set_standard: setStandard to ffffffff [44271.825192] cx231xx #0: video_mux : 0 [44271.825194] cx231xx #0: do_mode_ctrl_overrides : 0xb000 [44271.825936] cx231xx #0: do_mode_ctrl_overrides NTSC [44271.832517] cx231xx #0: cx231xx #0/0: registered device video0 [v4l2] [44271.832587] cx231xx #0: cx231xx #0/0: registered device vbi0 [44271.832589] cx231xx #0: V4L2 device registered as video0 and vbi0 [44271.832593] cx231xx #0: EndPoint Addr 0x84, Alternate settings: 5 [44271.832595] cx231xx #0: Alternate setting 0, max size= 512 [44271.832597] cx231xx #0: Alternate setting 1, max size= 184 [44271.832599] cx231xx #0: Alternate setting 2, max size= 728 [44271.832601] cx231xx #0: Alternate setting 3, max size= 2892 [44271.832603] cx231xx #0: Alternate setting 4, max size= 1800 [44271.832605] cx231xx #0: EndPoint Addr 0x85, Alternate settings: 2 [44271.832608] cx231xx #0: Alternate setting 0, max size= 512 [44271.832610] cx231xx #0: Alternate setting 1, max size= 512 [44271.832612] cx231xx #0: EndPoint Addr 0x86, Alternate settings: 2 [44271.832614] cx231xx #0: Alternate setting 0, max size= 512 [44271.832616] cx231xx #0: Alternate setting 1, max size= 576 [44272.257701] cx231xx #0: cx231xx-audio.c: probing for cx231xx non standard usbaudio [44272.258497] cx231xx #0: EndPoint Addr 0x83, Alternate settings: 3 [44272.258502] cx231xx #0: Alternate setting 0, max size= 512 [44272.258505] cx231xx #0: Alternate setting 1, max size= 28 [44272.258507] cx231xx #0: Alternate setting 2, max size= 52 [44272.258509] cx231xx: Cx231xx Audio Extension initialized [44272.263730] cx25840 9-0044: uevent [44272.263891] cx25840 9-0044: uevent [44272.264295] cx25840 9-0044: uevent [44272.272518] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [44272.273408] cx231xx #0: setPowerMode::mode = 48, No Change req. [44272.274797] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8
....