Archived:Development: USB based video drivers

From LinuxTVWiki
Jump to navigation Jump to search

USB Video

see Em2820 for more information about how to write an usb video driver

What we need from you to get your USB Device work

Requested Devices

Device Status
Genius TVGO u202 video/audio works (720x288 non interlaced half frames, Audio USB Audio) - no tuning yet
ALI Corp 1.3M Pixel USB 2.0 Bad quality video yet
uli-m9205 Driver is in development, quality will be good
Aiptek USB DualCam
Hauppauge WinTV USB 2.0 -- AUDIO!
SIIG AVTuner Pro with guidance, I might be able to get it working. Note that lsusb reports an em2821 but the em28xx driver doesn't recognize it.
MSI Mega Sky 580 Both versions are supported. (0db0:5580/1 Micro Star International)
Club3D ZapTV-240M ? (10fd:1513 Anubis Electronics, Ltd) Also known as MSI Digi Vox Mini II
ADS DVDxpressDX2 ? (06e1:0709 ADS Technologies, Inc)
ADS VideoMPX USB



SSIG AVTuner Pro -- send an email to the v4l mailinglist or to a v4l developer, we can't help you unless we have any contact data.

Best thing would be to donate(prefered of course for the work :) or send your device to a developer for a few weeks

Working Devices

Device Status
Pinnacle PCTV USB 2.0 supported (Need support for PAL-M) /* please follow the description on this site and mail the parsed output to mrechberger@gmail.com */
Terratec Cinergy 250 USB 2.0 supported
MSI Vox USB 2.0 supported (res. <= 640x480)
Hauppauge WinTV USB 2.0 supported, included in Linux kernel 2.6.18

Hercules smart TV USB 2.0 supported

Requirements

this site explains how to get empiatech devices or similar running with linux by applying changes which might only work with your device.

USBView output

Usbview.png


We also need the linux usbview output of your device


Get usbsnoop for windows

The latest supported version is 1.8 you'll find it at the bottom of that website not ontop of it

  • WinXP/Win2K

http://benoit.papillault.free.fr/usbsnoop/

http://benoit.papillault.free.fr/stats/get.php?location=../usbsnoop/sniff-bin-1.8.zip

if the link is down, you can also ask in IRC

  • UPDATE*

there's a new version available for Vista:

Set up usbsnoop and start sniffing

attach the sniffer to your device and start logging:

Sniffer06.png

Finally start up your TV application again, everything will slow down after it's started but it's worth doing it that way hardware analyzers cost a few thousand dollars... please sniff about 200 - 300 MB! it will be easier for analyzing.

I wrote ta parser for converting the usbsnoop logfile to a human readable format you can find it in my repository (http://linuxtv.org/hg/~mrechberger/v4l-dvb) the file is called parser.pl the output of that file can be used with usbreplay

Log2Bin

there's a small script in my repository (http://linuxtv.org/hg/~mrechberger/v4l-dvb) called log2bin.pl. It is capable of parsing the usbsnoop.log logfile and extract the isoc data and print it in a binary format. I used it for analyzing a sniffed windows usbaudio stream.

Usage (for example): perl log2bin.pl < usbsnoop.log | aplay --format=S16_LE --rate=9600

(you might have to change the endpoint address in the perl script to get it work like that):

perl log2bin.pl < usbsnoop.log | mplayer -rawvideo on:yuy2:w=352:h=264 -

try various width and height values, you might also have to adjust the format (yuy2 in that case)

USB replay

usb replay is a small tool for replaying (reverse engineering) sniffed and prepared logfiles to a USB device. It's a simple to use ncurses frontend which shows up all prepared usb messages and lets you select whatever you want to replay. Note the source isn't clean, didn't spend too much time uppon this yet I'll do this by time when I'm bored unless you like to fix up the not freed buffers for me :)


Copyright (C) 2006 Markus Rechberger <mrechberger@gmail.com>

Installation:

hg clone http://linuxtv.org/hg/~mrechberger/v4l-dvb
cd v4l_experimental/em2880 # please also have a look at README there
gcc usbreplay.c -o usbreplay -lusb -lmenu
  • sniff a usbdevice in windows with usbsnoop
  • parse the logfile with parser.pl (perl parser.pl < usbsnoop.log > analyzed.log)
  • run usbreplay as root or privileged user who has access to usbfs (usbreplay analyzed.log)
  • select your desired usb device

Usbreplay setup.jpg

  • start replaying usb data to the usb device, just select a line and press return, or press space this replays the current line and jumps to the next one

Usbreplay mainwin.jpg


Link Device Contact


Markus Rechberger/irc mrec