OTG102: Difference between revisions
mNo edit summary |
m (→Firmware) |
||
Line 167: | Line 167: | ||
I have these in my /lib/firmware folder with the device working, although I still get messages in the system log that "unable to open firmware v4l-cx23885-avcore-01.fw". |
I have these in my /lib/firmware folder with the device working, although I still get messages in the system log that "unable to open firmware v4l-cx23885-avcore-01.fw". |
||
< |
<pre> |
||
#ls -la /lib/firmware/v4l-cx2* |
#ls -la /lib/firmware/v4l-cx2* |
||
-rw-r--r-- 1 root root 16382 Jun 22 2010 /lib/firmware/v4l-cx231xx-avcore-01.fw (doesn't try to load) |
-rw-r--r-- 1 root root 16382 Jun 22 2010 /lib/firmware/v4l-cx231xx-avcore-01.fw (doesn't try to load) |
||
Line 183: | Line 183: | ||
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> |
Revision as of 20:41, 28 February 2013
The page is to describe and provide information for a device called EZgrabber2 which appears to be produced Mygica and Geniatech.
This 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 |
CX78921-11z, compatible with cx231xx linux framework |
EZGrabber | My Gica EZGrabber | ? | ? |
Capit | MyGica Capit MyGica Capit Old site Geniatech | ? | ? |
Overview/Features
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.
It has the standard USB 2.0, stereo, composite and S-video inputs.
Components Used
The single chip on the board is labeled as a CX78921-11z. This is no reference to this chip on Conexant's website nor practically any the entire internet, so likely this is just a renumbered chip for these specific vendors. However the indication that is can output compressed MPEG4 video does suggest that it is not your 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
- OTG102 front.jpg
Front side of board
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 will not, and the device doesn't function. I don't know why, go ask your dad.
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 in 3.8 on presumable 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/.
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 has hardware encoding chip supporting mpeg1/2/4, but as the 417 is apparently not working for the + reference board it is not on this one either. building the driver with this option and then loading the module + creates a second video device node, but nothing comes out of it. */ + .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), @@ -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 --- 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 distrubted though linuxtv.org and linux-firmware.git. See [1] and especially [2] for more information.
I have these in my /lib/firmware folder with the device working, although I still get messages in the system log that "unable to open firmware v4l-cx23885-avcore-01.fw".
#ls -la /lib/firmware/v4l-cx2* -rw-r--r-- 1 root root 16382 Jun 22 2010 /lib/firmware/v4l-cx231xx-avcore-01.fw (doesn't try to load) -rw-r--r-- 1 root root 16382 Feb 27 17:49 /lib/firmware/v4l-cx23885-avcore-01.fw (doesn't load) -r--r--r-- 1 root root 16382 Feb 25 22:23 /lib/firmware/v4l-cx23885-avcore-01.fw2 (alternate version, also doesn't load) -r--r--r-- 1 root root 376836 Feb 25 22:23 /lib/firmware/v4l-cx23885-enc.fw -rw-r--r-- 1 root root 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 b3704908fd058485f3ef136941b2e513 /lib/firmware/v4l-cx23885-avcore-01.fw2 1cb3c48a6684126f5e503a434f2d636b /lib/firmware/v4l-cx23885-enc.fw dadb79e9904fc8af96e8111d9cb59320 /lib/firmware/v4l-cx25840.fw