Re: Support for Empia 2980 video/audio capture chip set

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 02, 2014 at 06:54:41PM +0100, Frank Schäfer wrote:
> 
> Am 27.02.2014 02:47, schrieb Keith Lawson:
> > On Mon, Feb 24, 2014 at 06:38:59PM +0100, Frank Schäfer wrote:
> >> Am 06.02.2014 13:57, schrieb Keith Lawson:
> >>> On Mon, Jan 20, 2014 at 09:08:25PM +0100, Frank Schäfer wrote:
> >>>> On 17.01.2014 01:11, Keith Lawson wrote:
> >>>>> On Wed, Jan 15, 2014 at 10:37:44PM +0100, Frank Schäfer wrote:
> >>>>>> Am 14.01.2014 01:48, schrieb Keith Lawson:
> >>>>>>> On 2014-01-12 11:56, Frank Schäfer wrote:
> >>>>>>>
> >>>>>>>> On 09.01.2014 02:02, Keith Lawson wrote:
> >>>>>>>>
> >>>>>>>>> Hello, I sent the following message to the linux-usb mailing list
> >>>>>>>>> and they suggested I try here. I'm trying to get a "Dazzle Video
> >>>>>>>>> Capture USB V1.0" video capture card working on a Linux device but
> >>>>>>>>> it doesn't
> >>>>>>>>> look like the chip set is supported yet. I believe this card is the
> >>>>>>>>> next version of the Pinnacle VC100 capture card that worked with the
> >>>>>>>>> em28xx kernel module. The hardware vendor that sold the card says that
> >>>>>>>>> this device has an Empia 2980 chip set in it so I'm inquiring about
> >>>>>>>>> support for that chip set. I'm just wondering about the best
> >>>>>>>>> approach for getting the new chip supported in the kernel. Is this
> >>>>>>>>> something the
> >>>>>>>>> em28xx maintainers would naturally address in time or can I assist
> >>>>>>>>> in getting this into the kernel? Here's dmesg from the Debian box
> >>>>>>>>> I'm working on: [ 3198.920619] usb 3-1: new high-speed USB device
> >>>>>>>>> number 5
> >>>>>>>>> usingxhci_hcd [ 3198.939394] usb 3-1: New USB device found,
> >>>>>>>>> idVendor=1b80,idProduct=e60a [ 3198.939399] usb 3-1: New USB device
> >>>>>>>>> strings: Mfr=0, Product=1,SerialNumber=2 [ 3198.939403] usb 3-1:
> >>>>>>>>> Product: Dazzle
> >>>>>>>>> Video Capture USB Audio Device [ 3198.939405] usb 3-1: SerialNumber:
> >>>>>>>>> 0 l440:~$ uname -a Linux l440 3.10-3-amd64 #1 SMP Debian 3.10.11-1
> >>>>>>>>> (2013-09-10) x86_64 GNU/Linux If this isn't the appropriate list to ask
> >>>>>>>>> this question please point me in the right direction. Thanks, Keith
> >>>>>>>> The em28xx is indeed the dedicated driver for this device, but it's hard
> >>>>>>>> to say how much work would be necessary to add support for it.
> >>>>>>>> We currently don't support any em29xx chip yet, but in theory it is just
> >>>>>>>> an extended em28xx device.
> >>>>>>>> Whatever that means when it comes to the low level stuff... ;)
> >>>>>>>>
> >>>>>>> What's the best route to get support for this chip added then? Should
> >>>>>>> I start working on a patch myself or will this just happen during the
> >>>>>>> course of development of the em28xx module? I'm a developer but
> >>>>>>> haven't done any kernel hacking so this would likely be a steep
> >>>>>>> learning curve for me.
> >>>>>> Can you create USB-Traces of the Windows driver and send us the output
> >>>>>> of "lsusb -v -d 1b80:e60a" for this device ?
> >>>>>> That will give us a hint how much work will be needed.
> >>>>> For the USB-trace will the Win7 logman output do or is there a Win7 64-bit utility like usbsnoop I should use?
> >>>> AFAIK the logman output doesn't contain any transferred data.
> >>>> SniffUSB would be preferred, but AFAIK it doesn't work with Win 7.
> >>>> You may also want to try USBPcap (http://desowin.org/usbpcap/), but
> >>>> I don't know if it runs on the 64bit version of Win 7.
> >>>> There are also various commercial USB-Sniffers and some of them are
> >>>> providing a free trial period/version.
> >>>> In any case we need a readable (text) sniffing output.
> >>> Thanks for the pointer. I used USBPcap and exported text out of wireshark. 
> >>>
> >>> Here's the capture of connecting the device: 
> >>>
> >>> https://www.libertas-tech.com/dazzle_usb_connect.txt
> >>>
> >>> Here's a capture of the device recording a 1 minute video. This one is almost 700 meg so you probably don't want to try and open it in a browser: 
> >>>
> >>> https://www.libertas-tech.com/dazzle_recording_video.txt 
> >>>
> >>> I can arrange to get one of these devices in the hands of a developer if that would help too. 
> >> Sorry for the delay, I'm currently burried under lots other stuff...
> > No worries. I know that feeling all too well. 
> >
> >> I haven't finished evaluating these logs yet, but so far I can say that
> >> there's a lot of known stuff but also much new/unknown stuff.
> >> Which capturing settings (resolution, video format, ...) did you use for
> >> these logs ?
> > Someone else did the capture for me since I didn't have a Windows box it would work on. He had it connected to a video camera but didn't have an audio connection so there's no sound.
> >
> > Here's the settings from the Pinnical software.
> >
> > The properties of the video are:
> >
> > Codec                   IPB MPEG-2 MP@ML 4:2:0
> > Bitrate                  8000 kBit/s
> > Duration              00:00:05.10
> > Color Depth        16 Bit
> > Frame Aspect    4:3
> > Alpha                    No
> > Dimensions        720 x 480 px
> > Pixel Aspect       0.89
> > Framestart          0
> > Frames                 29.97 FPS
> > Interlacing           Top Field First
> 
> Hmm... looking at the logs, I would have expected 720x240 + YUV422...
> 
> 
> > The properties of the audio are:
> > Codec                   MP2
> > Bitrate                  224kBit/s
> > Duration              00:00:5.17
> > Sample Rate       48 kHz
> > Channels             Stereo
> > Resolution          16 Bit
> > Sample Type      Stereo
> > Format                 PCM
> >
> > When I click on 'Import' there aren't a tone of settings:
> >
> > Dazzle Video Capture is set to 'Video Composite', 4:3, and NTSC
> >
> > Mode is set to 'Scene detection ON'
> >
> >
> >> Does the device consist of any other chips (AC97, demodulator, ...) ?
> >>
> > Not that I see. There's a couple smaller chips on the device. I uploaded pictures here: 
> >
> > https://www.libertas-tech.com//dazzle1.jpg
> > https://www.libertas-tech.com//dazzle2.jpg
> 
> Ok, thanks, I suspected that. :/
> It seems like the em298x has a built-in demodulator (and likely also an
> audio codec).
> I can see lots of reads/writes to a "special" address in the log.
> 
> 
> Ok, here is a summary of what needs to be done to support this device
> and what is already more or less in place:
> 
> Should work out of the box or can be made work with minor changes:
> 1.) chip type detection (can be added easily with a small patch)
> 2.) eeprom access
> 3.) i2c bus access
> 4.) capturing configuration and start/stop (bridge part)
> 5.) frame processing (seems to be at least very similar to the one used
> by the other em27xx/em28xx, I can see the same header type)
> 6.) audio part
> 
> ToDo:
> 1.) figure out the meaning of the USB endpoints and extend the current
> logic to handle them properly
> 2.) add support for the built-in demodulator (an access routine is easy
> to add, but the registers meaning/setup is completely unknown)
> 3.) figure out the meaning of some new/unknown bridge registers (0x2e,
> 0x38, 0x44, 0x4f, 0xb0-0xb8), xclk (reg 0x0f) is set to an unknown frequency
> 
> 1.) and 3.) could probably be achieved with a good piece of reverse
> engineering work and some dirty hacks.
> But 2.) is hardly possible without the datasheet of the em298x. :(
> 
> Any chance to get access to the datasheet ? :-)

Thanks for the detailed explanation. My client is following up with their hardware vendor to see if they can get a copy of the data sheet and I emailed the hardware manufacturer myself. We'll see if we get a response. 

> 
> Regards,
> Frank
> 
> 
> >> Regards,
> >> Frank
> >>
> >>>>> Here's the lsusb output:
> >>>> ...
> >>>>
> >>>>>     Interface Descriptor:
> >>>>>       bLength                 9
> >>>>>       bDescriptorType         4
> >>>>>       bInterfaceNumber        0
> >>>>>       bAlternateSetting       7
> >>>>>       bNumEndpoints           4
> >>>>>       bInterfaceClass       255 Vendor Specific Class
> >>>>>       bInterfaceSubClass      0
> >>>>>       bInterfaceProtocol    255
> >>>>>       iInterface              0
> >>>>>       Endpoint Descriptor:
> >>>>>         bLength                 7
> >>>>>         bDescriptorType         5
> >>>>>         bEndpointAddress     0x81  EP 1 IN
> >>>>>         bmAttributes            3
> >>>>>           Transfer Type            Interrupt
> >>>>>           Synch Type               None
> >>>>>           Usage Type               Data
> >>>>>         wMaxPacketSize     0x0001  1x 1 bytes
> >>>>>         bInterval              11
> >>>>>       Endpoint Descriptor:
> >>>>>         bLength                 7
> >>>>>         bDescriptorType         5
> >>>>>         bEndpointAddress     0x82  EP 2 IN
> >>>>>         bmAttributes            1
> >>>>>           Transfer Type            Isochronous
> >>>>>           Synch Type               None
> >>>>>           Usage Type               Data
> >>>>>         wMaxPacketSize     0x1400  3x 1024 bytes
> >>>>>         bInterval               1
> >>>>>       Endpoint Descriptor:
> >>>>>         bLength                 7
> >>>>>         bDescriptorType         5
> >>>>>         bEndpointAddress     0x84  EP 4 IN
> >>>>>         bmAttributes            1
> >>>>>           Transfer Type            Isochronous
> >>>>>           Synch Type               None
> >>>>>           Usage Type               Data
> >>>>>         wMaxPacketSize     0x03ac  1x 940 bytes
> >>>>>         bInterval               1
> >>>>>       Endpoint Descriptor:
> >>>>>         bLength                 7
> >>>>>         bDescriptorType         5
> >>>>>         bEndpointAddress     0x8a  EP 10 IN
> >>>>>         bmAttributes            2
> >>>>>           Transfer Type            Bulk
> >>>>>           Synch Type               None
> >>>>>           Usage Type               Data
> >>>>>         wMaxPacketSize     0x0200  1x 512 bytes
> >>>>>         bInterval               0
> >>>> This endpoint configuration is different from the Empia devices
> >>>> we've seen so far.
> >>>> We have never seen any devices using endpoint address 0x8a and
> >>>> endpoint 0x84 looks strange.
> >>>> It's hard to say what they are used for.
> >>>> The current em28xx driver will assume 0x84 is used for DVB, but that
> >>>> makes no sense for this device.
> >>>>
> >>>> Regards,
> >>>> Frank
> >>>> --
> >>>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> >>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
> >>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> >> the body of a message to majordomo@xxxxxxxxxxxxxxx
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux